De todos os caracteres ASCII, é fácil dizer que alguns deles formam grupos que são rotações do mesmo caractere básico. Por exemplo V > ^ <
,. Isso permite a possibilidade de construir arte ASCII que pode ser girada em múltiplos de 90 graus e ainda permanecer arte ASCII.
O desafio
Seu objetivo é jogar golfe em um programa que aceite arte ASCII e o número de graus para girá-lo de STDIN e imprima a arte ASCII girada em STDOUT.
Na primeira linha de entrada, seu programa receberá um número N. Esse número representa a largura e a altura da arte ASCII.
Você receberá N mais linhas com exatamente N caracteres cada (a nova linha não é contada nesse número). O tamanho da arte será sempre um quadrado, embora possa ter preenchimento na forma de espaços para torná-lo um quadrado.
Você receberá mais um número na linha final: 90, 180 ou 270. Isso representa quantos graus no sentido horário a imagem deve ser girada.
Nota: A imagem inserida conterá apenas caracteres que podem ser girados na quantidade correta. Se a entrada não corresponder exatamente a esses requisitos, nenhum comportamento específico será necessário.
Como saída, seu programa deve imprimir exatamente N linhas de N caracteres, com novas linhas após cada linha. A imagem deve ser girada para que cada caractere no original seja substituído por uma versão girada e movido para o local correto na imagem.
Exemplos (arte ASCII não muito bonita)
Entrada
5
<- ||
| |V
+->+
|O
<--+
90
Resultado
^ +-^
| | |
| V
+-+--
O <-
(Rotações de 90 e 270 não parecerão muito boas porque os caracteres não são quadrados)
Entrada
6
+ /\ +
| \ \|
( \/|
\ )
I \ /
:) V $
180
Resultado
$ ^ (:
/ \ I
( \
|/\ )
|\ \ |
+ \/ +
Caracteres suportados necessários
Para todas as rotações (90, 180 e 270), o programa deve poder girar:
- Spaces,
+
,@
,X
eO
não que a mudança V
>
<
^
|
-
e\
/
(girado em 180, eles permanecem iguais)
Para rotação de 180 graus, esses caracteres adicionais devem ser suportados
I
N
Z
%
:
0
=
S
~
$
#
que permanecem os mesmosP
d
,(
)
,[
]
,{
}
,M
W
, E9
6
P d, ( ), [ ], { }, M W, and 9 6
pode ser girado 90º ou 270º?
v
, que não é um caractere suportado. Suponho que era para ser uma letra maiúsculaV
. Além disso, a última linha não é preenchida para ter 5 caracteres.