Я люблю> <>,> <> это жизнь! 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, когда это будет сделано. Истинные значения означают, что дорога имеет конец, в то время как ложность означает, что это бесконечный цикл.
Контрольные примеры
+--------------------+
|>\/ 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
Стандартные лазейки запрещены (как всегда).
Победителем станет тот, у кого самый короткий код в байтах. (было бы удивительно видеть ответ> <> :))