Вхідні дані
Ваш вхід - це один рядок, розділений новими рядками на 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
^<<<<<<<<