Reto
Dada una matriz cuadrada de caracteres (caracteres ASCII imprimibles de un solo byte), gire cada "anillo" de la matriz en direcciones opuestas.
Tomemos un ejemplo:
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
Luego, el anillo más externo se gira 90 grados en el sentido de las agujas del reloj, así:
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
El segundo anillo se gira en sentido antihorario 90 grados:
7 8 9 9 E J
C E => 8 I
H I J 7 C H
El anillo final se gira 90 grados en el sentido de las agujas del reloj, pero como es un número único (letra en nuestro ejemplo), no se ve realmente afectado.
El resultado final es:
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 matriz tiene una longitud lateral uniforme, el anillo más interno será un cuadrado de 2x2 y aún debe rotarse.
Entrada
Una lista de listas en cualquier formato estándar razonable. Por ejemplo, una cadena delimitada por espacios delimitada por una nueva línea o una lista de cadenas delimitadas por espacios es aceptable, pero una lista de los valores como anillos alrededor de la matriz no es aceptable. Los personajes no son necesariamente únicos.
Salida
Una lista de listas en cualquier formato estándar razonable. Las mismas reglas que la entrada.
Casos de prueba
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éditos
Muy inspirado por un desafío relacionado que rota cada elemento en sentido antihorario una posición (no 90 grados).