Contribution
Votre entrée est une chaîne unique, séparée par des sauts de ligne en 2n+1
lignes de longueur 2n+1
, pour un entier n ≥ 0
. L'entier n
ne fait pas partie de l'entrée; vous devrez le calculer à partir de la chaîne. Les lignes sont composées des "caractères de direction" >^<v
. Si les sauts de ligne posent un problème, vous pouvez les remplacer par des tuyaux verticaux |
.
L'entrée forme une grille carrée de taille (2n+1)x(2n+1)
, et chaque cellule de la grille est interprétée comme un routeur à rotor , qui pointe dans l'une des quatre directions cardinales. Nous procédons à déposer un jeton sur le routeur au centre de la grille, puis les routeurs le déplaceront de la manière suivante. Lorsque le jeton atterrit sur un routeur, le routeur tourne de 90 degrés dans le sens antihoraire et déplace le jeton d'un pas dans la nouvelle direction vers laquelle il pointe. S'il atterrit sur un autre routeur, le processus est répété, mais finalement, le jeton tombera du réseau.
Production
Votre sortie est la configuration finale des routeurs, au même format que l'entrée.
Exemple
Comme exemple d'entrée, considérons la 3x3
grille
<^<
^><
>^v
où le routeur central a été mis en surbrillance pour indiquer le jeton (c'est un peu difficile à voir). Le routeur central pivote pour faire face au nord et déplace le jeton vers la cellule centrale de la rangée supérieure:
<^<
^^<
>^v
Ce routeur pivote pour faire face à l'ouest et envoie le jeton dans le coin supérieur gauche:
<<<
^^<
>^v
Le routeur dans le coin envoie le jeton au sud, il est donc maintenant dans la cellule la plus à gauche de la rangée du milieu:
v<<
^^<
>^v
Ce routeur tourne pour faire face à l'ouest et envoie le jeton hors de la grille.
v<<
<^<
>^v
Ceci est la configuration finale de la grille, donc votre programme devrait la sortir. Notez que dans des exemples plus complexes, le jeton peut passer plusieurs fois par le même routeur avant de tomber du réseau.
Règles
Vous pouvez écrire soit une fonction soit un programme complet. C'est le code-golf, donc le nombre d'octets le plus bas l'emporte. Les failles standard ne sont pas autorisées. Vous pouvez décider s'il y a une nouvelle ligne de fin dans l'entrée et / ou la sortie.
Cas de 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
^<<<<<<<<