Un albero divisore esteticamente gradevole è un albero di divisori di input n
che, per qualsiasi numero composto m
, ha due nodi figlio che sono la coppia di divisori più vicini alla radice quadrata di m
. Il nodo sinistro dovrebbe essere il divisore più piccolo di m
e il nodo destro dovrebbe essere il divisore più grande di m
. Un numero primo nell'albero non dovrebbe avere nodi figli. Il tuo albero può essere sotto forma di arte del testo o di un'immagine. Le regole per l'output della grafica sono le seguenti.
Regole di spaziatura
Per distanziare i nodi sull'albero, abbiamo le seguenti regole:
- I nodi a una determinata profondità dalla radice dovrebbero essere tutti sulla stessa riga di testo nell'output.
/ \ NOT / \ / \ / 3 2 3 2
- Per i nodi a sinistra, il ramo in arrivo dovrebbe essere in alto a destra se il nodo è un numero a una cifra, altrimenti appena sopra l'ultima cifra. Esempio:
/ E / 3 720
- Per i nodi a destra, il ramo in arrivo dovrebbe essere in alto a sinistra se il nodo è un numero a una cifra, altrimenti appena sopra la prima cifra. Esempio:
\ E \ 7 243
- Per i rami di sinistra in uscita, il ramo dovrebbe iniziare uno spazio a sinistra del numero. Esempio:
275 / 11
- Per i rami a destra in uscita, il ramo dovrebbe iniziare uno spazio a destra del numero. Esempio:
275 \ 25
- Ogni due nodi sullo stesso livello dell'albero dovrebbero avere almeno due spazi tra loro. Allo stesso tempo, due sottotipi sullo stesso livello dell'albero dovrebbero avere il minor numero di spazi tra loro possibile.
Questo albero non funziona perché i ** sottotitoli ** sono troppo vicini. 504 / \ / \ / \ / \ 21 24 / \. / \ / \. / \ 3 7. 4 6 . / \ / \ .2 2 2 3 Mentre questo albero ha abbastanza spazio tra i suoi rami. 504 / \ / \ / \ / \ / \ 21 ... 24 / \ ... / \ / \ ... / \ 3 7 ... 4 6 ... / \ / \ ... 2 2 2 3
- Se due sottostrutture sono troppo vicine tra loro su un albero, possono essere separate aggiungendo un'altra fila di rami
/\
all'albero sopra i genitori.
441 / \ L'ultima riga non è ancora stata compilata e abbiamo già esaurito lo spazio. 21 21 / \ / \ Aggiungi un'altra fila di rami 441 / \ Quasi, ma il 7 e il 3 sono troppo vicini. / \ Un'altra riga dovrebbe farlo. 21 21 / \ / \ 3 7 3 7 Aggiungi un'altra fila di rami 441 / \ E abbiamo finito. / \ / \ 21 21 / \ / \ 3 7 3 7
Esempi
Ad esempio, l'albero divisore di 24 sarà simile al seguente:
24
/ \
/ \
4 6
/ \ / \
2 2 2 3
4 e 6 sono la coppia di divisori più vicini alla radice quadrata di 24. 4 è a sinistra, perché è più piccolo. Nella riga successiva, il numero 2 a sinistra di 3, perché è più piccolo.
L'albero del divisore per 63 dovrebbe apparire come:
63 and NOT like this 63
/ \ / \
7 9 3 21
/ \ / \
3 3 7 3
Nell'albero errato, 3 e 21 non sono la coppia di divisori più vicini alla radice quadrata di 63 e 3 e 7 non sono ordinati correttamente. Tuttavia, la posizione del ramo sul 21 è corretta.
Per 42, dovresti avere:
42 and NOT 42
/ \ / \
6 7 21 2
/ \ / \
2 3 3 7
Diamo un'occhiata a 720. Si noti che abbiamo bisogno di cinque livelli di rami in 720
modo che gli spazi secondari 24
e 30
siano spaziati correttamente. Inoltre, si noti che 24
e 30
hanno due livelli di rami perché 4
e 6
avere nodi figli che necessitano corretta spaziatura ei nodi figli di 30
necessità di essere sullo stesso livello dei bambini nodi 24
.
720
/ \
/ \
/ \
/ \
/ \
24 30
/ \ / \
/ \ / \
4 6 5 6
/ \ / \ / \
2 2 2 3 2 3
La sfida
- Il tuo compito è costruire un albero divisore esteticamente piacevole e spaziato correttamente per l'input
n
, doven
un numero intero positivo maggiore di 1. - L'output può contenere spazi iniziali e finali e nuove righe iniziali e finali, ma deve in altro modo essere conforme alle regole di spaziatura indicate sopra.
- Il tuo output può essere: text art, un'immagine (altri formati da aggiungere, se necessario).
- Per le immagini, assicurati che i nodi dell'albero siano ben distanziati e che i nodi alla stessa altezza dell'albero siano alla stessa altezza nell'immagine.
- Questo è il codice golf. Vince il numero minimo di byte (o equivalente).
Ringraziamo Stewie Griffin per aver pensato a questa idea e molte grazie a Peter Taylor, Martin Ender, Mego ed Eᴀsᴛᴇʀʟʏ Iᴛᴇʀʟʏ per il loro aiuto nel riscrivere le specifiche. Come al solito, eventuali suggerimenti o correzioni sono molto apprezzati. Buona fortuna e buon golf!
Altri casi di test:
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