Eu amo> <>,> <> é a vida! Os idiomas 2D são incríveis! Neste desafio, você terá que dizer se uma estrada "duvidosa" termina, enquanto pratica golfe.
Definição
Uma estrada de peixe é construída com azulejos, incluindo os seguintes:
v (go down)
> (go right)
^ (go up)
< (go left)
/ (mirror)
\ (mirror)
Qualquer outro personagem (exceto -|+
) pode ser considerado uma distração, como algumas flores (ou cabeças de peixe) na beira da estrada.
Uma estrada sempre começa no canto superior esquerdo de uma grade retangular, delimitada por -|+
símbolos. A estrada tem um fim se, seguindo-a, você acaba em uma borda; caso contrário, você fica preso em um caminho infinito.
Para encontrar o caminho na estrada, siga as instruções dadas por v>^<
e espelhos. Um espelho refletirá 90 °, dependendo de onde você veio. Veja como funciona (usando v>^<
para mostrar instruções):
^ ^
>/< >\<
v v
</> <\>
^ ^
Uma estrada pode ficar assim se terminar:
+--------------------+
|>\/ this way >\/> | this one ends here
| v^ \/ |
| v^ ^.^ |
| \/\ >v |
| /\/ ^< |
+--------------------+
Um loop infinito:
+--------+
|>>\ This|
|\\ is |
| \\ a |
| \ /trap|
+--------+
Específicos
Uma estrada não consiste necessariamente apenas em instruções. Espaços ou letras podem ser usados para completá-lo. Isso significa que você deve continuar se movendo na mesma direção, exceto se você cruzar um personagem <v^>-|
.
Sempre haverá um v>^<
no canto superior esquerdo <
ou ^
implica que esta estrada termina.
Você pode enviar uma função usando uma string como parâmetro ou um programa independente usando STDIN / qualquer que seja a alternativa mais próxima no seu idioma.
Sua submissão deve retornar ou imprimir valores STDUT verdade / falsidade quando terminar. Valores reais que significam que a estrada tem um fim, enquanto falsidade significa que é um loop infinito.
Casos de teste
+--------------------+
|>\/ 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
As brechas padrão são proibidas (como sempre).
O vencedor será aquele com o menor código em bytes. (seria incrível ver uma resposta> <> :))