Ver también: Wordagons
Desafío
Dado un hexágono y un número n
como entrada, genera el mismo hexágono rotado n
veces.
Hexágono
El hexágono será una cadena así:
a b c
d d e e
f f o g g
h h i i
j k l
El hexágono siempre será regular y solo contendrá los caracteres ASCII imprimibles:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Rotación
Para saber cuánto girar el hexágono, multiplique n
por 60 grados para obtener el ángulo de rotación. Por ejemplo, usando el hexágono anterior, si n
es 2, multiplicamos eso por 60 para obtener 120 grados. Luego, rotamos el hexágono 120 grados:
j h f
k h f d
l i o d a
i g e b
g e c
Tenga en cuenta que cada lado se ha movido dos lados en sentido horario.
Si n
es positivo, debe girar el hexágono en sentido horario. Si n
es negativo, debe girar el hexágono en sentido antihorario.
n
siempre será un número entero en el rango de -6 a 6 inclusive.
Ejemplos
Entrada:
. u .
. | .
l - + - r
. | .
. d .
n
= 3
. d .
. | .
r - + - l
. | .
. u .
Entrada:
- - -
/ \
< >
\ /
- - -
n
= -1
Salida:
- \ >
- /
- -
/ -
< \ -
Entrada:
h e x a
g o n s a
n d t r i a
n g l e s m a
k e m e s a
d l y m a
d d e r
n
= 6
Salida:
h e x a
g o n s a
n d t r i a
n g l e s m a
k e m e s a
d l y m a
d d e r
Victorioso
El programa más corto en bytes gana.
fuente
transform:rotate(x)
. Resulta que no era una idea brillante, ¿quién lo hubiera sabido?Respuestas:
Perl,
120119113107104102 bytesIncluye +6 para
-0pXi
Corre con el hexágono en STDIN (rellenado con espacios para que todas las líneas tengan la misma longitud) y el número de rotaciones después de -i.
rotagon.pl
Finalmente conseguí que la matriz de rotación fuera más corta que el viejo doble bucle
fuente
a
yn
para que esto funcione.-F
implica-a
y-a
a su vez implica-n
Python 2,
160158156148124 bytes¡Prepárate para sorprenderte! El texto resultante se dibuja en un lienzo ... por a
Turtle
! :REPruébelo en línea : ¡también admite rotaciones decimales!
Si prefiere que la tortuga tenga la forma de una, puede agregar la línea
t.shape("turtle")
.Ver el historial de revisiones para ver versiones anteriores.
Alias utilizados :
up()
-penup()
rt()
-right()
lt()
-left()
fd()
-forward()
bk()
-backward()
¡Gracias a Sherlock9 por las sugerencias !
fuente
t.write('\n')
funcionara ...t.up()
, estaría allí.Python 2.7, 151 bytes
Ejemplo:
fuente
Javascript (ES6),
130127 bytesOriginalmente basado en mi respuesta a Rotar un mosaico de diamantes, aunque ahora podría reescribir esa respuesta en la línea de esta respuesta.
fuente