Labirintos de gelo têm sido um dos meus itens favoritos dos jogos Pokémon desde a sua estreia em Pokémon Gold e Silver. Sua tarefa será criar um programa que resolva esses tipos de problemas.
Labirintos de gelo consistem principalmente, como o nome sugere, em gelo. Uma vez que o jogador se move em uma direção no gelo, ele continuará a se mover nessa direção até colidir com algum obstáculo. Também há solo que pode ser movimentado livremente e impedirá qualquer jogador de se mover. O último obstáculo é a pedra. A pedra não pode ocupar o mesmo espaço que o jogador e, se o jogador tentar entrar nele, parará de se mover antes que possa.
Você receberá um contêiner bidimensional de valores, como uma lista de listas ou uma sequência separada por novas linhas, contendo 3 valores distintos para cada um dos 3 tipos de piso (gelo, solo e pedra). Você também receberá dois pares (ou outros recipientes de valor equivalente) que indicam uma coordenada de início e objetivo no labirinto. Estes podem ser zero ou um indexado.
Você deve produzir uma lista de movimentos (4 valores distintos com uma bijeção em N, E, S, W) que levariam o jogador a chegar ao final quando executado.
A entrada sempre terá um perímetro fechado de pedra ao redor do labirinto, para que você não precise se preocupar com o jogador saindo do labirinto
Isso é código-golfe, então o menor número de bytes vence
Casos de teste
Aqui .
representará gelo, ~
representará solo e O
representará uma pedra. As coordenadas são 1 indexadas. Cada letra da solução representa a direção que começa com essa letra (por exemplo, N
= Norte)
Entrada
OOOOO
OO.OO
O...O
OOOOO
Start : 3,3
End : 3,2
Resultado
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
Resultado
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
Resultado
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
Resultado
E,E,E,E,E,S,S,E,N,W,S,E,N,N,N