Ingresso
Il tuo input è una singola stringa, separata da newline in 2n+1
righe di lunghezza 2n+1
, per un numero intero n ≥ 0
. L'intero n
non fa parte dell'input; dovrai calcolarlo dalla stringa. Le linee sono composte dai "caratteri di direzione" >^<v
. Se i newline rappresentano un problema, è possibile sostituirli con tubi verticali |
.
L'input forma una griglia quadrata di dimensioni (2n+1)x(2n+1)
e ogni cella della griglia viene interpretata come un router del rotore , che punta in una delle quattro direzioni cardinali. Procediamo a rilasciare un token sul router al centro della griglia, quindi i router lo sposteranno nel modo seguente. Quando il token atterra su un router, il router ruota di 90 gradi in senso antiorario e sposta il token di un passo nella nuova direzione verso cui punta. Se atterra su un altro router, il processo si ripete, ma alla fine il token cadrà dalla griglia.
Produzione
L'output è la configurazione finale dei router, nello stesso formato dell'input.
Esempio
Come esempio di input, considera la 3x3
griglia
<^<
^><
>^v
dove il router centrale è stato evidenziato per indicare il token (è un po 'difficile da vedere). Il router centrale ruota verso nord e sposta il token nella cella centrale della riga superiore:
<^<
^^<
>^v
Questo router ruota verso ovest e invia il token nell'angolo in alto a sinistra:
<<<
^^<
>^v
Il router nell'angolo invia il token a sud, quindi ora è nella cella più a sinistra della riga centrale:
v<<
^^<
>^v
Quel router ruota verso ovest e manda il token fuori dalla griglia.
v<<
<^<
>^v
Questa è la configurazione della griglia finale, quindi il tuo programma dovrebbe emetterla. Si noti che in esempi più complessi, il token può passare lo stesso router più volte prima di cadere dalla griglia.
Regole
È possibile scrivere una funzione o un programma completo. Questo è code-golf, quindi vince il numero di byte più basso. Le scappatoie standard non sono ammesse. Puoi decidere se c'è una nuova riga finale nell'input e / o output.
Casi test
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
^<<<<<<<<