Oder vielleicht ist es nicht wirklich ein Labyrinth, aber dennoch.
Regeln:
Eingang ist ein zweizeiliges string, bestehend aus
*
,1
,x
undX
. Diese Saite ist ein Labyrinth, durch das man laufen kann. Die Linien sind gleich lang .Sie können die Eingabe als Zeichenfolge mit
,
(Komma) oder als beliebiges Trennzeichen zwischen diesen beiden Zeilen verwenden. Oder Sie können beide Zeilen als separate Argumente für Ihre Funktion verwenden.Ausgabe ist die Anzahl der Schritte, die Sie ausführen müssen, um die Zeichenfolge zu verlassen (letzter Schritt ist der Schritt, der Sie aus der Zeichenfolge herausführt).
Sie beginnen in der oberen linken Ecke (der oberen Zeile) vor dem ersten Symbol.
Für jeden Schritt bewegen Sie sich um ein Symbol vorwärts (von der n-ten bis zur (n + 1) -ten Position ). Abhängig von dem Charakter, auf den Sie treten, ist das Ergebnis unterschiedlich. Das macht jeder Char:
*
- nichts. Sie treten einfach normal darauf.x
- Wenn Sie darauf getreten sind, wechseln Sie die Linie, aber bleiben Sie von Anfang an auf dem gleichen horizontalen Abstand. Sie sind beispielsweise auf die dritte Position der oberen Zeile getreten und haben hier einen Kleinbuchstabenx
gefunden. Dann bewegen Sie sich sofort in die untere Zeile, aber wieder an die dritte Position.X
- Schalten Sie die Leitung um und gehen Sie zur nächsten Position. Das Beispiel ist dort dasselbe, aber Sie bewegen sich auch von der dritten zur vierten Position (Sie befinden sich also in der zweiten Zeile an der vierten Position).1
- Gehen Sie einfach um eine weitere Position vorwärts.
Sobald jeder Charakter seine Arbeit erledigt hat, wird er durch ein Leerzeichen ersetzt und funktioniert nicht mehr.
Beispiele folgen.
Eingabe :
x *
Wie gesagt, Sie beginnen vor dem ersten Symbol der ersten Zeile. Der erste Schritt bringt Sie zum Buchstaben,
x
und dieser Buchstabe versetzt Sie in die zweite Zeile. Der Buchstabex
funktioniert nicht mehr alsx
, sondern wird durch ersetzt*
. Dies wird in den letzteren Beispielen relevanter sein. Du bist jetzt auf einem Sternchen in der unteren Zeile und es hat dir nichts getan.Der zweite Schritt bewegt dich vorwärts und du verlässt die Schnur, sodass das Labyrinth fertig ist und es 2 Schritte gedauert hat.
Ausgabe
2
.Eingabe :
xX* x1*
1. Schritt : Sie bewegen sich weiter
x
, was Sie inx
die untere Zeile bewegt . Hier kommt die Regel, die besagt, dass das verwendete Zeichen durch ein Sternchen ersetzt wird. Dann bewegen Sie sich zurück in die erste Zeile, diese ist jedoch nicht mehrx
vorhanden, da sie verwendet wurde und zu einem Sternchen wurde. Sie bewegen sich also sicher auf diesem Stern und der Schritt ist abgeschlossen (Sie befinden sich nun an der ersten Position der ersten Zeile).2. Schritt : Sie bewegen sich weiter
X
, es schiebt Sie in die untere Zeile und schiebt Sie dann vorwärts. Sie befinden sich jetzt auf der dritten Position der zweiten Zeile (Sternchen) und haben die zweite Position (die enthält1
) noch nie besucht .3. Schritt : Sie bewegen sich vorwärts und verlassen die Zeichenkette.
Ausgang :
3
.
Testfälle:
Eingang:
*1* xxx
Ausgang:
3
. (weil1
bringt Sie auf die dritte Position springen). Dort besucht man nie die zweite Zeile, sondern es wird ein Teil der Eingabe benötigt.Eingang:
*X*1*x x*1xx*
Ausgang:
4
.Eingang:
1x1x ***X
Ausgang:
3
.Eingang:
1*x1xxx1*x x*x1*11X1x
Ausgang:
6
.Eingang:
xXXXxxx111* **xxx11*xxx
Ausgang:
6
.
quelle
"\n\n"
ist eine zweizeilige Zeichenfolge ...1
, wenn du vor der 1. Zeile beginnst , dann gehst du einen Schritt vorwärts und dann beendest du das Labyrinth ...Antworten:
Schnecken, 34 Bytes
Erweitert:
Für einen Pfad, der N Schritte dauert, findet das Programm eine erfolgreiche Übereinstimmung für jede Durchquerung von 0 Schritten, 1 Schritten, ..., N - 1 Schritten.
quelle
Haskell,
686665 BytesDie Funktion
#
nimmt beide Zeilen als separate Parameter. Anwendungsbeispiel:"1x1x" # "***X"
->3
.Wir müssen nur die Sterne zählen, auf die
*
wir treten, plus 1 für das Verlassen.Edit: @feersum hat ein Byte gespeichert. Vielen Dank!
quelle
a>'a'
statt verwendena=='x'
?JavaScript (ES6), 119
Weniger golfen
Prüfung
quelle
TSQL (SQL Server 2012+), 276 Byte
Golf gespielt:
Ungolfed:
Geige
quelle
JavaScript, 211 Byte
Ich denke darüber nach, eine Version zu erstellen, die jeden Schritt nacheinander auf einer Webseite anzeigt.
Verwendet mehr Bytes als ich gehofft hatte , als Ersatz
x
mit*
wegen JS unveränderlichStrings
. Verbesserungsvorschläge sind insbesondere beim Ersatzteil erwünscht.quelle