Geben Sie bei einer Liste von Pfaden den richtigen Pfad aus.
Beispiel für einen Pfad:
/\
----+/
|
-
und|
sind horizontale und vertikale Pfade./
und\
sind um 90 ° gedreht.+
wird als-
oder als|
abhängig von der aktuellen Richtung behandelt.
Pfade können in jede Richtung verlaufen und ein Zeichen kann in mehreren Pfaden verwendet werden.
Die Eingabe wird folgendermaßen aussehen:
/--\
A------+--+--#
B------/ \--:
C------------#
D------------#
A
,B
,C
UndD
sind Pfad beginnt#
ist eine Mauer (der Weg ist schlecht):
ist das Ende (der Weg ist korrekt)
Also hier wird die Ausgabe sein B
.
Sie können annehmen:
:
und#
wird immer von links erreicht.- Das Zeichen rechts vom Anfang eines Pfades ist immer
-
. - Pfade werden immer gut geformt sein.
#
und:
wird immer in der gleichen Spalte sein.- Es wird immer nur einen
:
und vier Pfade geben.
Testfälle
A------#
B------#
C------#
D------:
=>
D
A-\ /---:
B-+-/ /-#
C-+---+-#
D-+---/
\-----#
=>
B
/-\
A-+\\---#
B-/\-\/-#
C----++-#
D----+/
\--:
=>
A
A-\
B-+\
C-++\/----#
D-+++//---:
\++-//--#
\+--//-#
\---/
=>
A
/-\
A-+-/-\
B-+-+-\--#
C-+-/ |/-#
D-\---++-#
\---+/
\--:
=>
B
Da dies Codegolf ist , gewinnt die kürzeste Antwort.
code-golf
ascii-art
path-finding
TuxCrafting
quelle
quelle
/
oder\
?:
immer von links erreicht werden oder könnte es auch von oben oder unten erreicht werden? Mit anderen Worten, könnte es andere Zeichen als#
oder:
in der letzten Spalte geben?Antworten:
Beleg , 47 Bytes
Teste es hier.
Yay für undokumentierte Funktionen ...
Erläuterung
Slip ist im Grunde eine zweidimensionale Regex-Syntax. Standardmäßig geben Slip-Programme die Teilmenge der Eingabe aus, mit der sie übereinstimmen. In diesem Fall stimme ich einfach mit einem gültigen Pfad überein. Um zu verhindern, dass der gesamte Pfad gedruckt wird, verwende ich den undokumentierten Pfad
(?,...)
Gruppen, die lediglich angeben, dass die darin enthaltenen Zeichen in der Ausgabe weggelassen werden sollen.Wie für die regex, leider gibt es einige Überschneidungen , da
\
und/
müssen unterschiedlich behandelt werden , je nachdem , ob wir horizontal oder vertikal zu bewegen. Positiv ist, dass wir wissen, dass der Pfad horizontal beginnt und endet, und dass in jedem Pfad eine gerade Anzahl\
oder eine gerade Anzahl vorhanden ist/
, sodass wir zwei von ihnen gleichzeitig zuordnen können.quelle
:)
Python, 221 Bytes
Der erste Einzug ist nur ein Leerzeichen, in der while-Schleife ein Tabulator.
quelle
Javascript (ES6),
117104 BytesTestfälle:
quelle
Ruby, 140 Bytes
Versuchen Sie es auf repl.it: https://repl.it/CyJv
Ungolfed
quelle
Perl 211 Bytes
Ungolfed:
Dies ist mein erster Perl-Golf, daher sind Vorschläge willkommen :)
quelle