Eislabyrinthe sind seit ihrem Debüt in Pokémon Gold und Silber eine meiner Lieblingsheftklammern bei Pokémon- Spielen. Ihre Aufgabe wird es sein, ein Programm zu entwickeln, das diese Art von Problemen löst.
Eislabyrinthe bestehen hauptsächlich aus Eis, wie der Name schon sagt. Sobald sich der Spieler auf Eis in eine Richtung bewegt, bewegt er sich weiter in diese Richtung, bis er auf ein Hindernis stößt. Es gibt auch Boden, der frei bewegt werden kann und jeden Spieler davon abhält, sich darüber zu bewegen. Das letzte Hindernis ist Stein. Der Stein kann nicht das gleiche Feld wie der Spieler einnehmen. Wenn der Spieler versucht, sich darin zu bewegen, hört er auf, sich zu bewegen, bevor er kann.
Sie erhalten einen zweidimensionalen Wertebehälter, z. B. eine Liste mit Listen oder eine durch Zeilenumbrüche getrennte Zeichenfolge, die drei unterschiedliche Werte für jeden der drei Bodentypen (Eis, Boden und Stein) enthält. Sie erhalten außerdem zwei Paare (oder andere gleichwertige zwei Wertecontainer), die eine Start- und Zielkoordinate im Labyrinth angeben. Diese können null oder eins sein.
Sie müssen eine Liste von Zügen ausgeben (4 verschiedene Werte mit einer Bijektion auf N, E, S, W), die den Spieler veranlassen würden, am Ende anzukommen, wenn sie ausgeführt werden.
Die Eingabe hat immer einen geschlossenen Steinumfang um das Labyrinth, sodass Sie sich keine Sorgen machen müssen, dass der Spieler das Labyrinth verlässt
Dies ist Code-Golf, so dass die wenigsten Bytes gewinnen
Testfälle
Hier .
wird Eis dargestellt, ~
wird Boden dargestellt und O
wird ein Stein dargestellt. Koordinaten sind 1 indiziert. Jeder Buchstabe in der Lösung stellt die Richtung dar, die mit diesem Buchstaben beginnt (z. B. N
= Norden).
Eingang
OOOOO
OO.OO
O...O
OOOOO
Start : 3,3
End : 3,2
Ausgabe
N
Eingang
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
Ausgabe
N,W,N,E,N,E,S,W,N,W,S,E,S,E,N,E,N
Eingang
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
Ausgabe
E,S,S,W,N,E,N
Eingang
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
Ausgabe
E,E,E,E,E,S,S,E,N,W,S,E,N,N,N