Aus allen ASCII-Zeichen ist leicht zu ersehen, dass einige von ihnen Gruppen bilden, bei denen es sich um Rotationen desselben Grundzeichens handelt. Zum Beispiel V > ^ <
. Dies ermöglicht die Erstellung von ASCII-Grafiken, die um ein Vielfaches von 90 Grad gedreht werden können und dennoch ASCII-Grafiken bleiben.
Die Herausforderung
Ihr Ziel ist es, ein Programm zu entwickeln, das ASCII-Grafiken und die Anzahl der Grad akzeptiert, um diese von STDIN zu drehen, und die gedrehten ASCII-Grafiken an STDOUT zu drucken.
In der ersten Eingabezeile erhält Ihr Programm die Nummer N. Diese Nummer steht für die Breite und Höhe der ASCII-Grafik.
Sie erhalten dann N weitere Zeilen mit jeweils genau N Zeichen (die neue Zeile wird bei dieser Nummer nicht mitgezählt). Die Größe der Kunst wird immer ein Quadrat sein, obwohl sie möglicherweise ein Auffüllen in Form von Leerzeichen aufweist, um ein Quadrat zu bilden.
Sie erhalten dann eine weitere Zahl in einer letzten Zeile: 90, 180 oder 270. Dies gibt an, um wie viel Grad das Bild im Uhrzeigersinn gedreht werden soll.
Hinweis: Das eingegebene Bild enthält nur Zeichen, die um den richtigen Betrag gedreht werden können. Wenn die Eingabe nicht genau diesen Anforderungen entspricht, ist kein bestimmtes Verhalten erforderlich.
Als Ausgabe sollte Ihr Programm genau N Zeilen mit N Zeichen mit Zeilenumbrüchen nach jeder Zeile ausgeben. Das Bild sollte gedreht werden, damit jedes Zeichen im Original durch eine gedrehte Version ersetzt und an die richtige Stelle im Bild verschoben wird.
Beispiele (nicht sehr schöne ASCII-Kunst)
Eingang
5
<- ||
| |V
+->+
|O
<--+
90
Ausgabe
^ +-^
| | |
| V
+-+--
O <-
(Drehungen um 90 und 270 sehen nicht besonders gut aus, da die Zeichen keine Quadrate sind.)
Eingang
6
+ /\ +
| \ \|
( \/|
\ )
I \ /
:) V $
180
Ausgabe
$ ^ (:
/ \ I
( \
|/\ )
|\ \ |
+ \/ +
Erforderliche unterstützte Zeichen
Für alle Umdrehungen (90, 180 und 270) sollte das Programm in der Lage sein, sich zu drehen:
- Spaces,
+
,@
,X
undO
die nie ändern V
>
<
^
|
-
und\
/
(um 180 gedreht bleiben sie gleich)
Für eine 180-Grad-Drehung müssen diese zusätzlichen Zeichen unterstützt werden
I
N
Z
%
:
0
=
S
~
$
#
die gleich bleibenP
d
,(
)
,[
]
,{
}
,M
W
, Und9
6
P d, ( ), [ ], { }, M W, and 9 6
kann jemals um 90º oder 270º gedreht werden?
v
, bei dem es sich nicht um ein unterstütztes Zeichen handelt. Ich nehme an, es sollte ein Großbuchstabe seinV
. Außerdem ist die letzte Zeile nicht mit 5 Zeichen aufgefüllt.