Di tutti i caratteri ASCII, è facile dire che alcuni di essi formano gruppi che sono rotazioni dello stesso carattere di base. Ad esempio V > ^ <,. Ciò consente la possibilità di costruire arte ASCII che può essere ruotata di multipli di 90 gradi e rimanere ancora arte ASCII.
La sfida
Il tuo obiettivo è giocare a golf un programma che accetta l'arte ASCII e il numero di gradi per ruotarlo da STDIN e stampa l'arte ASCII ruotata su STDOUT.
Sulla prima riga di input, il tuo programma riceverà un numero N. Questo numero rappresenta la larghezza e l'altezza dell'arte ASCII.
Riceverai quindi N più righe di esattamente N caratteri ciascuna (la nuova riga non viene conteggiata in questo numero). La dimensione dell'arte sarà sempre una piazza, sebbene possa avere un'imbottitura sotto forma di spazi per renderla una piazza.
Riceverai quindi un altro numero su una riga finale: 90, 180 o 270. Ciò rappresenta di quanti gradi in senso orario l'immagine deve essere ruotata.
Nota: l'immagine immessa conterrà solo caratteri che possono essere ruotati della quantità corretta. Se l'input non corrisponde esattamente a questi requisiti, non è richiesto alcun comportamento specifico.
Come output, il tuo programma dovrebbe stampare esattamente N righe di N caratteri, con nuove righe dopo ogni riga. L'immagine deve essere ruotata in modo tale che ogni personaggio nell'originale sia stato sostituito da una versione ruotata e sia stato spostato nella posizione corretta nell'immagine.
Esempi (arte ASCII non molto bella)
Ingresso
5
<- ||
| |V
+->+
|O
<--+
90
Produzione
^ +-^
| | |
| V
+-+--
O <-
(Le rotazioni di 90 e 270 non sembreranno molto buone perché i personaggi non sono quadrati)
Ingresso
6
+ /\ +
| \ \|
( \/|
\ )
I \ /
:) V $
180
Produzione
$ ^ (:
/ \ I
( \
|/\ )
|\ \ |
+ \/ +
Personaggi supportati richiesti
Per tutte le rotazioni (90, 180 e 270), il programma dovrebbe essere in grado di ruotare:
- Spaces,
+,@,XeOche non è mai il cambiamento V><^|-e\/(ruotati di 180 rimangono gli stessi)
Per una rotazione di 180 gradi, questi caratteri aggiuntivi devono essere supportati
INZ%:0=S~$#che rimangono gli stessiPd,(),[],{},MW, E96
P d, ( ), [ ], { }, M W, and 9 6può mai essere ruotato di 90º o 270º?
v, che non sono caratteri supportati. Suppongo che doveva essere in maiuscoloV. Inoltre, l'ultima riga al suo interno non è imbottita per essere lunga 5 caratteri.