Veja também: Wordagons
Desafio
Dado um hexágono e um número n
como entrada, produza os mesmos n
tempos de rotação do hexágono .
Hexágono
O hexágono será uma string assim:
a b c
d d e e
f f o g g
h h i i
j k l
O hexágono sempre será regular e sempre conterá apenas os caracteres ASCII imprimíveis:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Rotação
Para descobrir quanto girar o hexágono, multiplique n
por 60 graus para obter o ângulo de rotação. Por exemplo, usando o hexágono acima, se n
for 2, multiplicamos por 60 para obter 120 graus. Em seguida, giramos o hexágono em 120 graus:
j h f
k h f d
l i o d a
i g e b
g e c
Observe que cada lado se moveu dois lados no sentido horário.
Se n
for positivo, você deve girar o hexágono no sentido horário. Se n
for negativo, você deve girar o hexágono no sentido anti-horário.
n
sempre será um número inteiro no intervalo de -6 a 6, inclusive.
Exemplos
Entrada:
. u .
. | .
l - + - r
. | .
. d .
n
= 3
. d .
. | .
r - + - l
. | .
. u .
Entrada:
- - -
/ \
< >
\ /
- - -
n
= -1
Resultado:
- \ >
- /
- -
/ -
< \ -
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
Resultado:
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
Ganhando
O programa mais curto em bytes vence.
fonte
transform:rotate(x)
. Acontece que não era uma ideia brilhante, quem saberia?Respostas:
Perl,
120119113107104102 bytesInclui +6 para
-0pXi
Corra com o hexágono no STDIN (preenchido com espaços para que todas as linhas tenham o mesmo comprimento) e o número de rotações após -i.
rotagon.pl
Finalmente, a matriz de rotação é mais curta que o antigo loop duplo
fonte
a
en
para que isso funcionasse.-F
implica-a
e-a
por sua vez implica-n
Python 2,
160158156148124 bytesPrepare-se para se surpreender! O texto resultante é desenhado em uma tela ... por a
Turtle
! : DExperimente online - Também suporta rotações decimais!
Se você preferir que a tartaruga tenha o formato de uma, você pode adicionar a linha
t.shape("turtle")
.Veja o histórico de revisões para ver versões anteriores.
Aliases usados :
up()
-penup()
rt()
-right()
lt()
-left()
fd()
-forward()
bk()
-backward()
Obrigado a Sherlock9 pelas sugestões !
fonte
t.write('\n')
trabalhou ...t.up()
, eu estaria lá.Python 2.7, 151 bytes
Exemplo:
fonte
JavaScript (ES6),
130127 bytesOriginalmente, com base na minha resposta para Girar um ladrilho de diamante, embora agora eu possa reescrevê-la de acordo com as linhas desta resposta.
fonte