Ich liebe> <>,> <> ist das Leben! 2D-Sprachen sind unglaublich! In dieser Herausforderung müssen Sie sagen, ob eine "fischreiche" Straße ein Ende hat, während Sie Code-Golf spielen.
Definition
Eine fischreiche Straße besteht aus Kacheln, darunter die folgenden:
v (go down)
> (go right)
^ (go up)
< (go left)
/ (mirror)
\ (mirror)
Jedes andere Zeichen (außer -|+
) kann als Ablenkung angesehen werden, z. B. einige Blumen (oder Fischköpfe) am Straßenrand.
Eine Straße beginnt immer in der oberen linken Ecke eines rechteckigen Rasters, das durch -|+
Symbole begrenzt ist. Die Straße hat ein Ende, wenn Sie ihr folgen und an eine Grenze stoßen, sonst sind Sie auf einem unendlichen Pfad gefangen.
Um sich auf der Straße zurechtzufinden, müssen Sie den Anweisungen von v>^<
und den Spiegeln folgen . Ein Spiegel wird um 90 ° reflektiert, je nachdem, woher Sie kommen. So funktioniert es ( v>^<
um eine Wegbeschreibung anzuzeigen):
^ ^
>/< >\<
v v
</> <\>
^ ^
Eine Straße könnte so aussehen, wenn sie endet:
+--------------------+
|>\/ this way >\/> | this one ends here
| v^ \/ |
| v^ ^.^ |
| \/\ >v |
| /\/ ^< |
+--------------------+
Eine Endlosschleife:
+--------+
|>>\ This|
|\\ is |
| \\ a |
| \ /trap|
+--------+
Besonderheiten
Eine Straße besteht nicht unbedingt nur aus Anweisungen. Leerzeichen oder Buchstaben können verwendet werden, um es zu vervollständigen. Dies bedeutet, dass Sie sich in die gleiche Richtung bewegen müssen, es sei denn, Sie kreuzen einen Buchstaben in<v^>-|
.
Es wird immer eine v>^<
in der oberen linken Ecke sein <
oder ^
impliziert, dass diese Straße endet.
Sie können eine Funktion einreichen, die einen String als Parameter verwendet, oder ein eigenständiges Programm mit STDIN / was auch immer die nächstliegende Alternative in Ihrer Sprache ist.
Ihre Einreichung muss zurückgegeben oder auf STDOUT Wahrheits- / Falschwerte gedruckt werden, wenn sie abgeschlossen ist. Wahrheitswerte bedeuten, dass die Straße ein Ende hat, während falsch bedeutet, dass sie eine Endlosschleife ist.
Testfälle
+--------------------+
|>\/ this way >\/> | this one ends here
| v^ \/ |
| v^ ^.^ |
| \/\ >v |
| /\/ ><> ^< |
+--------------------+
True
+--------+
|>>\ This|
|\\ is |
| \\ a |
| \ /trap|
+--------+
False
+--+
|<v|
|^<|
+--+
True
+--+
|>v|
|^<|
+--+
False
+----------+
|v Hello \ |
|\\/\/ / |
| \/\\ \ |
|/ // >\ |
| ^/\>\\/ |
|\ /\/\/ |
+----------+
False
+-----+
|>\/\\|
|//\\/|
|\/\\\|
|//\//|
|\/\/ |
+-----+
True
2 test cases added as suggested by @MartinBüttner
+----+
|v |
|\\ |
|//\ |
|\\v |
| \/ |
+----+
False
+----+
|v |
|\\ |
|//\ |
|\\^ |
| \/ |
+----+
False
Test case inspired by @ETHproductions
+-------------------------+
|><> |
|something smells fishy...|
+-------------------------+
False
Standard-Schlupflöcher sind (wie immer) verboten.
Der Gewinner ist derjenige mit dem kürzesten Code in Bytes. (Es wäre erstaunlich, eine> <> Antwort zu sehen :))