Introdução
Na maioria dos tipos de letra todos os caracteres do alfabeto maiúsculas além de BDO
ter linhas simples aproximadamente tocando alguns dos quatro cantos do retângulo delimitador do personagem: ACEFGHIJKLMNPQRSTUVWXYZ
.
Por exemplo, as duas pernas de um A
"toque" nos cantos inferior esquerdo e inferior direito do personagem. Da mesma forma, C
toca nos cantos superior e inferior direito (é um pouco curvado, mas está próximo o suficiente). L
apenas toca nos cantos superior esquerdo e inferior direito com linhas únicas. O canto inferior esquerdo de L
é um vértice, não o fim de uma única linha.
Aqui está uma tabela de quais caracteres tocam em quais cantos, de acordo com a fonte I do Stack Exchange (e espero que você) veja. 1
é para superior esquerdo, 2
é para superior direito, 3
inferior esquerdo, 4
inferior direito.
A: 3 4
C: 2 4
E: 2 4
F: 2 3
G: 2
H: 1 2 3 4
I: 1 2 3 4
J: 1 3
K: 1 2 3 4
L: 1 4
M: 3 4
N: 2 3
P: 3
Q: 4
R: 3 4
S: 2 3
T: 1 2
U: 1 2
V: 1 2
W: 1 2
X: 1 2 3 4
Y: 1 2
Z: 1 4
Configuração
Finja que essas linhas de toque dos cantos se estendem na direção do canto em que tocam, para que as disposições desses caracteres em uma grade possam ser "conectadas".
Por exemplo, todos os caracteres em
A
C X
estão conectados porque o canto inferior esquerdo A
e o canto superior direito da C
conexão e o canto inferior direito e o canto A
superior esquerdo da X
conexão.
Contudo,
CAX
não possui conexões porque as conexões ocorrem apenas na diagonal de um caractere para o próximo .
Desafio
Escreva o programa mais curto possível (em bytes) que gera todos os caracteres ACEFGHIJKLMNPQRSTUVWXYZ
em uma grande árvore totalmente conectada, de acordo com as regras acima. Cada personagem deve aparecer exatamente uma vez. Use espaços para espaço vazio.
Exemplo
Tudo nesta árvore de 23 letras pode ser acessado de qualquer outra coisa através das conexões diagonais definidas acima:
Q
A J R
C U S Y
I M N
E H X
F L T
G Z K P
V W
Notas
- Você pode codificar sua solução.
- Sua saída deve conter apenas
ACEFGHIJKLMNPQRSTUVWXYZ
espaços e novas linhas.BDO
não será usado. - Espaços iniciais / finais são bons, desde que todas as conexões estejam posicionadas corretamente.
- A grade de saída não deve ter mais que 30 x 30 caracteres (incluindo novas linhas e espaços).
- Somente conexões de canto são consideradas. A parte inferior do
Y
não se conecta a nada. Você deve usar as conexões de canto da tabela acima. - Nem todos os cantos conectáveis precisam se conectar a algo. Cantos conectáveis e não conectáveis podem se unir.
- Saída para stdout. Não há entrada.
- Incluir um gráfico de conectividade feito com barras como Peter Taylor fez é um toque útil, mas não obrigatório.
Atualização: o
githubhagocyte fez um verificador de validade da árvore do alfabeto no Github .
fonte
Respostas:
Pyth , 32
Resultado:
Conexões, graças ao verificador de @ githubphagocyte:
Combina o truque de byte nulo do @ grc e a sintaxe extremamente curta do Pyth. Fiz minha própria grade para o inferno.
Explicação:
j
é a junção de string do python.d
é espaço.\0
é a sequência de escape para o byte nulo. Como um NOP é impresso, a terceira linha tem exatamente dois espaços à frente. Além disso, observe que as seqüências de caracteres podem ser terminadas com EOL no Pyth, assim como terminadas com aspas.fonte
GolfScript (41 caracteres)
Demonstração online
Gráfico de conectividade:
fonte
Python, 49
Exemplo:
Eu acho que se conecta corretamente agora, mas posso ter perdido alguma coisa novamente.
fonte
F4
olhares conectados aG1
, que é inválidoMarbelous
164158143usou a árvore dos marcadores, pois quase perfeitamente otimizada para o Marbelous . O código nesse caso é apenas o código ascci para todos os caracteres (incluindo espaços e novas linhas) da esquerda para a direita, delimitado por espaços.
Resultado:
Uma abordagem Marbelous melhor
135129Este gera a mesma árvore com um espaço extra antes e depois de cada linha, funciona alimentando os literais em uma sub-rotina que imprime um espaço antes de imprimir o literal. E apenas imprimindo um espaço se o literal for um espaço (20 HEX)
fonte
BrainF * ck 669
Feito este para rir. Produz exatamente o mesmo que o exemplo.
Fornecerá outra solução posteriormente.Não consigo pensar em uma maneira inteligente de fazer isso em Lua, então vou me ater a este :)Resultado
fonte
PHP 46
Isso foi mais como resolver quebra-cabeças do que como programação, então minha resposta é mais como solução de quebra-cabeça do que como código. No entanto, é um programa PHP válido, por isso estou enviando.
Atualize o mesmo no Perl. O comprimento ainda permanece 46:
fonte
HTML, 55
código
resultado:
fonte
Bash + coreutils, 46
Agora, emprestando descaradamente a árvore ideal do core1024 :
Resultado:
fonte
STATA 63
Edit: agora minha própria solução. Devem ser todas as letras.
fonte
Javascript 83
Vou começar com a codificação da SUA solução
fonte
alert
em vez deconsole.log
PHP, 69
dá
fonte
"/\w/",'\0 '