Die Herausforderung
Erstellen Sie eine Funktion, die bei Eingabe von ASCII-Zeichen (zum Leiten eines Pfads, der möglicherweise eine Schleife enthält) die Länge der Schleife (falls vorhanden) und die Länge des "Schwanzes" ausgibt, der in eine der Schleifen führt Formen unten.
Eingang
Ihre Eingabe muss an eine Funktion übergeben werden. Unten sehen Sie ein Beispiel für eine einfache Eingabe.
# --> # --> #
^ |
| |
| v
# <-- #
Sie könnten die obigen Blöcke so visualisieren
Der "Schwanz" ist ein Gegenstand, während die Schleife vier lang ist.
Ein schwierigeres:
# --> # --> #
^ |
| |
| v
# --> # <-- # # --> #
^ ^ |
| | |
| | v
# --> # # <-- # <-- #
Ausgabe
Sie müssen über STDOUT oder die nächstgelegene Alternative Ihrer Sprache ausgeben.
Ihre zwei Ausgabe-Ganzzahlen sollten die Länge des Schwanzes und die Länge der Schleife sein. Diese Ausgabe kann in zwei Formen vorliegen.
- eine durch Leerzeichen getrennte Zeichenfolge:
"2 10"
- eine Reihe von ganzen Zahlen:
[2, 10]
Regeln
Jeder Block oder
#
wird nur einen einzigen Weg von sich selbst haben.Jeder Pfeil besteht aus zwei Liniensegmenten und einem Kopf.
Der Startblock befindet sich immer in der linken Spalte.
Die Eingabe wird niemals nur eine Schleife sein.
Beispiel
# --> # --> # --> #
^ ^ |
| | |
| | v
# # <-- # <-- #
Dieser hat eine Schwanzlänge von 2 und eine Schleifenlänge von 6. Unten sind der Schwanz und die Schleife voneinander getrennt.
Schwanz
# -->
^
|
|
#
Schleife
# --> # --> #
^ |
| |
| v
# <-- # <-- #
Die korrekten Ausgänge sind [2, 6]
und "2 6"
.
Wenn die Eingabe nur ein Tail ist , ist die Schleifenlänge Null.
# --> # --> # --> #
|
|
v
<-- # <-- #
Die korrekten Ausgaben für die obigen Eingaben sind [6, 0]
und"6 0"