De todos los caracteres ASCII, es fácil decir que algunos de ellos forman grupos que son rotaciones del mismo carácter básico. Por ejemplo, V > ^ <
. Esto permite la posibilidad de construir arte ASCII que puede rotarse por múltiplos de 90 grados y seguir siendo arte ASCII.
El reto
Su objetivo es jugar al golf un programa que acepte el arte ASCII y la cantidad de grados para rotarlo desde STDIN, e imprima el arte ASCII rotado en STDOUT.
En la primera línea de entrada, su programa recibirá un número N. Este número representa el ancho y la altura del arte ASCII.
Luego recibirá N más líneas de exactamente N caracteres cada una (la nueva línea no se cuenta en este número). El tamaño del arte siempre será un cuadrado, aunque puede tener relleno en forma de espacios para hacerlo cuadrado.
Luego recibirá un número más en una línea final: 90, 180 o 270. Esto representa cuántos grados en el sentido de las agujas del reloj se debe girar la imagen.
Nota: La imagen ingresada solo contendrá caracteres que pueden rotarse en la cantidad correcta. Si la entrada no coincide exactamente con estos requisitos, no se requiere un comportamiento específico.
Como salida, su programa debe imprimir exactamente N líneas de N caracteres, con nuevas líneas después de cada línea. La imagen debe girarse para que cada carácter del original haya sido reemplazado por una versión girada y haya sido movido al lugar correcto en la imagen.
Ejemplos (arte ASCII no muy bonito)
Entrada
5
<- ||
| |V
+->+
|O
<--+
90
Salida
^ +-^
| | |
| V
+-+--
O <-
(Las rotaciones de 90 y 270 no se verán muy bien porque los personajes no son cuadrados)
Entrada
6
+ /\ +
| \ \|
( \/|
\ )
I \ /
:) V $
180
Salida
$ ^ (:
/ \ I
( \
|/\ )
|\ \ |
+ \/ +
Caracteres admitidos requeridos
Para todas las rotaciones (90, 180 y 270), el programa debe poder rotar:
- Espacios,
+
,@
,X
yO
los que nunca cambian V
>
<
^
|
-
y\
/
(rotados por 180 permanecen igual)
Para una rotación de 180 grados, estos caracteres adicionales deben ser compatibles
I
N
Z
%
:
0
=
S
~
$
#
que permanecen igualP
d
,(
)
,[
]
,{
}
,M
W
, Y9
6
P d, ( ), [ ], { }, M W, and 9 6
¿Se puede girar 90º o 270º?
v
, que no es un carácter compatible. Supongo que estaba destinado a ser mayúsculaV
. Además, la última línea no está acolchada para tener 5 caracteres de largo.