Enquanto fazia alguma pesquisa para um desafio diferente que estou formulando, me deparei com um gráfico de Cayley , especificamente este . Como sou um dos principais escritores de desafios da arte ascii , é claro que tive que fazer um desafio da arte ASCII para isso.
Seu desafio é produzir esta representação artística ASCII de um gráfico Cayley do grupo livre em dois geradores, da seguinte maneira:
+
+++
+ | +
++-+-++
+ | +
+ | +
+++ | +++
+ | | | +
++-+----+----+-++
+ | | | +
+++ | +++
+ | +
+ | +
+++ | +++
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+ | | | +
+++ | | | +++
+ | | | | | +
++-+----+-----------+-----------+----+-++
+ | | | | | +
+++ | | | +++
+ | | | +
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+ +++ | +++ +
+++ + | + +++
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+ | + | + | +
+++ | +++ | +++ | +++
+ | | | + | + | | | +
++-+----+----+-++ | ++-+----+----+-++
+ | | | + | + | | | +
+++ | +++ | +++ | +++
+ | + | + | +
+ | | | +
+++ | | | +++
+ | + | | | + | +
++-+-++ | | | ++-+-++
+ | + | | | + | +
+ | | | | | +
+++ | | | | | +++
+ | | | | | | | +
++-+----+-----------+--------------------------+--------------------------+-----------+----+-++
+ | | | | | | | +
+++ | | | | | +++
+ | | | | | +
+ | + | | | + | +
++-+-++ | | | ++-+-++
+ | + | | | + | +
+++ | | | +++
+ | | | +
+ | + | + | +
+++ | +++ | +++ | +++
+ | | | + | + | | | +
++-+----+----+-++ | ++-+----+----+-++
+ | | | + | + | | | +
+++ | +++ | +++ | +++
+ | + | + | +
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+++ + | + +++
+ +++ | +++ +
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+ | | | +
+++ | | | +++
+ | | | | | +
++-+----+-----------+-----------+----+-++
+ | | | | | +
+++ | | | +++
+ | | | +
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+++ | +++
+ | +
+ | +
+++ | +++
+ | | | +
++-+----+----+-++
+ | | | +
+++ | +++
+ | +
+ | +
++-+-++
+ | +
+++
+
Entrada
Nenhuma entrada, a menos que seu idioma exija explicitamente que a entrada seja executada.
Saída
A representação artística ASCII mostrada acima.
Hashes MD5
Como essa é uma saída bastante grande, para verificar seu trabalho, aqui estão alguns hashes MD5 de exemplos de formas de saída (todos são UTF-8 sem BOM):
- Preenchimento de espaço quadrado,
CR/LF
avanço de linha e nova linha à direita -954B93871DAAE7A9C05CCDF79B00BF3C
- esta é a representação usada acima. - Preenchimento de espaço quadrado,
CR/LF
avanço de linha, sem nova linha à direita -28405EF91DA305C406BD03F9275A175C
- Preenchimento de espaço quadrado,
LF
avanço de linha e nova linha à direita -8CA65FB455DA7EE5A4C10F25CBD49D7E
- Preenchimento de espaço quadrado,
LF
avanço de linha, sem nova linha à direita -FDB1547D68023281BB60DBEC82C8D281
- Sem espaços à direita,
CR/LF
feeds de linha e nova linha à direita -77FDE8CE5D7BD1BDD47610BA23264A19
- Sem espaços à direita,
CR/LF
feeds de linha, sem nova linha à direita -EAD390C3EFD37F0FCACE55A84B793AB5
- Sem espaços à direita,
LF
feeds de linha e nova linha à direita -1F6CAB740F87881EB2E65BED65D08C36
- Sem espaços à direita,
LF
feeds de linha, sem nova linha à direita -7D41CE1E637619FEA9515D090BFA2E9C
- Se houver um MD5 adicional que você gostaria de comparar, informe-me, eu o crio e atualizo o desafio.
Regras
- Novas linhas à esquerda ou à direita ou espaços em branco são opcionais, desde que os próprios caracteres estejam alinhados corretamente.
- Um programa completo ou uma função são aceitáveis. Se uma função, você pode retornar a saída em vez de imprimi-la.
- Se possível, inclua um link para um ambiente de teste on-line para que outras pessoas possam experimentar seu código!
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
code-golf
ascii-art
kolmogorov-complexity
fractal
AdmBorkBork
fonte
fonte
-
/|
s seguem a fórmula,(2<<n)-n-2
e não(1<<n)-1
qual é o meu palpite original.Respostas:
JavaScript (ES6),
204195188180 bytesPreenchimento de espaço quadrado, alimentação de linha LF
enenhuma nova linha à direita, embora eu não tenha verificado o MD5.Versão parametrizada para
222216207199 bytes. Explicação: O tamanho da saída é de 9119 caracteres ASCII, incluindo 46 novas linhas. (Para a versão parametrizada, o tamanho da saída é calculado incluindo a nova linha à direita.) Cada caractere é determinado individualmente, primeiro verificando se uma nova linha está vencida ou chamando uma função nas coordenadas relativas à origem no meio da final diagrama. A função verifica recursivamente o ponto em relação às cruzes mais próximas de cada tamanho para o ponto e retorna o caractere apropriado, dependendo se o ponto for encontrado no centro ou no eixo de uma cruz.fonte
Röda ,
284280238234 bytesExperimente online!
Esta é uma função anônima. Usei novas linhas em vez de ponto-e-vírgula, por isso é muito bem formatado!
A função recursiva
f
cria o gráfico em uma matriz bidimensionalt
, que é impressa na última linha.Não encontrei uma maneira de calcular
27,12,5,2,1
em alguns bytes, portanto eles são codificados.fonte
b_shiftl
operador, mas acho que é muito longo para ser usado neste programa.10000110001200020001
->1168671727
duvido que você pode converter e dividir com menos de 2 bytes que heh ...Carvão ,
5043 bytesExperimente online! Link é a versão detalhada do código. Inicialmente, tentei várias reflexões e rotações, mas elas não fizeram o que eu queria ou, em alguns casos, eram de buggy. Tentei uma abordagem de loop aninhado, mas agora mudei para esse método iterativo que funciona desenhando um número de linhas entre cada cruz interna, dependendo de quantas potências de 3 o número da etapa é divisível. Ele pode ser facilmente modificado para aceitar um parâmetro de tamanho a um custo de apenas 4 bytes:
Edit: Eu já trabalhei como usar
RotateShutterOverlap
para realizar esta tarefa, mas irritantemente leva 44 bytes:Se
RotateShutterOverlap
aceito um número inteiro de rotações variáveis, isso o reduziria para 40 bytes:Assim, o uso de um parâmetro da lista de rotações leva 45 bytes:
fonte
05AB1E , 620 bytes
Experimente online!
Tudo o que fiz foi cortar o padrão em quartos, converter os símbolos em base-4, compactar 1/4 do padrão em base-214 e depois invertê-lo sobre as linhas de simetria. Estou trabalhando em algo mais inteligente usando o algoritmo real, mas até terminar que é isso que estará aqui para mim.
fonte
05AB1E
resposta que eu já vi. xD Normalmente, é quase 6,20, em vez de 620, com respostas neste idioma. ;)Python 3, 264 bytes
Usa um par de funções recursivas mutuamente. F desenha as linhas e P insere os '+'. Pode ser jogado mais, mas sem tempo por enquanto.
fonte
C, 236 bytes
Apenas construa a tabela de caracteres recursivamente antes de exibi-la.
Experimente online!
Obrigado @ Neil por me fazer perceber que o comprimento dos galhos segue uma regra real.
fonte