Крижані лабіринти були однією з моїх улюблених штампів ігор Покемонів з моменту дебюту в Pokémon Gold та Silver. Вашим завданням буде скласти програму, яка вирішує такі типи проблем.
Крижані лабіринти складаються, головним чином, з льоду. Як тільки гравець рухається в напрямку льоду, він продовжуватиме рухатися в тому напрямку, поки не зіткнеться з деякою перешкодою. Є також ґрунт, який можна вільно переміщувати, і він зупинить будь-якого гравця, що рухається по ньому. Остання перешкода - камінь. Стоун не може займати те саме місце, що і гравець, і якщо гравець намагається просунутися в нього, він перестане рухатися раніше, ніж зможе.
Ви отримаєте двовимірний контейнер значень, наприклад список списків або рядок, розділену новими рядками, що містить 3 різних значення для кожного з 3 типів підлоги (Лід, Грунт та Камінь). Ви також отримаєте дві пари (або інші еквівалентні контейнери з двома значеннями), які вказують на координату початку та мети в лабіринті. Вони можуть бути нульовими або індексованими.
Ви повинні вивести список ходів (4 різних значення з біекцією на N, E, S, W), які призвели до того, що гравець прийде до кінця, коли він буде виконаний.
Вхід завжди матиме замкнутий периметр каменю навколо лабіринту, тому вам не доведеться турбуватися про гравця, який виходить з лабіринту
Це код-гольф, тому виграє найменше байтів
Випробування
Тут .
буде представляти лід, ~
буде представляти грунт, і O
буде представляти камінь. Координати - 1 індексовано. Кожна літера у розчині представляє напрямок, що починається з цієї літери (наприклад, N
= Північ)
Вхідні дані
OOOOO
OO.OO
O...O
OOOOO
Start : 3,3
End : 3,2
Вихідні дані
N
Вхідні дані
OOOOOOOOOOOOOOOOO
O........O.....OO
O...O..........OO
O.........O....OO
O.O............OO
OO.......O.....OO
O.............OOO
O......O.......~O
O..O...........~O
O.............OOO
O.......O......OO
O.....O...O....OO
O..............OO
OOOOOOOOOOOOOO~~O
OOOOOOOOOOOOOOOOO
Start : 15,12
End : 16,8
Вихідні дані
N,W,N,E,N,E,S,W,N,W,S,E,S,E,N,E,N
Вхідні дані
OOOOOOOOOOOOOOOO
O~~~~~OOOOO~~~~O
O~~O~OOOOOOO~~OO
O...O..........O
O........O.....O
O..............O
OO.............O
O.............OO
O....~....O....O
O..............O
O..............O
OOOOOOOOOOOOOOOO
Start : 2,2
End : 14,3
Вихідні дані
E,S,S,W,N,E,N
Вхідні дані
OOOOOOOOOOOOOOOOOOO
O~~~~~~~OOOOOOOOOOO
O~~~~...OOOOOOOOOOO
OO~O~..OOOOOOOOOOOO
O..OO.............O
O..............O..O
O....O............O
O.O............~..O
O........OOOO.....O
O.......OOOOO.....O
O.......O~~~O.....O
O.......~~~~~.....O
O.......~~~~~.....O
O..........O......O
O..O..~...........O
O...............O.O
O.....O...........O
O.................O
OOOOOOOOOOOOOOOOOOO
Start : 2,2
End : 11,11
Вихідні дані
E,E,E,E,E,S,S,E,N,W,S,E,N,N,N