Défi
Étant donné une matrice carrée de caractères (caractères ASCII imprimables sur un octet), faites tourner chaque "anneau" de la matrice dans des directions opposées.
Prenons un exemple:
1 2 3 4 5
6 7 8 9 A
B C D E F
G H I J K
L M N O P
Ensuite, l'anneau le plus à l'extérieur est tourné de 90 degrés dans le sens des aiguilles d'une montre, comme suit:
1 2 3 4 5 L G B 6 1
6 A M 2
B F => N 3
G K O 4
L M N O P P K F A 5
Le deuxième anneau est tourné de 90 degrés dans le sens antihoraire:
7 8 9 9 E J
C E => 8 I
H I J 7 C H
L'anneau final est tourné de 90 degrés dans le sens des aiguilles d'une montre, mais comme il s'agit d'un seul chiffre (lettre dans notre exemple), il n'est pas vraiment affecté.
Le résultat final est:
L G B 6 1
M 9 E J 2
N 8 D I 3
O 7 C H 4
P K F A 5
Si la matrice a une longueur de côté uniforme, l'anneau le plus à l'intérieur sera un carré 2x2 et devrait toujours être tourné.
Contribution
Une liste de listes dans n'importe quel format standard raisonnable. Par exemple, une chaîne délimitée par des espaces délimitée par des sauts de ligne ou une liste de chaînes délimitées par des espaces est acceptable, mais une liste des valeurs sous forme d'anneaux autour de la matrice n'est pas acceptable. Les personnages ne sont pas nécessairement uniques.
Sortie
Une liste de listes dans n'importe quel format standard raisonnable. Mêmes règles que l'entrée.
Cas de test
1 2 3 7 4 1
4 5 6 => 8 5 2
7 8 9 9 6 3
1 2 3 4 5 6 Y S M G A 1
A B C D E F Z E K Q W 2
G H I J K L => ! D O I V 3
M N O P Q R @ C P J U 4
S T U V W X # B H N T 5
Y Z ! @ # $ $ X R L F 6
Crédits
Fortement inspiré par un défi connexe qui fait tourner chaque élément dans le sens antihoraire d'une position (pas de 90 degrés).