О ні! Немо, наша маленька риба-клоун загинула в цьому океані ASCII, і його тато Марлін намагається його знайти.
Ваше завдання - безпечно дістати Марліна до Немо. Але будьте обережні, у нас годувальний шалений Брюс на свободі, тому краще уникайте його будь-якою ціною!
Деталі
Вам надається прямокутна океанічна сітка ASCII, що містить лише малі алфавіти a-z. Цей океан матиме nemo, marlinа bruceвсередині нього у вигляді суцільного полиомино, завжди починаючи від самої верхньої клітини в першій колоні поліоміно. Так, наприклад, з усіх можливих тетроміносів, валідні з них наведені у фрагменті нижче
Але такі форми як недійсні і не будуть присутні у введенні:
omen
ne
mo
nem
o
o
m
en
nem
o
n
eo
m
Нарешті, ваше завдання - знайти шлях від marlinплитки polyomino до плитки nemopolyomino, переконавшись, що будь-яка клітина на вашому шляху не прилягає до 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)