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 .