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