Uma árvore divisora esteticamente agradável é uma árvore de divisores de entrada n
que, para qualquer número composto m
, possui dois nós filhos que são o par de divisores mais próximos da raiz quadrada de m
. O nó esquerdo deve ser o divisor menor de m
e o nó direito deve ser o divisor maior de m
. Um número primo na árvore não deve ter nós filhos. Sua árvore pode estar na forma de arte de texto ou imagem. As regras para saída de arte de texto são as seguintes.
Regras de espaçamento
Para espaçar os nós na árvore, temos as seguintes regras:
- Os nós em uma determinada profundidade da raiz devem estar todos na mesma linha de texto na saída.
/ \ NÃO / \ / \ / 3 2 3 2
- Para nós esquerdos, a ramificação recebida deve estar no canto superior direito se o nó for um número de um dígito; caso contrário, logo acima do último dígito. Exemplo:
/ AND / 3 720
- Para nós da direita, a ramificação de entrada deve estar no canto superior esquerdo se o nó for um número de um dígito; caso contrário, logo acima do primeiro dígito. Exemplo:
\ AND \ 7 243
- Para ramificações esquerdas de saída, a ramificação deve começar um espaço à esquerda do número. Exemplo:
275 / 11
- Para ramificações direitas de saída, a ramificação deve começar um espaço à direita do número. Exemplo:
275 \ 25
- Quaisquer dois nós no mesmo nível da árvore devem ter no mínimo dois espaços entre eles. Ao mesmo tempo, quaisquer duas subárvores no mesmo nível da árvore devem ter o menor espaço possível entre elas.
Esta árvore não funciona porque as ** subárvores ** estão muito próximas. 504 / \ / \ / \ / \ 21 24 / \. / \ / \. / \ 3 7. 4 6 . / \ / \ .2 2 2 3 Embora essa árvore tenha espaço suficiente entre seus galhos. 504 / \ / \ / \ / \ / \ 21 ... 24 / \ ... / \ / \ ... / \ 3 7 ... 4 6 ... / \ / \ ... 2 2 2 3
- Se quaisquer duas subárvores estão muito próximos em uma árvore, eles podem ser separados por adição de outra linha de ramos
/\
da árvore acima dos pais.
441 / \ A última linha ainda não foi preenchida e já estamos sem espaço. 21 21 / \ / \ Adicione outra linha de ramificações 441 Quase \, mas o 7 e o 3 estão muito próximos. / \ Mais uma linha deve fazê-lo. 21 21 / \ / \ 3 7 3 7 Adicione outra linha de ramificações 441 / \ E terminamos. / \ / \ 21 21 / \ / \ 3 7 3 7
Exemplos
Como um exemplo completo, a árvore divisora de 24 terá a seguinte aparência:
24
/ \
/ \
4 6
/ \ / \
2 2 2 3
4 e 6 são o par de divisores mais próximo da raiz quadrada de 24. 4 está à esquerda, porque é menor. Na próxima linha, o número 2 à esquerda de 3, porque é menor.
A árvore divisória para 63 deve se parecer com:
63 and NOT like this 63
/ \ / \
7 9 3 21
/ \ / \
3 3 7 3
Na árvore incorreta, 3 e 21 não são o par de divisores mais próximos da raiz quadrada de 63 e 3 e 7 não são classificados corretamente. O posicionamento da filial no 21 está correto, no entanto.
Para 42, você deve ter:
42 and NOT 42
/ \ / \
6 7 21 2
/ \ / \
2 3 3 7
Vamos dar uma olhada no 720. Observe que precisamos de cinco níveis de ramificações 720
para que as subárvores 24
e 30
sejam espaçadas corretamente. Além disso, nota que 24
e 30
têm dois níveis de ramos, porque 4
e 6
tem nós filhos que precisam espaçamento correto e os nós filhos de 30
necessidade de estar no mesmo nível que os nós filhos de 24
.
720
/ \
/ \
/ \
/ \
/ \
24 30
/ \ / \
/ \ / \
4 6 5 6
/ \ / \ / \
2 2 2 3 2 3
O desafio
- Sua tarefa é criar uma árvore divisora esteticamente agradável, espaçada corretamente para entrada
n
, em quen
um número inteiro positivo seja maior que 1. - Sua saída pode conter espaços à esquerda e à direita e novas linhas à esquerda e à direita, mas deve estar em conformidade com as regras de espaçamento fornecidas acima.
- É permitido que sua saída seja: arte do texto, uma imagem (outros formatos a serem adicionados, se necessário).
- Para imagens, verifique se os nós da árvore estão bem espaçados e se os nós na mesma altura na árvore estão na mesma altura na imagem.
- Isso é código de golfe. O menor número de bytes (ou equivalente) vence.
Agradecemos a Stewie Griffin por pensar nessa idéia e muito obrigado a Peter Taylor, Martin Ender, Mego e Eᴀsᴛᴇʀʟʏ Iʀᴋ por sua ajuda na reescrita da especificação. Como sempre, qualquer sugestão ou correção é muito apreciada. Boa sorte e bom golfe!
Mais casos de teste:
2
4
/ \
2 2
20
/ \
4 5
/ \
2 2
323
/ \
17 19
362880
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
576 630
/ \ / \
/ \ / \
/ \ / \
/ \ / \
/ \ / \
/ \ / \
24 24 21 30
/ \ / \ / \ / \
/ \ / \ / \ / \
4 6 4 6 3 7 5 6
/ \ / \ / \ / \ / \
2 2 2 3 2 2 2 3 2 3
1286250
/ \
/ \
/ \
/ \
/ \
1050 1225
/ \ / \
/ \ / \
/ \ / \
30 35 35 35
/ \ / \ / \ / \
5 6 5 7 5 7 5 7
/ \
2 3