Einführung
Die Karte des Bäckers ist ein wichtiges dynamisches System, das chaotisches Verhalten aufweist. Es ist eine Funktion vom Einheitsquadrat bis zu sich selbst, die intuitiv wie folgt definiert wird.
- Schneiden Sie das Quadrat vertikal in zwei Hälften, um zwei Rechtecke zu erhalten
0.5×1
. - Stapeln Sie die rechte Hälfte über die linke, so dass ein Rechteck entsteht
0.5×2
- Komprimiere das Rechteck wieder zu einem
1×1
Quadrat.
In dieser Herausforderung implementieren Sie eine diskrete Version dieser Umwandlung.
Ein- und Ausgang
Bei Ihrer Eingabe handelt es sich um ein 2D-Array druckbarer ASCII-Zeichen und 2m×2n
bei einigen um Leerzeichen m, n > 0
. Ihre Ausgabe ist ein ähnliches Array, das mithilfe des 6×4
Arrays wie folgt erhalten wird
ABCDEF
GHIJKL
MNOPQR
STUVWX
als Beispiel. Stapeln Sie zuerst die rechte Hälfte des Arrays über die linke Hälfte:
DEF
JKL
PQR
VWX
ABC
GHI
MNO
STU
Teilen Sie dann die Spalten in Zeichenpaare auf und drehen Sie jedes Paar unabhängig voneinander um 90 Grad im Uhrzeigersinn, um das hohe Rechteck wieder in die ursprüngliche Form zu "komprimieren":
JDKELF
VPWQXR
GAHBIC
SMTNUO
Dies ist die korrekte Ausgabe für das obige Array.
Regeln
Die Eingabe- und Ausgabeformate sind flexibel. Sie können durch Zeilenumbrüche getrennte Zeichenfolgen, Listen von Zeichenfolgen oder 2D-Arrays von Zeichen verwenden. Die Eingabe und Ausgabe müssen jedoch genau dasselbe Format haben: Sie müssen in der Lage sein, Ihre Eingabe beliebig oft für eine gültige Eingabe zu wiederholen.
Sie können entweder ein vollständiges Programm oder eine Funktion schreiben. Die niedrigste Byteanzahl gewinnt, und Standardlücken sind nicht zulässig.
Testfälle
Input:
12
34
Output:
42
31
Input:
Hell
! o
d -
lroW
Output:
lol
o W-
!H e
ldr
Input:
ABCDEF
GHIJKL
MNOPQR
STUVWX
Output:
JDKELF
VPWQXR
GAHBIC
SMTNUO
Input:
*___ ___ o
o|__) |__) *
*| | o
o __ __ *
*| | _ o
o|__ |__| *
Output:
|_____) *o
|_ _ *o
||_ __| *o
o*|_____)
o* |_ _
o*||_ _