Los laberintos de hielo han sido uno de mis productos favoritos de los juegos Pokémon desde su debut en Pokémon Oro y Plata. Su tarea será hacer un programa que resuelva este tipo de problemas.
Los laberintos de hielo consisten principalmente, como su nombre lo indica, en hielo. Una vez que el jugador se mueve en una dirección sobre hielo, continuará moviéndose en esa dirección hasta que choque con algún obstáculo. También hay tierra que se puede mover libremente y evitará que cualquier jugador se mueva sobre ella. El último obstáculo es la piedra. La piedra no puede ocupar el mismo espacio que el jugador y si el jugador intenta moverse hacia ella, dejará de moverse antes de que pueda.
Recibirá un contenedor bidimensional de valores, como una lista de listas o una cadena separada por nuevas líneas, que contiene 3 valores distintos para cada uno de los 3 tipos de pisos (Hielo, Suelo y Piedra). También recibirá dos pares (u otros contenedores de dos valores equivalentes) que indican una coordenada de inicio y meta en el laberinto. Estos pueden ser cero o uno indexado.
Debe generar una lista de movimientos (4 valores distintos con una biyección en N, E, S, W) que causarían que el jugador llegue al final cuando se lleva a cabo.
La entrada siempre tendrá un perímetro cerrado de piedra alrededor del laberinto para que no tenga que preocuparse de que el jugador salga del laberinto.
Este es el código de golf, por lo que gana la menor cantidad de bytes
Casos de prueba
Aquí .
representará el hielo, ~
representará el suelo y O
representará una piedra. Las coordenadas son 1 indexadas. Cada letra en la solución representa la dirección que comienza con esa letra (por ejemplo, N
Norte)
Entrada
OOOOO
OO.OO
O...O
OOOOO
Start : 3,3
End : 3,2
Salida
N
Entrada
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
Salida
N,W,N,E,N,E,S,W,N,W,S,E,S,E,N,E,N
Entrada
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
Salida
E,S,S,W,N,E,N
Entrada
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
Salida
E,E,E,E,E,S,S,E,N,W,S,E,N,N,N