Me encanta> <>,> <> es la vida! ¡Los idiomas 2D son increíbles! En este desafío, tendrá que decir si un camino "sospechoso" tiene un final, mientras que el golf de código.
Definición
Se construye un camino sospechoso con azulejos, que incluyen los siguientes:
v (go down)
> (go right)
^ (go up)
< (go left)
/ (mirror)
\ (mirror)
Cualquier otro personaje (excepto -|+
) puede considerarse una distracción, como algunas flores (o cabezas de peces) en el borde del camino.
Una carretera siempre comienza en la esquina superior izquierda de una cuadrícula rectangular, delimitada por -|+
símbolos. El camino tiene un final si, al seguirlo, termina en un borde, de lo contrario, quedará atrapado en un camino infinito.
Encontrar su camino en el camino se logra siguiendo las instrucciones dadas por v>^<
y los espejos. Un espejo se reflejará 90 ° dependiendo de dónde vienes. Así es como funciona (usando v>^<
para mostrar indicaciones):
^ ^
>/< >\<
v v
</> <\>
^ ^
Un camino podría verse así si termina:
+--------------------+
|>\/ this way >\/> | this one ends here
| v^ \/ |
| v^ ^.^ |
| \/\ >v |
| /\/ ^< |
+--------------------+
Un bucle infinito:
+--------+
|>>\ This|
|\\ is |
| \\ a |
| \ /trap|
+--------+
Detalles específicos
Un camino no consiste necesariamente solo en instrucciones. Se pueden usar espacios o letras para completarlo. Esto significa que debes continuar moviéndote en la misma dirección, excepto si cruzas un personaje <v^>-|
.
Siempre habrá uno v>^<
en la esquina superior izquierda, <
o ^
implica que este camino termina.
Puede enviar una función tomando una cadena como parámetro, o un programa independiente usando STDIN / lo que sea la alternativa más cercana en su idioma.
Su envío debe devolver o imprimir en los valores de verdad / falsedad de STDOUT cuando esté listo. Los valores de verdad significan que el camino tiene un final, mientras que falso significa que es un bucle infinito.
Casos de prueba
+--------------------+
|>\/ 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
Las lagunas estándar están prohibidas (como siempre).
El ganador será el que tenga el código más corto en bytes. (sería increíble ver una> <> respuesta :))