вход
Ваш ввод представляет собой одну строку, разделенную новыми 2n+1
строками на строки длины 2n+1
для некоторого целого числа n ≥ 0
. Целое число n
не является частью ввода; Вы должны будете вычислить это из строки. Линии состоят из «символов направления» >^<v
. Если новые строки представляют проблему, вы можете заменить их вертикальными трубами |
.
Входные данные образуют квадратную сетку размера (2n+1)x(2n+1)
, и каждая ячейка сетки интерпретируется как маршрутизатор ротора , который указывает в одном из четырех основных направлений. Мы продолжаем сбрасывать токен на маршрутизаторе в центре сетки, а затем маршрутизаторы перемещают его следующим образом. Когда токен приземляется на маршрутизаторе, он поворачивается на 90 градусов против часовой стрелки и перемещает токен на один шаг в новом направлении, на которое он указывает. Если он приземляется на другом маршрутизаторе, процесс повторяется, но в итоге токен падает с сетки.
Вывод
Ваш вывод является окончательной конфигурацией маршрутизаторов, в том же формате, что и вход.
пример
В качестве примера ввода рассмотрим 3x3
сетку
<^<
^><
>^v
где центральный маршрутизатор был выделен для обозначения токена (это немного трудно увидеть). Центральный маршрутизатор вращается лицом к северу и перемещает токен в центральную ячейку верхнего ряда:
<^<
^^<
>^v
Этот маршрутизатор вращается лицом к западу и отправляет токен в верхний левый угол:
<<<
^^<
>^v
Маршрутизатор в углу отправляет токен на юг, поэтому теперь он находится в самой левой ячейке среднего ряда:
v<<
^^<
>^v
Этот маршрутизатор вращается лицом к западу и отправляет токен из сетки.
v<<
<^<
>^v
Это окончательная конфигурация сетки, поэтому ваша программа должна вывести ее. Обратите внимание, что в более сложных примерах токен может проходить один и тот же маршрутизатор несколько раз, прежде чем выпадет из сети.
правила
Вы можете написать либо функцию, либо полную программу. Это код-гольф, поэтому выигрывает самое низкое число байтов. Стандартные лазейки запрещены. Вы можете решить, есть ли завершающий символ новой строки на входе и / или выходе.
Тестовые случаи
Input:
v
Output:
>
Input:
<^<
^><
>^v
Output:
v<<
<^<
>^v
Input:
>>^>>
v<vv<
>^>^<
^<>>^
vvv>>
Output:
>>^>>
>v>>v
^>>vv
^^>>>
v^<<^
Input:
<^^^^^^^^
<<^^^^^^>
<<<^^^^>>
<<<<^^>>>
<<<<^>>>>
<<<vv>>>>
<<vvvv>>>
<vvvvvv>>
vvvvvvvv>
Output:
>>>>>>>>v
^>>>>>>vv
^^>>>>vvv
^^^>>vvvv
<<<<<vvvv
^^^^<<vvv
^^^<<<<vv
^^<<<<<<v
^<<<<<<<<