Ein Downhill-Labyrinth besteht aus einer Reihe von durch Leerzeichen getrennten Ziffern von 0 bis einschließlich 9 plus einem "S" und einem "X", wobei das S den Start und das X das Ziel bezeichnet. In einem Abfahrtslabyrinth dürfen Sie nur zu einem Feld gehen, das im Norden, Süden, Osten oder Westen neben Ihnen liegt (keine Diagonalen), und Sie dürfen nur zu Feldern gehen, deren Wert kleiner oder gleich dem Wert ist, den Sie haben sind derzeit auf.
Das Programm sollte einen Pfad ausgeben, um im gleichen Format wie die Eingabe durch das Labyrinth zu navigieren. Nur alle durchquerten Bereiche sollten ein "." in ihnen, und alle nicht besuchten Räume sollten ein "#" in ihnen haben. Die Start- und Endzellen sollten auch ihr "S" bzw. "X" behalten. Sie können davon ausgehen, dass es für das Labyrinth immer eine Lösung gibt.
Beispieleingabe:
3 3 3 3 2 1 S 8 9
3 1 1 3 3 0 6 8 7
1 2 2 4 3 2 5 9 7
1 2 1 5 4 3 4 4 6
1 1 X 6 4 4 5 5 5
Beispielausgabe:
. . . . # # S . #
. # # . . # # . .
. # # # . # # # .
. # # # . # # # .
. . X # . . . . .
quelle
S
undX
in eine beliebige Richtung bewegen ? Ist das Labyrinth immer lösbar?0
bis9
einschließlich, oder?Antworten:
JavaScript (ES6) 219
Eine Funktion, die true oder false zurückgibt. Die Lösung (falls gefunden) wird auf der Konsole ausgegeben. Es wird nicht versucht, eine optimale Lösung zu finden.
Zu Tode ungolfed und erklärte mehr als nötig
Test in der Firefox / FireBug-Konsole
Ausgabe
quelle
C # - 463
Akzeptiert Eingaben über STDIN und sollte einen optimalen Pfad erzeugen, der für den gegebenen Testfall getestet wurde, aber nicht anders. Vorausgesetzt, es gibt immer eine Lösung.
Ich habe es etwas eilig, ich habe eine Frist in 7 Stunden, aber das sah einfach nach zu viel Spaß aus, um es zu verpassen. Ich bin auch außer Übung. Es könnte sehr peinlich sein, wenn dies schief geht, aber es ist einigermaßen Golf gespielt.
Code mit Kommentaren:
quelle