Veja também: Rotatágonos
Desafio
Dada uma string como entrada, produza seu wordagon.
Wordagons
Um wordagon é uma maneira de representar uma string em um hexágono. Agora, vamos criar um wordagon a partir da string hexa
:
Primeiro, você começa com o primeiro caractere da string e coloca-o no centro:
h
Em seguida, você pega o próximo caractere na string e adiciona uma camada hexagonal:
e e
e h e
e e
Em seguida, adicione a próxima camada:
x x x
x e e x
x e h e x
x e e x
x x x
Por fim, adicione a última camada:
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
E agora você tem o wordagon para a corda hexa
.
Exemplos
Aqui estão alguns que eu preparei anteriormente:
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 )
) ) ) ) )
Observe que novas linhas finais e / ou principais são permitidas.
Ganhando
O código mais curto em bytes vence.
code-golf
ascii-art
hexagonal-grid
Beta Decay
fonte
fonte
Respostas:
Pitão - 29 bytes
Conjunto de Teste .
fonte
Python 2, 83 bytes
Imprime o wordagon e depois trava (que só imprime em STDERR).
Exemplo:
O xnor salvou 5 bytes. Obrigado!
fonte
y
's' fazendon=len(s)\nwhile 1:n-=1;y=abs(n);...
e finalizando com erro.Vim, 92 bytes
Letras circuladas representam Control+ letra; ␛ é escapar.
fonte
@q
causa um loop infinito para mim. Funciona perfeitamente se for removido.Mathematica
100219 bytesSe o ASCII-Art não precisar ser Terminal-Art, isso deve ser válido.
Minha submissão anterior, por engano, atraiu uma estrela em vez de um hexágono. Não consigo ver como estava tão excitado!
CirclePoints@6
retorna os vértices de um hexágono unitário, assumindo que o centro está na origem.Subdivide
As coordenadas dos vértices vizinhos encontram posições igualmente espaçadas ao longo da aresta respectiva.Um contador de 1 até o
StringLength -1
da string de entrada permite que cada camada do wordagon seja manipulada separadamente.À medida que
n
aumenta, aumenta também a distância respectiva de cada vértice da origem.Text[s~StringPart~1,{0,0}]
imprime a primeira letra da entrada na origem.f @ "Wordagon"
Para os curiosos, é assim que a versão em estrela se parece. Eu sei, estava muito errado. Apenas mostrava as letras nos vértices do hexágono.
fonte
Ruby, 82 bytes
itera
1-n..n-1
nas direções i = ye j = x. Sem os espaços iniciais em cada linha, a saída se parece com a abaixo, como resultado da seleção de um caracteres
com o índice[[i.abs+j,i.abs,-j].max]
. Adicionar espaços à esquerda forma o hexágono necessário.Ungolfed in program program
Saída típica
fonte
JavaScript (ES6), 118 bytes
Onde
\n
representa o caractere literal de nova linha. Baseado na minha resposta ao desafio da arte ASCII da Hexplosive, embora partes da solução se assemelhem à resposta Ruby da @ LevelRiverSt. Os vários componentes doMath.max
produzem a seguinte saída paral=3
:O valor máximo é obtido e os valores maiores que
l
são removidos, produzindo a forma do hexágono, enquanto os valores restantes são mapeados para caracteres da sequência:fonte
05AB1E , 31 bytes
Explicação
Utilizando simetria para gerar apenas a parte superior do hexágono,
espelhando-a para formar a parte inferior.
Experimente online!
fonte
Python 2, 104 bytes
fonte
PHP - 202 bytes
Uso da linha de comando:
por exemplo:
Conjunto de Teste .
fonte