Einführung
Sie haben das Unglück, in einem außer Kontrolle geratenen Auto auf einem Hindernisparcours stecken zu bleiben. Alle Funktionen des Fahrzeugs sprechen nicht an, mit Ausnahme des beschädigten Lenksystems. Es kann geradeaus fahren oder nach rechts abbiegen. Kann das Auto in Sicherheit gebracht werden?
Mechanik
Ihr Auto beginnt in der oberen linken Ecke einer 8x8-Karte und versucht, sich in der unteren rechten Ecke in Sicherheit zu bringen. Das Auto hat eine Ausrichtung (anfangs rechts), die in 90-Grad-Schritten gemessen wird. Das Auto kann eine von zwei Aktionen ausführen:
- Fahren Sie ein Quadrat vorwärts oder
- Drehen Sie um 90 Grad im Uhrzeigersinn und fahren Sie dann ein Feld vorwärts
Beachten Sie, dass das Auto nicht scharf genug drehen kann, um eine 180-Grad-Drehung auf einem einzelnen Quadrat durchzuführen.
Einige der Plätze sind Hindernisse. Wenn das Auto auf ein Hindernisfeld fährt, stürzt es ab. Alles, was sich außerhalb des 8x8-Kurses befindet, wird als Hindernis angesehen, sodass das Abfahren des Kurses einem Absturz gleichkommt.
Das untere rechte Quadrat ist das sichere Quadrat, mit dem das Auto dem Hindernisparcours entkommen kann. Das Startquadrat und das sichere Quadrat gelten als keine Hindernisse.
Aufgabe
Sie müssen ein Programm oder eine Funktion schreiben, die als Eingabe ein 8x8-Array (Matrix, Listenliste usw.) verwendet, das den Hindernislauf darstellt. Das Programm gibt einen Booleschen Wert oder einen ähnlichen Wahrheitswert zurück oder gibt ihn aus. Wenn es für das Auto möglich ist, den sicheren Platz zu erreichen, ohne zusammenzustoßen (dh wenn die Karte lösbar ist), ist die Ausgabe True
, ansonsten ist es False
.
Wertung
Standard Code Golf Regeln - der Gewinner ist der Code mit den wenigsten Bytes.
Boni:
Wenn Ihr Code für eine lösbare Karte eine gültige Reihe von Fahrereingaben ausgibt, die das Auto zum sicheren Feld führen, ziehen Sie 10 Prozentpunkte von Ihrer Punktzahl ab. Ein Beispiel für ein Ausgabeformat ist
SRSSR
(Straight, Right, Straight, Straight, Right). Diese Ausgabe würde die Standardausgabe ersetzenTrue
.Wenn bei einer unlösbaren Karte die Ausgabe Ihres Codes zwischen Situationen unterscheidet, in denen ein Absturz unvermeidbar ist, und Situationen, in denen es möglich ist, den Hindernisparcours für immer zu befahren, ziehen Sie 10 Prozentpunkte von Ihrer Punktzahl ab. Eine Beispielausgabe kann sein,
Crash
wenn ein Crash unvermeidbar ist oderStuck
das Auto für immer im Hindernisparcours steckt. Diese Ausgaben würden die StandardausgabeFalse
für eine unlösbare Karte ersetzen .
Beispiel
Wenn das Programm ein 8x8-Array wie dieses erhält:
[[0, 0, 0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0],
[1, 1, 0, 0, 0, 0, 0, 0],
[0, 1, 0, 1, 0, 0, 0, 0],
[0, 0, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 1, 0],
[0, 0, 0, 0, 0, 0, 1, 0],
[0, 1, 1, 0, 0, 0, 1, 0]]
Es würde als eine Karte wie diese interpretiert, wobei schwarze Quadrate Hindernisse anzeigen:
Und eine mögliche Lösung könnte sein:
Da es eine Lösung gibt, sollte das Programm True
diese Karte zurückgeben / drucken . Die hier gezeigte Abfolge von Zügen ist SSSSRSRRRSRSSRRRSSRSSS
.
Crash
und geschriebenStuck
. Sie sind hier, weil sie so lang sind. Zeile 2 gefüllt, alles andere leer ->Crash
. Zeile 7 gefüllt, alles andere leer ->Stuck