Les identicons sont des représentations visuelles de valeurs de hachage, souvent réalisées à partir d'arrangements symétriques de formes géométriques. Votre avatar Stack Exchange par défaut est un identicon. Ce défi consiste à créer des "wordenticons" , de simples versions d'identicons textuelles qui s'appliquent aux chaînes de lettres minuscules, c'est-à-dire des mots.
Défi
Ecrivez un programme ou une fonction qui prend une chaîne S et affiche son wordenticon. Il est garanti que S ne contient pas de vide et ne contient que des lettres minuscules en anglais, az. Vous pouvez éventuellement supposer que S a une nouvelle ligne.
Le wordenticon de S sera une grille carrée de texte avec des côtés 2*length(S)
composés d'espaces (
), de barres verticales ( |
) et de barres horizontales ( ―
).
Pour générer le mot-symbole de S, formez une grille carrée où chaque colonne correspond à une lettre de S (ordre de lecture normal de gauche à droite) et chaque ligne correspond à une lettre de S (ordre de lecture normal de haut en bas). )
Par exemple, si S est food
notre grille initiale ressemble à
food
f....
o....
o....
d....
où .
est juste un espace réservé.
Pour chaque point vide (chaque .
) de la grille:
- Si la lettre de la colonne vient avant la lettre de la ligne par ordre alphabétique, remplacez-la
.
par|
. - Si la lettre de la colonne vient après la lettre de la ligne par ordre alphabétique, remplacez-la
.
par―
. - Si les lettres des colonnes et des lignes sont identiques, remplacez-les
.
par
Voici l' food
exemple après chacune de ces étapes:
Ajout
|
de:food f...| o|..| o|..| d....
Ajout
―
de:food f.――| o|..| o|..| d―――.
Ajout
food f ――| o| | o| | d―――
Pour compléter le wordenticon, supprimez la ligne et la colonne superflues contenant les mots
――|
| |
| |
―――
puis refléter la chose entière horizontalement
――||――
| || |
| || |
――― ―――
et enfin le refléter verticalement
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
résultant en la 2*length(S)
grille de texte de longueur de côté qui est le wordenticon final.
Exemples
Voici quelques exemples de wordenticon supplémentaires. Notez que des mots différents peuvent avoir des libellés identiques et que certains peuvent être entièrement constitués d'espaces (malheureusement, Markdown ne veut pas rendre ceux-ci).
food
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
mood
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
foof
―― ――
| || |
| || |
―― ――
―― ――
| || |
| || |
―― ――
fool
――――――
| || |
| || |
|―― ――|
|―― ――|
| || |
| || |
――――――
a [2*2 grid of spaces]
to
||
― ―
― ―
||
it
――
| |
| |
――
tt [4*4 grid of spaces]
abc
――――
| ―― |
|| ||
|| ||
| ―― |
――――
and
――――
| || |
|― ―|
|― ―|
| || |
――――
but
――――
| || |
|― ―|
|― ―|
| || |
――――
you
||||
― ―― ―
―| |―
―| |―
― ―― ―
||||
bob
― ―
| || |
― ―
― ―
| || |
― ―
cat
|――|
― ―― ―
|| ||
|| ||
― ―― ―
|――|
cart
|――――|
― ―――― ―
|| ―― ||
||| |||
||| |||
|| ―― ||
― ―――― ―
|――――|
todo
||||||
― | | ―
―― ―― ――
― | | ―
― | | ―
―― ―― ――
― | | ―
||||||
mice
||||||
― |||| ―
―― ―― ――
――| |――
――| |――
―― ―― ――
― |||| ―
||||||
zyxw
||||||
― |||| ―
―― || ――
――― ―――
――― ―――
―― || ――
― |||| ―
||||||
banana
|―|―||―|―|
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
|―|―||―|―|
codegolf
――――――――――――――
| ||| |||| ||| |
|― ―――――――――― ―|
|―| ―――――――― |―|
|―|| ――||―― ||―|
| ||| |||| ||| |
|―|||― || ―|||―|
|―||――― ―――||―|
|―||――― ―――||―|
|―|||― || ―|||―|
| ||| |||| ||| |
|―|| ――||―― ||―|
|―| ―――――――― |―|
|― ―――――――――― ―|
| ||| |||| ||| |
――――――――――――――
programming
―||―||||||||||||―||―
| || |||||||||||| || |
―― |―||||||||||||―| ――
――― ―|―――― ――――|― ―――
| || |||||||||||| || |
――――― ―――――――――― ―――――
―――|―| |―||―| |―|―――
―――|―| |―||―| |―|―――
―――|―|―― ―||― ――|―|―――
―――|―|||| || ||||―|―――
――― ―|―――― ――――|― ―――
――― ―|―――― ――――|― ―――
―――|―|||| || ||||―|―――
―――|―|―― ―||― ――|―|―――
―――|―| |―||―| |―|―――
―――|―| |―||―| |―|―――
――――― ―――――――――― ―――――
| || |||||||||||| || |
――― ―|―――― ――――|― ―――
―― |―||||||||||||―| ――
| || |||||||||||| || |
―||―||||||||||||―||―
abcdefghijklm
――――――――――――――――――――――――
| ―――――――――――――――――――――― |
|| ―――――――――――――――――――― ||
||| ―――――――――――――――――― |||
|||| ―――――――――――――――― ||||
||||| ―――――――――――――― |||||
|||||| ―――――――――――― ||||||
||||||| ―――――――――― |||||||
|||||||| ―――――――― ||||||||
||||||||| ―――――― |||||||||
|||||||||| ―――― ||||||||||
||||||||||| ―― |||||||||||
|||||||||||| ||||||||||||
|||||||||||| ||||||||||||
||||||||||| ―― |||||||||||
|||||||||| ―――― ||||||||||
||||||||| ―――――― |||||||||
|||||||| ―――――――― ||||||||
||||||| ―――――――――― |||||||
|||||| ―――――――――――― ||||||
||||| ―――――――――――――― |||||
|||| ―――――――――――――――― ||||
||| ―――――――――――――――――― |||
|| ―――――――――――――――――――― ||
| ―――――――――――――――――――――― |
――――――――――――――――――――――――
Notation
C'est code-golf , le code le plus court en octets gagne. Tiebreaker va à la réponse précédente.
Remarques
- Toute instance de barre horizontale (
―
) dans votre code peut être comptée pour 1 octet au lieu des 3 octets UTF-8 qu’elle occupe réellement. (Jusqu'à dix instances.) - Si vous le souhaitez, vous pouvez utiliser des tirets ordinaires (
-
) à la place des barres horizontales (―
). - La suppression ou l'ajout d'espaces de fin dans les lignes d'un wordenticon n'est pas autorisée (même si la forme reste inchangée). Il devrait s'agir d'un
2*length(S)
carré de texte de longueur de côté exacte . - Le wordenticon en sortie peut éventuellement avoir une seule nouvelle ligne.
programming
, and
et codegolf
mais vous avez oublié puzzles
...