入力
入力は単一の文字列で、改行によっていくつかの整数の場合2n+1
は長さの行に分割されます。整数は入力の一部ではありません。文字列から計算する必要があります。行は「方向文字」で構成されています。改行が問題になる場合は、縦線に置き換えることができます。2n+1
n ≥ 0
n
>^<v
|
入力はサイズの正方形のグリッドを形成し、グリッドの(2n+1)x(2n+1)
各セルは、4つの基本方向の1つを指すロータールーターとして解釈されます。グリッドの中心にあるルーターにトークンをドロップすると、ルーターは次の方法でトークンを移動します。トークンがルーターに到達すると、ルーターは反時計回りに90度回転し、トークンが指す新しい方向にトークンを1ステップ移動します。別のルーターに到達した場合、プロセスは繰り返されますが、最終的にトークンはグリッドから落ちます。
出力
出力は、入力と同じ形式のルーターの最終構成です。
例
入力例として、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
^<<<<<<<<