о нет! Немо, наша маленькая рыба-клоун потерялась в океане 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
будет видно марлин? (прокладывая путь от русских в марлине к немо)