Aux fins du défi actuel de "tracer" un mot, il faut l'entourer successivement de ses propres lettres, en commençant par la dernière, et enfin remplacer le mot d'origine au centre par des espaces:
oooooo
onnnno
on -> on no
onnnno
oooooo
Tâche:
À partir d'une liste de mots, composée uniquement de lettres anglaises minuscules et / ou majuscules, décrivez chaque mot et affichez tous les blocs résultants côte à côte horizontalement, séparés par une colonne d'espace unique, alignés verticalement au centre des blocs.
Vous pouvez écrire un programme complet ou une fonction.
Contribution:
Une liste de mots, ou si vous préférez - une chaîne délimitée par des espaces ou d'autres symboles
Production:
La représentation ASCII des blocs pour les mots soulignés. Les espaces blancs avant / arrière sont autorisés.
Cas de test:
Input 1: ["code", "golf"] (or "code golf")
Output 1:
cccccccccccc gggggggggggg
cooooooooooc goooooooooog
coddddddddoc gollllllllog
codeeeeeedoc golfffffflog
code edoc golf flog
codeeeeeedoc golfffffflog
coddddddddoc gollllllllog
cooooooooooc goooooooooog
cccccccccccc gggggggggggg
Input 2: ["I", "am", "just", "a", "man"] (or "I am just a man")
Output 2:
jjjjjjjjjjjj
juuuuuuuuuuj mmmmmmmmm
aaaaaa jussssssssuj maaaaaaam
III ammmma justtttttsuj aaa mannnnnam
I I am ma just tsuj a a man nam
III ammmma justtttttsuj aaa mannnnnam
aaaaaa jussssssssuj maaaaaaam
juuuuuuuuuuj mmmmmmmmm
jjjjjjjjjjjj
Critères gagnants:
Le code le plus court en octets dans chaque langue gagne. J'apprécierai grandement si vous commentez / expliquez votre code et votre approche.
Réponses:
Toile ,
2220 octetsEssayez-le ici!
Explication:
la source
Fusain , 35 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Faites une boucle sur la liste d'entrée.
Obtenez la longueur du mot actuel.
Déplacez-vous dans le coin supérieur gauche du contour résultant.
Boucle une fois pour chaque personnage.
Dessinez une boîte de la hauteur, de la largeur et du caractère appropriés.
Déplacez-vous dans le coin supérieur gauche de la case suivante.
Passez au contour suivant.
la source
Haskell ,
188183174 174171167 octets-9-13 octets grâce à Laikoni .Essayez-le en ligne!
la source
\a->and[p a>=p x|x<-f<$>w]
peut être\a->all((p a>=).p)$f<$>w
etk c=(++[c]).(c:)
peut êtrek c s=c:s++[c]
.Pyth,
3433 octetsEssayez-le en ligne.
Vide tout un tas d'espaces supplémentaires, mais cela est permis par le défi.
Explication
m
…Q
Fait ce qui suit pour chaque motd
de l'entréeQ
:m\ d
mappe le mot avecx => " "
, créant essentiellement la liste[" ", ..., " "]
avec autant d'éléments que le mot a de lettres..idd
entrelace le mot avec lui-même, répétant les lettres du mot deux fois._
inverse cette chaîne.word
devientddrrooww
.u
commence parG
= le tableau d'espaces et applique ce qui suit à chaque lettre de la chaîne entrelacée dansH
:*2H
répète le caractère deux fois.jR
…G
Place chaque chaîneG
entre la paire de caractères.C
échange des lignes et des colonnes. Lorsque ces trois étapes sont effectuées deux fois avec le même caractère dansH
, cela décrit les lignesG
avec ce caractère.d
.+;
ajoute une colonne d'espace.s
aplatit le tableau de colonnes pour chaque mot et l'J
enregistre dans la variableJ
.m
…J
Fait ce qui suit pour chaque colonne de la sortie:.[lJd;
remplit les deux côtés de la colonne avec des espaces de sorte que la longueur de la colonne soit égale au nombre de colonnes. Il s'agit toujours d'un remplissage suffisant pour aligner verticalement les colonnes.C
transforme les colonnes en lignes etj
joint les lignes avec des retours à la ligne.Solution alternative, 33 octets
Essayez-le en ligne.
Notez qu'il y a un espace de fin. Généralement le même algorithme, sauf uniquement les colonnes de tampons en haut, puis transposées avec un remplissage d'espace.
la source
R , 189 octets
Essayez-le en ligne!
Une collaboration entre digEmAll et moi dans le chat .
la source
APL (Dyalog Classic) ,
575150 octetsEssayez-le en ligne!
la source
Stax ,
2625 octetsExécuter et déboguer
la source
05AB1E , 46 octets
Pas trop content, mais je suis content que ça marche.
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
la source