De tous les caractères ASCII, il est facile de dire que certains d'entre eux forment des groupes qui sont des rotations du même caractère de base. Par exemple V > ^ <,. Cela permet la possibilité de construire de l'art ASCII qui peut être tourné par multiples de 90 degrés et qui reste toujours de l'art ASCII.
Le défi
Votre objectif est de jouer à un programme qui accepte l'art ASCII et le nombre de degrés pour le faire pivoter depuis STDIN, et imprime l'art ASCII tourné vers STDOUT.
Sur la première ligne de saisie, votre programme recevra un numéro N. Ce nombre représente la largeur et la hauteur de l'art ASCII.
Vous recevrez alors N lignes supplémentaires d'exactement N caractères chacune (la nouvelle ligne n'est pas comptée dans ce nombre). La taille de l'art sera toujours un carré, bien qu'elle puisse avoir un rembourrage sous forme d'espaces pour en faire un carré.
Vous recevrez alors un autre numéro sur une dernière ligne: 90, 180 ou 270. Cela représente le nombre de degrés dans le sens horaire que l'image doit pivoter.
Remarque: L'image entrée ne contiendra que des caractères pouvant être tournés de la bonne quantité. Si l'entrée ne correspond pas exactement à ces exigences, aucun comportement spécifique n'est requis.
En sortie, votre programme doit imprimer exactement N lignes de N caractères, avec des retours à la ligne après chaque ligne. L'image doit être pivotée de sorte que chaque caractère de l'original ait été remplacé par une version pivotée et a été déplacé au bon endroit dans l'image.
Exemples (pas très beau art ASCII)
Contribution
5
<- ||
| |V
+->+
|O
<--+
90
Production
^ +-^
| | |
| V
+-+--
O <-
(Les rotations de 90 et 270 ne seront pas très bonnes car les personnages ne sont pas des carrés)
Contribution
6
+ /\ +
| \ \|
( \/|
\ )
I \ /
:) V $
180
Production
$ ^ (:
/ \ I
( \
|/\ )
|\ \ |
+ \/ +
Caractères pris en charge requis
Pour toutes les rotations (90, 180 et 270), le programme doit pouvoir tourner:
- Espaces,
+,@,XetOqui ne changera jamais V><^|-et\/(tourné de 180, ils restent les mêmes)
Pour une rotation à 180 degrés, ces caractères supplémentaires doivent être pris en charge
INZ%:0=S~$#qui restent les mêmesPd,(),[],{},MWEt96
P d, ( ), [ ], { }, M W, and 9 6peut jamais être tourné à 90º ou 270º?
v, qui n'est pas un caractère pris en charge. Je suppose que c'était censé être une majusculeV. De plus, la dernière ligne ne contient pas 5 caractères.