О ні! Немо, наша маленька риба-клоун загинула в цьому океані ASCII, і його тато Марлін намагається його знайти.
Ваше завдання - безпечно дістати Марліна до Немо. Але будьте обережні, у нас годувальний шалений Брюс на свободі, тому краще уникайте його будь-якою ціною!
Деталі
Вам надається прямокутна океанічна сітка ASCII, що містить лише малі алфавіти a-z
. Цей океан матиме nemo
, marlin
а bruce
всередині нього у вигляді суцільного полиомино, завжди починаючи від самої верхньої клітини в першій колоні поліоміно. Так, наприклад, з усіх можливих тетроміносів, валідні з них наведені у фрагменті нижче
Але такі форми як недійсні і не будуть присутні у введенні:
omen
ne
mo
nem
o
o
m
en
nem
o
n
eo
m
Нарешті, ваше завдання - знайти шлях від marlin
плитки polyomino до плитки nemo
polyomino, переконавшись, що будь-яка клітина на вашому шляху не прилягає до bruce
плитки polyomino. Вихід повинен замінити всі алфавіти, які не входять до складу marlin
плитки, nemo
плитки та шляху, що з'єднує їх обидва символи з діапазону ASCII для друку (включаючи пробіл), окрім малих літер a-z
.
Приклад
Якщо вхідний океан такий:
oxknvvolacycxg
xmliuzsxpdzkpw
warukpyhcldlgu
tucpzymenmoyhk
qnvtbsalyfrlyn
cicjrucejhiaeb
bzqfnfwqtrzqbp
ywvjanjdtzcoyh
xsjeyemojwtyhi
mcefvugvqabqtt
oihfadeihvzakk
pjuicqduvnwscv
(3 поліомінос:
...n..........
.mli..........
.ar...........
..............
....b.........
....ruce......
..............
.....n........
.....emo......
..............
..............
..............
)
Тоді дійсне рішення може виглядати так:
...n..........
.mli..........
.ar...........
.u............
.n............
.i............
.z............
.wvjan........
.....emo......
..............
..............
..............
Нижче фрагмент містить ще кілька прикладів:
Примітки
- Сітка завжди буде ідеальним прямокутником і буде містити тільки один Полімін плитки
nemo
,marlin
іbruce
. - Ваш шлях не повинен проходити через
bruce
будь-яку з 4 сусідніх (вгору, вниз, вліво та вправо) комірок будь-якої комірки вbruce
плитці. - Завжди гарантується, що буде щонайменше один дійсний шлях від
marlin
доnemo
. - Тут немає вимоги найкоротшого шляху, тож підемо!
- Незважаючи на те, що вам не потрібно знайти найкоротший шлях, жодна комірка на шляху (шлях, що не включає marlin або nemo), не може сусідати з більш ніж двома іншими клітинками шляху.
- Шлях не повинен проходити через плитки
marlin
чиnemo
плитки, оскільки це потім заплутає рибок у виборі напрямку. - Як завжди, ви можете написати програму або функцію, взявши введення через STDIN (або найближчий еквівалент), аргумент командного рядка або параметр функції та виробляючи вихід через STDOUT (або найближчий еквівалент), значення повернення або функцію (out).
- Якщо багаторядковий ввід неможливий, ви можете припустити, що сітку приєднав
|
символ замість\n
. Ви також можете приймати дані як масив рядків сітки.
Це кодовий гольф, тому найкоротший запис у байтах виграє.
k
вищезазначенеl
в marlin? (пройшовши шлях від n в marlin to nemo)