Adoro> <>,> <> è vita! Le lingue 2D sono incredibili! In questa sfida, dovrai dire se una strada "sospesa" ha fine, mentre giochi a golf.
Definizione
Una strada sospesa è costruita con piastrelle, comprese le seguenti:
v (go down)
> (go right)
^ (go up)
< (go left)
/ (mirror)
\ (mirror)
Qualsiasi altro personaggio (eccetto -|+
) può essere considerato una distrazione, come alcuni fiori (o teste di pesce) sul bordo della strada.
Una strada inizia sempre nell'angolo in alto a sinistra di una griglia rettangolare, delimitata da -|+
simboli. La strada finisce se, seguendola, finisci su un confine, altrimenti rimarrai intrappolato in un percorso infinito.
Trovare la strada sulla strada si ottiene seguendo le indicazioni fornite da v>^<
e gli specchi. Uno specchio rifletterà di 90 ° a seconda di dove vieni. Ecco come funziona (usando v>^<
per mostrare le indicazioni):
^ ^
>/< >\<
v v
</> <\>
^ ^
Una strada potrebbe apparire così se finisce:
+--------------------+
|>\/ this way >\/> | this one ends here
| v^ \/ |
| v^ ^.^ |
| \/\ >v |
| /\/ ^< |
+--------------------+
Un ciclo infinito:
+--------+
|>>\ This|
|\\ is |
| \\ a |
| \ /trap|
+--------+
specifiche
Una strada non consiste necessariamente solo di istruzioni. Spazi o lettere possono essere usati per completarlo. Questo significa che devi continuare a muoverti nella stessa direzione tranne se attraversi un personaggio <v^>-|
.
Ce ne sarà sempre uno v>^<
nell'angolo in alto a sinistra, <
o ^
implica che questa strada termina.
Puoi inviare una funzione prendendo una stringa come parametro o un programma autonomo usando STDIN / qualunque sia l'alternativa più vicina nella tua lingua.
L'invio deve essere restituito o stampato sui valori di verità / falsità di STDOUT al termine. Valori veritieri significano che la strada ha una fine, mentre falsi significa che è un ciclo infinito.
Casi test
+--------------------+
|>\/ 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
Le scappatoie standard sono vietate (come sempre).
Il vincitore sarà quello con il codice più breve in byte. (sarebbe fantastico vedere una> <> risposta :))