Contribution:
Un string
Production:
1) D'abord, nous prenons le caractère de suppression à la fin de la chaîne d'entrée jusqu'à ce qu'il nous reste une longueur qui est un carré (c'est-à-dire 1, 4, 9, 16, 25, 36, etc.)
Donc abcdefghijklmnopqrstuvwxyz
(la longueur 26) devient abcdefghijklmnopqrstuvwxy
( longueur 25).
2) Ensuite, nous mettons cela dans un carré, une ligne à la fois, de gauche à droite:
abcde
fghij
klmno
pqrst
uvwxy
3) Nous le plions dans les quatre directions, comme ceci (nous continuons à déplier jusqu'à ce que le `` bloc '' plié extérieur n'ait plus de caractères intérieurs à déplier):
m
qrs
l n
ghi
abcde
ihgf jihg
mn lk on lm
srqp tsrq
uvwxy
qrs
l n
ghi
m
Certaines choses à noter, lorsque nous nous replions vers l'extérieur, nous reflétons essentiellement comme ceci (les chiffres ajoutés à titre de clarification, qui représentent les `` index '' dans ces exemples):
Lorsque nous déplions le côté gauche:
123 to: 321 123
fghij ihgf j
Lorsque nous replions le côté droit:
123 to: 123 321
fghij f jihg
Lorsque nous nous replions vers le haut:
3q
2l
1g
b to: b
1g 1
2l 2
3q 3
v v
Lorsque nous nous replions vers le bas:
b b
1g 1
2l 2
3q 3
v to: v
3q
2l
1g
Règles du défi:
- Vous pouvez supposer que l'entrée aura toujours au moins 1 caractère (qui sera également la sortie).
- Le format de sortie est flexible, vous pouvez donc imprimer sur STDOUT ou STDERR; renvoyer sous forme de tableau / liste de chaînes ou de tableau 2D de caractères; chaîne unique avec des nouvelles lignes; etc.
- L'entrée ne contiendra que des caractères alphanumériques (
a-zA-Z0-9
) - Vous pouvez également utiliser un caractère non alphanumérique pour remplir les espaces dans et / ou autour de la sortie ASCII-art, comme un point
.
. - Les espaces de fin et une seule nouvelle ligne de fin sont facultatifs.
- Nous continuons à déplier jusqu'à ce que le «bloc» plié extérieur n'ait plus de centres à déplier.
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues non-golfeur de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse, vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code.
- Veuillez également ajouter une explication si nécessaire.
Cas de test:
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