Einführung
Jonny will Frogger spielen. Er ist jedoch nicht sehr gut. Tatsächlich wird er nur versuchen, sich vorwärts zu bewegen, und zwar erst, nachdem sich die Plattformen bewegt haben.
Finde heraus, ob Jonnys Frosch das Ende des Weges erreicht oder ob er auf seinem Weg stirbt.
Herausforderung
Das Programm empfängt als Eingabe ein Frogger-Gitter, das aus 0
s und 1
s besteht und das das folgende Format aufweist:
- Das Gitter hat eine zufällige Breite und Länge und mindestens 3x3
1
repräsentiert Plattformen0
steht für WasserF
repräsentiert die Startposition des Frosches- Jede erste und letzte Zeile des Gitters besteht nur aus
1
s und bewegt sich nicht. Der FroschF
wird in der letzten Zeile zufällig platziert - Jede Zwischenebene ist immer in Bewegung und hat ein
<
oder>
am Ende jeder Zeile, das angibt, ob sie sich nach links oder rechts bewegt
Das Ersetzen dieser Symbole durch Ihre eigenen ist zulässig, sofern sie alle unterschiedlich sind und Sie die Ersetzungen in Ihrer Antwort angeben.
Die Eingabe kann in jedem kompatiblen Format erfolgen (Zeichenfolge mit Zeilenumbrüchen, Zeichenfolge, Zeichenfolge, ...).
Herausforderungsregeln
- In jeder Runde bewegen sich alle Plattformen um ein Feld, basierend auf der Richtung, die durch das
<
oder>
-Zeichen angezeigt wird - Plattformen erscheinen wieder auf der anderen Seite des Gitters, wenn sie vom "Bildschirm" gestoßen werden
- Befindet sich der Frosch auf einer sich bewegenden Plattform, bewegt er sich mit
- Danach springt der Frosch ein Feld in Richtung oberste Reihe. Der Frosch wird sich jede Runde bewegen.
- Der Frosch stirbt, wenn er ins Wasser springt (
0
) oder zusammen mit einer sich bewegenden Plattform die Seite des Gitters berührt
Ihr Programm muss einen Wahrheitswert ausgeben, wenn der Frosch überlebt, und einen falschen Wert, wenn er nicht überlebt.
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes. Es gelten Standardlücken.
Beispiele
Beispiel 1
Eingang
11111
00111>
00101<
1F111
Ausgabe
1
Ausführung
Abbiegung 1:
11111
10011
01010
1F111
11111
10011
0F010
11111
Turn 2:
11111
11001
F0100
11111
11111
F1001
10100
11111
Wende 3:
11111
1F100
01001
11111
1F111
11100
01001
11111
Beispiel 2
Eingang
11111
00100<
00100<
1F111
Ausgabe
0
Ausführung
Abbiegung 1:
11111
01000
01000
1F111
11111
01000
0F000
11111
Turn 2:
11111
10000
F0000
11111
11111
F0000
10000
11111
Wende 3:
11111
00001
00001
11111
<
oder >
am Ende.
0
davor befindet, oder wartet er auf den nächsten 1
? Wenn es warten kann, geht es dann bei jedem vorwärts 1
oder kann es intelligent warten? Dh mit dem Testfall 11111 00001< 00011< 11F11
wird es falsch sein, weil es ins Wasser springt ( Pastebin of Steps ); wird es falsch sein, weil es sich aus dem Rahmen bewegt ( Pastebin of Steps ); oder ist es wahr, weil es intelligent auf die zweite Plattform wartet, bevor es vorwärts springt ( Pastebin of Steps )?
0
.
<
oder>
können wir rechteckige Arrays als Eingabe verwenden? Übrigens schöne Herausforderung!