Wejście
Dane wejściowe to pojedynczy ciąg znaków, oddzielony znakami nowej linii w 2n+1
wierszach długości 2n+1
, dla niektórych liczb całkowitych n ≥ 0
. Liczba całkowita n
nie jest częścią danych wejściowych; będziesz musiał obliczyć to na podstawie ciągu. Linie składają się z „znaków kierunkowych” >^<v
. Jeśli nowe linie stanowią problem, możesz je zastąpić pionowymi rurami |
.
Dane wejściowe tworzą kwadratową siatkę wielkości (2n+1)x(2n+1)
, a każda komórka siatki jest interpretowana jako router wirnika , który wskazuje w jednym z czterech głównych kierunków. Kontynuujemy upuszczanie tokena na routerze pośrodku sieci, a następnie routery będą go przesuwać w następujący sposób. Gdy token wyląduje na routerze, router obraca się o 90 stopni w kierunku przeciwnym do ruchu wskazówek zegara i przesuwa token o jeden krok w nowym kierunku, na który wskazuje. Jeśli wyląduje na innym routerze, proces się powtarza, ale ostatecznie token spadnie z siatki.
Wynik
Twoje dane wyjściowe to końcowa konfiguracja routerów, w tym samym formacie co dane wejściowe.
Przykład
Jako przykładowy przykład rozważ 3x3
siatkę
<^<
^><
>^v
gdzie centralny router został podświetlony, aby wskazać token (jest trochę trudny do zobaczenia). Centralny router obraca się w kierunku północnym i przesuwa żeton do centralnej komórki górnego rzędu:
<^<
^^<
>^v
Router obraca się w kierunku zachodnim i wysyła token do lewego górnego rogu:
<<<
^^<
>^v
Router w rogu wysyła token na południe, więc znajduje się teraz w lewej komórce środkowego rzędu:
v<<
^^<
>^v
Router obraca się twarzą na zachód i wysyła token z siatki.
v<<
<^<
>^v
To jest końcowa konfiguracja siatki, więc twój program powinien ją wypisać. Zauważ, że w bardziej złożonych przykładach token może wielokrotnie przejść przez ten sam router, zanim spadnie z sieci.
Zasady
Możesz napisać funkcję lub pełny program. To jest golf golfowy, więc wygrywa najmniejsza liczba bajtów. Standardowe luki są niedozwolone. Możesz zdecydować, czy końcowy znak nowej linii znajduje się na wejściu i / lub wyjściu.
Przypadki testowe
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
^<<<<<<<<