Étant donné une chaîne d'entrée de longueur 2
ou plus composée uniquement de caractères alphabétiques [A-Z]
ou [a-z]
(votre choix s'ils sont tous en majuscules ou tout en minuscules), sortez une chaîne continue de caractères formant un motif double losange.
La chaîne d'entrée commence sur la ligne centrale et s'étend vers le bas et la droite en diagonale jusqu'à ce que la fin de la chaîne d'entrée soit atteinte. Ensuite, le motif continue de haut en bas sur une diagonale jusqu'à ce que vous soyez aussi loin au-dessus de la ligne médiane que la longueur de la chaîne d'entrée moins 1. Continuez de bas en haut jusqu'à la ligne médiane, puis de bas en haut. gauche, puis en haut et à gauche (en allant "derrière" le caractère central), et enfin en bas et à gauche jusqu'au caractère de départ.
C'est un peu verbeux, et c'est mieux démontré par quelques exemples:
"YOU"
U Y
Y O U O
Y O U
O Y U Y
U O
^ ^
↙ ↖ ↗ ↘
↘ ↗ >
↘ ↗ ↖ ↙
V V
Voyez comment YOU
commence la ligne médiane et suit de bas en haut, puis de haut en bas, etc., jusqu'à ce qu'elle revienne au début. Notez en particulier comment la Y
partie supérieure et gauche est "derrière" la O
et donc non représentée.
Quelques exemples supplémentaires:
"HI"
I I
H H H
I I
"TEST"
E E
S T T S
T T T T
T S T
E E E E
S T T S
T T
"HELLO"
L L
O L E L
H E H O
E H O H
H L E
E L L L
L E L L
L H E O
O H
- L'entrée et la sortie peuvent être fournies par n'importe quelle méthode pratique .
- L'entrée est garantie sur au moins deux lettres (c'est-à-dire que vous ne recevrez jamais
""
en entrée). - Vous pouvez l'imprimer sur STDOUT ou le renvoyer en tant que résultat de fonction.
- Un programme complet ou une fonction sont acceptables.
- N'importe quelle quantité d'espace blanc étranger est acceptable, tant que les caractères s'alignent de manière appropriée (par exemple, n'hésitez pas à remplir comme un rectangle).
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
Réponses:
Fusain , 17 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Tracez le long d'un chemin.
Dessinez dans les directions ↘↗↗↘↙↖↖↙ (les
<
et>
sont des raccourcis pour ces deux paires, mais les autres paires n'ont pas de raccourcis.)Chaque segment de chemin a la même longueur, y compris les extrémités, de la longueur de l'entrée.
Utilisez l'entrée comme texte à écrire le long du chemin.
Imprimez à nouveau les deux premières parties du chemin afin que le caractère du milieu soit correct.
la source
05AB1E , 12 octets
Essayez-le en ligne!
la source
1, 3, 3, 1, 7, 5, 5, 7
?JavaScript (ES6),
157 155154 octetsRenvoie une matrice de caractères.
Essayez-le en ligne!
Comment?
L'index de base 0 du caractère central qui doit être ignoré en forme de losange est:
Commenté
la source
JavaScript (ES6), 136 octets
Renvoie un tableau à deux dimensions. Fonctionne en dessinant la chaîne dans le tableau en calculant directement les coordonnées de destination en travaillant vers l'arrière à partir de la fin afin que la cellule centrale soit automatiquement remplacée. Explication:
Chaîne d'entrée.
Distance entre les "rebonds", également la moitié de l'index de la dernière ligne et une de moins que la longueur.
Index de la dernière colonne, également la moitié de la longueur du texte à dessiner.
Tableau d'espaces.
Compte à rebours de la dernière cellule à la première.
Appel récursif pour traiter les cellules restantes.
Calculez la ligne de cette cellule.
Calculez la colonne de cette cellule et le caractère qui y appartient.
Terminez en renvoyant le tableau.
Commencez à la fin du texte.
la source
J ,
797775 octetsEssayez-le en ligne!
la source
C (bruit) ,
201196188 octetsEssayez-le en ligne!
-13 @ceilingcat suggestions
la source
Python 2 , 137 octets
Essayez-le en ligne!
Un programme complet qui prend une chaîne en entrée pour imprimer la version diamantée.
la source