Los identicones son representaciones visuales de valores hash, a menudo hechos de arreglos simétricos de formas geométricas. Tu avatar predeterminado de Stack Exchange es un identicon. Este desafío se trata de crear "wordenticons" , versiones simples basadas en texto de identicons que se aplican a cadenas de letras minúsculas, es decir, palabras.
Desafío
Escriba un programa o función que tome una cadena S y genere su icono de wordent. Se garantiza que S no está vacío y solo contiene letras minúsculas en inglés az. Opcionalmente, puede suponer que S tiene una nueva línea final.
El icono de wordent de S será una cuadrícula de texto cuadrada con longitudes laterales 2*length(S)
compuestas de espacios (
), barras verticales, ( |
) y barras horizontales ( ―
).
Para generar el icono de wordent de S, forme una cuadrícula cuadrada donde cada columna corresponda a una letra de S (en el orden normal de lectura de izquierda a derecha) y cada fila corresponda a una letra de S (en el orden normal de lectura de arriba a abajo )
Por ejemplo, si S es food
nuestra cuadrícula inicial se ve así
food
f....
o....
o....
d....
donde .
es solo un marcador de posición.
Para cada punto vacío (cada .
) en la cuadrícula:
- Si la letra de la columna viene antes de la letra de la fila alfabéticamente, reemplace la
.
con|
. - Si la letra de la columna viene después de la letra de la fila alfabéticamente, reemplace la
.
con―
. - Si las letras de columna y fila son iguales, reemplace
.
con
Aquí está el food
ejemplo después de cada uno de estos pasos:
Agregando
|
:food f...| o|..| o|..| d....
Agregando
―
:food f.――| o|..| o|..| d―――.
Agregando
food f ――| o| | o| | d―――
Para completar el icono de wordenticon, elimine la fila y columna superfluas que contienen las palabras
――|
| |
| |
―――
luego refleja todo en horizontal
――||――
| || |
| || |
――― ―――
y finalmente reflejarlo nuevamente verticalmente
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
dando como resultado la 2*length(S)
cuadrícula de texto de longitud lateral que es el icono de wordent final.
Ejemplos
Aquí hay algunos ejemplos adicionales de wordenticon. Tenga en cuenta que diferentes palabras pueden tener wordenticons idénticos y algunos wordenticons pueden estar completamente hechos de espacios (desafortunadamente, la rebaja no quiere representarlos).
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
――――――――――――――――――――――――
| ―――――――――――――――――――――― |
|| ―――――――――――――――――――― ||
||| ―――――――――――――――――― |||
|||| ―――――――――――――――― ||||
||||| ―――――――――――――― |||||
|||||| ―――――――――――― ||||||
||||||| ―――――――――― |||||||
|||||||| ―――――――― ||||||||
||||||||| ―――――― |||||||||
|||||||||| ―――― ||||||||||
||||||||||| ―― |||||||||||
|||||||||||| ||||||||||||
|||||||||||| ||||||||||||
||||||||||| ―― |||||||||||
|||||||||| ―――― ||||||||||
||||||||| ―――――― |||||||||
|||||||| ―――――――― ||||||||
||||||| ―――――――――― |||||||
|||||| ―――――――――――― ||||||
||||| ―――――――――――――― |||||
|||| ―――――――――――――――― ||||
||| ―――――――――――――――――― |||
|| ―――――――――――――――――――― ||
| ―――――――――――――――――――――― |
――――――――――――――――――――――――
Puntuación
Este es el código de golf , gana el código más corto en bytes. Tiebreaker va a la respuesta anterior.
Notas
- Cualquier instancia de barra horizontal (
―
) en su código puede contarse como 1 byte en lugar de los 3 bytes UTF-8 que realmente ocupa. (Hasta diez instancias). - Si lo desea, puede usar guiones regulares (
-
) en lugar de barras horizontales (―
). - No está permitido eliminar o agregar espacios finales en las líneas de un icono de gusano (incluso si la forma permanece sin cambios). Debe ser un
2*length(S)
cuadrado de texto de longitud lateral exacta . - El icono de salida de salida puede tener opcionalmente una nueva línea final.
programming
, and
y codegolf
aunque se le olvidó puzzles
...