Я люблю> <>,> <> це життя! 2D мови дивовижні! У цьому виклику вам доведеться сказати, чи закінчилася «риб’яча» дорога, а кодовий гольф.
Визначення
Рибна дорога споруджена плиткою, включаючи такі:
v (go down)
> (go right)
^ (go up)
< (go left)
/ (mirror)
\ (mirror)
Будь-який інший персонаж (крім -|+
) може розглядатися як відволікання, як деякі квіти (або рибні голови) на кордоні дороги.
Дорога завжди починається у верхньому лівому куті прямокутної сітки, -|+
позначеної символами. Дорога закінчується, якщо, дотримуючись її, ви опинитесь на кордоні, інакше ви потрапите в нескінченну стежку.
Пошук шляху в дорозі здійснюється, дотримуючись вказівок v>^<
та дзеркал. Дзеркало відображатиметься на 90 ° залежно від того, звідки ви приїхали. Ось як це працює (за допомогою v>^<
показу маршрутів):
^ ^
>/< >\<
v v
</> <\>
^ ^
Дорога може виглядати таким чином, якщо вона закінчиться:
+--------------------+
|>\/ this way >\/> | this one ends here
| v^ \/ |
| v^ ^.^ |
| \/\ >v |
| /\/ ^< |
+--------------------+
Нескінченна петля:
+--------+
|>>\ This|
|\\ is |
| \\ a |
| \ /trap|
+--------+
Особливості
Дорога не обов'язково складається лише з інструкцій. Пробіли або букви можна використовувати для його заповнення. Це означає, що вам потрібно продовжувати рухатися в тому ж напрямку, за винятком випадків, коли ви перекреслите символ у <v^>-|
.
У v>^<
верхньому лівому куті завжди буде одна , <
або ^
це означає, що ця дорога закінчується.
Ви можете надіслати функцію, що приймає рядок як параметр, або окрему програму, використовуючи STDIN / що б не було найближчою альтернативою вашій мові.
Ваші подання повинні повернути або надрукувати на STDOUT значення truthy / false, коли це зроблено. Ціннісні значення, що означають, що дорога має кінець, тоді як хибні означає, що це нескінченна петля.
Тестові справи
+--------------------+
|>\/ 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
Стандартні лазівки заборонені (як завжди).
Виграє той, хто має найменший код у байтах. (було б дивно побачити відповідь> <> :))