Алфіс, королівський вчений підпілля, закінчив прототип нового головоломки. Однак вона, схоже, не може знайти когось, хто бажає перевірити це.
Правила її головоломки такі:
Мета полягає в тому, щоб дістатися до правого боку, починаючи від самої центральної плитки з лівого боку. Для головоломок з парними висотами почніть з нижньої частини двох плиток. (Приклади. У нульовому індексованому масиві 4x4 початковою позицією було б [2,0] - рядок 2, стовпець 0. У нульовому індексованому масиві 5х5 початкове положення було б [2,0] - рядок 2, стовпець 0.)
Кожна кольорова плитка має свою "садистську" функцію:
- Рожеві та зелені плитки (представлені як "P" і "G") нічого не роблять
- Червона та жовта плитка ("R", "Y") непрохідна.
- Помаранчева плитка ("O") робить програвача запахом, як апельсини
- Фіолетові плитки ("U") примушують гравця до наступної плитки в напрямку, до якого вони стикаються, і змушують їх пахнути лимонами
- Синя плитка ("В") є прохідною до тих пір, поки гравець не пахне апельсинами.
Щоб уточнити механіку аромату, запах гравця буде зберігатися нескінченно або до тих пір, поки не перекриє плитку різного запаху, тобто якщо гравець наступить на помаранчеву плитку, він буде пахнути апельсинами, поки не наступить на фіолетову плитку.
Крім того, жовта плитка, розміщена вертикально або горизонтально, що прилягає до синьої плитки, також призведе до того, що синя плитка стане непрохідною.
Ваше завдання - написати програму або функцію, яка приймає двовимірний масив символів (або 1D рядковий масив, або якийсь інший правильний формат), що представляє макет головоломки як вхідний і виводить як оригінальну головоломку, так і розв’язану головоломку, зірочками чи деякими інший символ, що показує правильний шлях. Припустимо, що задана головоломка вирішується.
Використовуйте цю головоломку як приклад:
BGYBG
PGPBG
PUBPB
OUGYB
PPOPP
Ваша програма виводить:
BGYBG
PGPBG
PUBPB
OUGYB
PPOPP
BGYBG
PGPBG
*****
OUGYB
PPOPP
Будь-яка використовувана головоломка повинна бути створена за допомогою цього .
Діють стандартні правила гольф-коду. Найкращі відповіді будуть найкоротшими для кожної мови. Відповіді повинні містити мову, кількість байтів та три тестові справи. Перші два можуть бути будь-яким макетом, який ви обрали, але третій повинен бути:
RRRR
RPPR
PUOR
RPBP