Eingang:
Ein Faden
Ausgabe:
1) Zuerst entfernen wir das Zeichen am Ende der Eingabe-Zeichenkette, bis wir eine Länge haben, die ein Quadrat ist (dh 1, 4, 9, 16, 25, 36 usw.).
Also abcdefghijklmnopqrstuvwxyz(Länge 26) wird abcdefghijklmnopqrstuvwxy( Länge 25).
2) Dann setzen wir dies in ein Quadrat, eine Zeile nach der anderen, von links nach rechts:
abcde
fghij
klmno
pqrst
uvwxy
3) Wir falten es in alle vier Richtungen (wir entfalten solange, bis der äußere gefaltete 'Block' keine inneren Zeichen mehr hat, die sich entfalten könnten):
m
qrs
l n
ghi
abcde
ihgf jihg
mn lk on lm
srqp tsrq
uvwxy
qrs
l n
ghi
m
Einige Dinge, die zu beachten sind, wenn wir nach außen klappen, spiegeln wir im Grunde wie folgt wider (Zahlen zur Verdeutlichung hinzugefügt, die die 'Indizes' in diesen Beispielen darstellen):
Wenn wir die linke Seite ausklappen:
123 to: 321 123
fghij ihgf j
Wenn wir die rechte Seite falten:
123 to: 123 321
fghij f jihg
Wenn wir nach oben klappen:
3q
2l
1g
b to: b
1g 1
2l 2
3q 3
v v
Wenn wir nach unten klappen:
b b
1g 1
2l 2
3q 3
v to: v
3q
2l
1g
Herausforderungsregeln:
- Sie können davon ausgehen, dass die Eingabe immer mindestens 1 Zeichen hat (dies ist auch die Ausgabe).
- Das Ausgabeformat ist flexibel, sodass Sie auf STDOUT oder STDERR drucken können. Rückgabe als String-Array / Liste oder Zeichen-2D-Array; Einzelsaite mit Zeilenumbrüchen; etc.
- Die Eingabe enthält nur alphanumerische Zeichen (
a-zA-Z0-9) - Sie können auch ein nicht alphanumerisches Zeichen verwenden, um die Leerzeichen in und / oder um die ASCII-Kunst-Ausgabe herum aufzufüllen, wie z
.. B. einen Punkt . - Nachgestellte Leerzeichen und eine einzelne nachgestellte neue Zeile sind optional.
- Wir setzen die Entfaltung fort, bis der äußere gefaltete 'Block' keine Zentren mehr zum Entfalten hat.
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu.
- Fügen Sie ggf. auch eine Erklärung hinzu.
Testfälle:
Input: abcdefghijklmnopqrstuvwxy
Output:
m
qrs
l n
ghi
abcde
ihgf jihg
mn lk on lm
srqp tsrq
uvwxy
qrs
l n
ghi
m
Input: A
Ouput:
A
Input: ThisIsATest
Output:
I
Thi
Is sI
ATe
I
Input: HowAboutAVeryLongExampleWhichIsAlsoAnEvenSquareInsteadOfOddOneAndExceeds64Chars
Output:
An
ch
xamp
i I
o E
quar
steadO
S e
s v
h s
E l
VeryLo
HowAbout
oLyreVA noLyreV
xampl Eg el Examp
hci Is hW As hi Ihc
nAo Ev sl ev so EnA
quare Sn Ie Squar
Odaetsn fOdaets
OddOneAn
steadO
S e
s v
h s
E l
VeryLo
xamp
i I
o E
quar
An
ch
Input: Lenght7
Output:
Le
ng
Input: abc
Output:
a