I labirinti di ghiaccio sono stati uno dei miei punti preferiti dei giochi Pokémon sin dal loro debutto in Pokémon Oro e Argento. Il tuo compito sarà quello di creare un programma che risolva questo tipo di problemi.
I labirinti di ghiaccio consistono principalmente, come suggerisce il nome, di ghiaccio. Una volta che il giocatore si muove in una direzione sul ghiaccio, continuerà a muoversi in quella direzione fino a quando non si scontrano con qualche ostacolo. C'è anche terreno che può essere spostato liberamente e impedirà a qualsiasi giocatore di attraversarlo. L'ultimo ostacolo è la pietra. La pietra non può occupare lo stesso spazio del giocatore e se il giocatore tenta di entrarci, smetterà di muoversi prima di poterlo fare.
Riceverai un contenitore di valori bidimensionale, come un elenco di elenchi o una stringa separata da newline, contenente 3 valori distinti per ciascuno dei 3 tipi di pavimentazione (Ghiaccio, Suolo e Pietra). Riceverai anche due coppie (o altri contenitori equivalenti a due valori) che indicano un inizio e una coordinata obiettivo nel labirinto. Questi possono essere zero o uno indicizzato.
Devi produrre un elenco di mosse (4 valori distinti con una biiezione su N, E, S, W) che inducono il giocatore ad arrivare alla fine quando viene eseguito.
L'ingresso avrà sempre un perimetro chiuso di pietra attorno al labirinto, quindi non devi preoccuparti del giocatore che esce dal labirinto
Questo è code-golf quindi vince il minor numero di byte
Casi test
Qui .
rappresenterà il ghiaccio, ~
rappresenterà il suolo e O
rappresenterà una pietra. Le coordinate sono 1 indicizzate. Ogni lettera nella soluzione rappresenta la direzione che inizia con quella lettera (ad es. N
= Nord)
Ingresso
OOOOO
OO.OO
O...O
OOOOO
Start : 3,3
End : 3,2
Produzione
N
Ingresso
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
Produzione
N,W,N,E,N,E,S,W,N,W,S,E,S,E,N,E,N
Ingresso
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
Produzione
E,S,S,W,N,E,N
Ingresso
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
Produzione
E,E,E,E,E,S,S,E,N,W,S,E,N,N,N