Ледяные лабиринты были одной из моих любимых игр Покемонов с момента их дебюта в Pokémon Gold и Silver. Ваша задача будет сделать программу, которая решает эти типы проблем.
Ледяные лабиринты в основном состоят, как следует из названия, изо льда. Как только игрок движется в направлении на льду, он будет продолжать двигаться в этом направлении, пока не столкнется с каким-либо препятствием. Существует также почва, которая может свободно перемещаться и остановит любого игрока, движущегося по ней. Последнее препятствие - камень. Камень не может занимать то же пространство, что и игрок, и если игрок попытается войти в него, он остановится, прежде чем сможет.
Вы получите двумерный контейнер значений, такой как список списков или строку, разделенную новыми строками, содержащую 3 различных значения для каждого из 3 типов напольных покрытий (Ice, Soil и Stone). Вы также получите две пары (или другие эквивалентные два контейнера значений), которые указывают начальную и целевую координаты в лабиринте. Это может быть ноль или один индекс.
Вы должны вывести список ходов (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