J'aime> <>,> <> c'est la vie! Les langages 2D sont incroyables! Dans ce défi, vous devrez dire si une route «louche» a une fin, tout en jouant au golf.
Définition
Une route de poisson est construite avec des tuiles, y compris les suivantes:
v (go down)
> (go right)
^ (go up)
< (go left)
/ (mirror)
\ (mirror)
Tout autre personnage (sauf -|+
) peut être considéré comme une distraction, comme certaines fleurs (ou têtes de poisson) au bord de la route.
Une route démarre toujours dans le coin supérieur gauche d'une grille rectangulaire, délimitée par des -|+
symboles. La route a une fin si, en la suivant, vous vous retrouvez sur une frontière, sinon, vous serez pris au piège dans un chemin infini.
Trouver votre chemin sur la route est accompli en suivant les instructions données par v>^<
et les miroirs. Un miroir réfléchira de 90 ° selon d'où vous venez. Voici comment cela fonctionne (en utilisant v>^<
pour afficher les directions):
^ ^
>/< >\<
v v
</> <\>
^ ^
Une route pourrait ressembler à ceci si elle se termine:
+--------------------+
|>\/ this way >\/> | this one ends here
| v^ \/ |
| v^ ^.^ |
| \/\ >v |
| /\/ ^< |
+--------------------+
Une boucle infinie:
+--------+
|>>\ This|
|\\ is |
| \\ a |
| \ /trap|
+--------+
Détails
Une route n'est pas nécessairement constituée uniquement d'instructions. Des espaces ou des lettres peuvent être utilisés pour le compléter. Cela signifie que vous devez continuer à vous déplacer dans la même direction, sauf si vous croisez un personnage <v^>-|
.
Il y en aura toujours un v>^<
dans le coin supérieur gauche, <
ou ^
implique que cette route se termine.
Vous pouvez soumettre une fonction prenant une chaîne comme paramètre, ou un programme autonome utilisant STDIN / quelle que soit l'alternative la plus proche dans votre langue.
Votre soumission doit retourner ou imprimer sur les valeurs STDOUT de vérité / fausse quand elle est terminée. Les valeurs véridiques signifient que la route a une fin, tandis que la fausseté signifie que c'est une boucle infinie.
Cas de 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
Les failles standard sont interdites (comme toujours).
Le gagnant sera celui avec le code le plus court en octets. (il serait étonnant de voir une réponse> <> :))