Ver también: rotatagones
Reto
Dada una cadena como entrada, genera su wordagon.
Wordagons
Un wordagon es una forma de representar una cadena en un hexágono. Ahora, creemos un wordagon a partir de la cadena hexa
:
En primer lugar, comienza con el primer carácter de la cadena y colóquelo en el centro:
h
Luego, toma el siguiente carácter en la cadena y agrega una capa hexagonal:
e e
e h e
e e
Luego, agregue la siguiente capa:
x x x
x e e x
x e h e x
x e e x
x x x
Finalmente, agregue la última capa:
a a a a
a x x x a
a x e e x a
a x e h e x a
a x e e x a
a x x x a
a a a a
Y ahora tienes el wordagon para la cuerda hexa
.
Ejemplos
Aquí hay algunos que preparé antes:
hello
o o o o o
o l l l l o
o l l l l l o
o l l e e l l o
o l l e h e l l o
o l l e e l l o
o l l l l l o
o l l l l o
o o o o o
PPcg
g g g g
g c c c g
g c P P c g
g c P P P c g
g c P P c g
g c c c g
g g g g
o *
* * *
* *
* o *
* *
* * *
(T_T)
) ) ) ) )
) T T T T )
) T _ _ _ T )
) T _ T T _ T )
) T _ T ( T _ T )
) T _ T T _ T )
) T _ _ _ T )
) T T T T )
) ) ) ) )
Tenga en cuenta que las líneas nuevas finales y / o iniciales están permitidas.
Victorioso
El código más corto en bytes gana.
code-golf
ascii-art
hexagonal-grid
Decaimiento Beta
fuente
fuente
Respuestas:
Pyth - 29 bytes
Test Suite .
fuente
Python 2, 83 bytes
Imprime el wordagon y luego se bloquea (que solo se imprime en STDERR).
Ejemplo:
xnor ahorró 5 bytes. ¡Gracias!
fuente
y
's haciendon=len(s)\nwhile 1:n-=1;y=abs(n);...
y terminando con un error.Vim, 92 bytes
Las letras en círculo representan Control+ letra; ␛ es escapar.
fuente
@q
causa un bucle infinito. Funciona perfectamente si se elimina.Mathematica
100219 bytesSi ASCII-Art no necesita ser Terminal-Art, esto debería ser válido.
Mi sumisión anterior dibujó por error una estrella en lugar de un hexágono. ¡No puedo ver cómo estaba tan apagado!
CirclePoints@6
devuelve los vértices de una unidad de hexágono, suponiendo que el centro está en el origen.Subdivide
Al combinar las coordenadas de los vértices vecinos se encuentran posiciones igualmente espaciadas a lo largo del borde respectivo.Un contador desde 1 hasta la
StringLength -1
cadena de entrada permite que cada capa del wordagon se maneje por separado.A medida que
n
aumenta, también lo hace la distancia respectiva de cada vértice desde el origen.Text[s~StringPart~1,{0,0}]
imprime la primera letra de la entrada en el origen.f @ "Wordagon"
Para los curiosos, así es como se veía la versión estrella. Yo sé, que era camino de la verdad. Solo mostraba las letras en los vértices del hexágono.
fuente
Ruby, 82 bytes
itera
1-n..n-1
en ambas direcciones i = y y j = x. Sin los espacios iniciales en cada línea, la salida se ve como la siguiente, como resultado de elegir un carácter dels
índice[[i.abs+j,i.abs,-j].max]
. Agregar espacios iniciales forma el hexágono requerido.Sin golf en el programa de prueba
Salida típica
fuente
JavaScript (ES6), 118 bytes
Donde
\n
representa el carácter literal de nueva línea. Basado en mi respuesta al desafío de arte ASCII hexplosivo, aunque algunas partes de la solución se parecen a la respuesta de Ruby de @ LevelRiverSt. Los diversos componentes delMath.max
producen la siguiente salida paral=3
:Se toma el valor máximo y
l
se eliminan los valores mayores que , produciendo así la forma del hexágono, mientras que los valores restantes se asignan a caracteres de la cadena:fuente
05AB1E , 31 bytes
Explicación
Utilizando simetría para generar solo la parte superior del hexágono,
luego reflejando eso para formar la parte inferior.
Pruébalo en línea!
fuente
Python 2, 104 bytes
fuente
PHP - 202 bytes
Uso desde la línea de comando:
por ejemplo:
Test Suite .
fuente