Einführung
Jeder weiß, dass die Möglichkeit, erfolgreich durch ein Asteroidenfeld zu navigieren, ungefähr 3.720 zu 1 beträgt. Trotz Ihrer Warnung ist Han Solo immer noch bereit, sein Glück zu versuchen.
Aus Angst um Ihr künstliches Leben, entscheiden Sie Code, in dem eigentümlichen Dialekt des Schiffs ( lesen: Ihre bevorzugten Code Golf Sprache ), ein Asteroiden Vermeidungsprogramm, welcher Weg zu nehmen in einem Asteroidenfeld ASCII - Labyrinth wird entscheiden.
Eingang
Der Millenium Falcon verfügt über ein Asteroidenfeld-Mapping-Programm, das ähnliche Daten liefert:
| ##### ######### |
| ###### # ### # |
| # # # # #### # |
@ ## ####
|# # # ### ## |
|## ## #### # # |
|#### ##### # ## |
Die oberen Reihen befinden sich links vom Falken, die unteren Reihen rechts vom Falken und die Spalten repräsentieren, was sich vor dem Schiff befindet.
- Jeder
#
ist ein Hindernis. - Jedes Feld ist ein leeres Feld, in das das Schiff fliegen kann.
- Die Eingabe ist immer 7 Zeichen hoch. Dies ist die maximale Asteroidenkartierungsbreite.
- Die Eingabe ist immer 32 Zeichen lang (30 für das Feld selbst und 2 für die Start- und Endbegrenzung). Dies ist die Obergrenze für die Asteroidenkartierung. Vertikale Balken
|
markieren den Anfang und das Ende des Mappings. @
ist der Falke. Es befindet sich immer in der mittleren Zeile (4. Zeile) und in der ersten Spalte der Eingabe.- Der in den vertikalen Balken in der letzten Spalte verbleibende Raum ist der Ort, an dem das Schiff ankommen muss. Es befindet sich immer in der mittleren Zeile (4. Zeile) und in der letzten Spalte der Eingabe.
Die Eingabe kann als mehrzeilige Zeichenfolge, als Array von Zeichenfolgen, aus STDIN oder Funktionsparametern oder aus einer Datei gelesen werden.
Mögliche Manöver
Sie werden von TIE-Fighters verfolgt, deshalb müssen Sie immer vorwärts gehen. Es gibt also drei Möglichkeiten, wie das Schiff bei jedem Schritt fliegen kann:
-
Nach vorne/
Vorwärts und links abbiegen\
Vorwärts und rechts abbiegen
Dies sind beispielsweise gültige Pfade:
@---
--
/ \ /
@ -
-
/ \
/ \
@ \
Wie Sie sehen, gibt es immer genau einen Zug pro Spalte. Der Falke ist ein Stück Müll, deshalb kann er keine gewaltsamen Wendungen machen. Was bedeutet, dass Bewegungen wie /\
oder \/
nicht erlaubt sind . Es muss mindestens ein reiner Stürmer -
zwischen zwei entgegengesetzten Kurven sein. Auf der anderen Seite ist es möglich, mehrere Schritte hintereinander in eine Richtung zu drehen, wie oben gezeigt.
Der Falke stürzt ab, wenn ein Zug das Schiff an eine Stelle bringt, an der sich ein Hindernis befindet. Diese Bewegungen führen beispielsweise zu Abstürzen:
@-#
@
\
#
#
/
@
Beachten Sie, dass dies kein Absturz ist:
@-#
\
-
Ausgabe
Sie müssen dasselbe Asteroidenfeld ASCII mit einem gültigen Pfad bis zum Ende ausgeben. Der Falcon muss am Endpunkt statt am Startpunkt gedruckt werden.
Eine gültige Ausgabe für das zuvor angegebene Eingabebeispiel wäre beispielsweise:
| ##### ######### |
| ###### #-------- ### # |
| # # #/ # ####\ # |
--------- ## \ #### ----@
|# # # ### \ ## / |
|## ## #### \ #/ # |
|#### ##### #-- ## |
Ihr Weg muss nur den Falken nicht zum Absturz bringen. Es muss nicht der kürzest mögliche Weg sein.
Sie können davon ausgehen, dass es immer mindestens einen möglichen Weg zum Ende geben wird.
Sie können nach STDOUT, in einer Datei oder in einem gleichwertigen Format ausgeben, solange das Asteroidenfeld genau wie in diesem Beitrag gedruckt wird (z. B. ist die Ausgabe einer Koordinatenliste für den Pfad ungültig).
Testfälle
Ein normales Asteroidenfeld
| ##### ######### | | ###### # ### # | | # # # # #### # | @ ## #### |# # # ### ## | |## ## #### # # | |#### ##### # ## |
Mögliche Ausgabe
| ##### ######### | | ###### #-------- ### # | | # # #/ # ####\ # | --------- ## \ #### ----@ |# # # ### \ ## / | |## ## #### \ #/ # | |#### ##### #-- ## |
Hyperreguläres Asteroidenfeld
|# # # # # # # # # # # # # # # | | # # # # # # # # # # # # # # #| |# # # # # # # # # # # # # # # | @ # # # # # # # # # # # # # # |# # # # # # # # # # # # # # # | | # # # # # # # # # # # # # # #| |# # # # # # # # # # # # # # # |
Mögliche Ausgabe
|# # # # # # # # # # # # # # # | | # # # # # # # # # # # # # # #| |# # # # # # # # # # # # # # # | -# #-# #-# #-# #-# #-# #-# #--@ |#\#/#\#/#\#/#\#/#\#/#\#/#\#/# | | #-# #-# #-# #-# #-# #-# #-# #| |# # # # # # # # # # # # # # # |
Der Kern des Todessterns
| # # # # | | # # # | | # # # # # | @ # # # # # | # # # # | | # # # # # | | # # # # |
Mögliche Ausgabe
| # # # -- # | | --- # # / #\ - | | / #\ # # / # \ /#\ | - # \ # #/ # - # ----@ | # \ # ---- # # | | # \#/ # # # | | # - # # # |
Todesstern Graben
|##############################| |##############################| |##############################| @ |##############################| |##############################| |##############################|
Ausgabe
|##############################| |##############################| |##############################| ------------------------------@ |##############################| |##############################| |##############################|
Asteroidenhöhle
|### ##########################| |## # ############### ## ######| |# ### ######## ### ## # #####| @ ###### ###### ### ## ### |######## ### ### ## #########| |########## # ### ## ##########| |########### #####|
Mögliche Ausgabe
|###-##########################| |##/#\############### ##-######| |#/###--######## ### ##/#\#####| -######\###### ### ##/###-----@ |########--### ### ##/#########| |##########\# ### ##/##########| |###########-------- #####|
Wertung
R2D2 ist gerade mit dem Schwimmen in Sümpfen beschäftigt, daher müssen Sie die Steuerung des Falcon selbst programmieren, was mühsam ist. Daher gewinnt der kürzeste Code .
-
in jeder Runde den Weg, der als "Vorwärtsbewegung" definiert ist. Die tatsächlichen Bewegungen sind jedoch immer zwei diagonale-links, gefolgt von zwei diagonale-rechts.