Ispirato da A014486 .
Sfida
Dato un input intero in base 10, costruisci una rappresentazione per la foresta binaria corrispondente all'input. Le rappresentazioni includono, ma non sono limitate a, matrici e stringhe nidificate.
Come?
Converti l'input in binario. 1s rappresentano i rami e 0s rappresentano le foglie.
Per renderlo più facile da capire, usiamo 834(1101000010 in binario) come esempio.
Iniziamo con la prima cifra. La prima cifra è a 1, quindi disegniamo i rami:
\ / 1
o come un array, {{1}}
La cifra successiva è 1, quindi disegniamo più rami (andiamo da sinistra a destra):
\ /
1
\ /
1
o come un array, {{1, {1}}}
La cifra successiva è 0, quindi posizioniamo una foglia:
0
\ /
1
\ /
1
o come un array, {{1, {1, 0}}}
La cifra successiva è a 1, quindi posizioniamo un ramo:
\ /
0 1
\ /
1
\ /
1
o come un array, {{1, {1, 0, {1}}}}
Ripetendo il processo, otteniamo il seguente albero dopo l'ottava cifra:
0 0
\ /
0 1
\ /
1 0
\ /
1
o come un array, {{1, {1, 0, {1, 0, 0}}, 0}}
Per le cifre rimanenti, disegniamo più alberi:
La nona cifra è una 0, quindi posizioniamo una foglia (aww, è un giovane germoglio!)
0 0
\ /
0 1
\ /
1 0
\ /
1 0
o come un array, {{1, {1, 0, {1, 0, 0}}, 0}, 0}
Quando usiamo tutte le cifre, finiamo con questo:
0 0
\ /
0 1
\ /
1 0 0
\ / \ /
1 0 1
o come un array, {{1, {1, 0, {1, 0, 0}}, 0}, 0, {1, 0}}
Sembra strano, quindi inseriamo uno zero per completare l'albero:
0 0
\ /
0 1
\ /
1 0 0 0
\ / \ /
1 0 1
o come un array, {{1, {1, 0, {1, 0, 0}}, 0}, 0, {1, 0, 0}}
Si noti che l'appiattimento dell'array produce il numero originale in binario, ma con uno zero imbottito.
criteri
- L'output deve mostrare chiaramente la separazione di alberi e rami (se non è un array nidificato, spiegare il formato di output).
- L'estrazione di tutte le cifre dall'output deve essere identica alla rappresentazione binaria dell'ingresso (con lo zero (i) imbottito del processo sopra).
Casi test
L'output può differire se soddisfa i criteri.
0 -> {0}
1 -> {{1, 0, 0}}
44 -> {{1, 0, {1, {1, 0, 0}, 0}}}
63 -> {{1, {1, {1, {1, {1, {1, 0, 0}, 0}, 0}, 0}, 0}, 0}}
404 -> {{1, {1, 0, 0}, {1, 0, {1, 0, 0}}}}
1337 -> {{1, 0, {1, 0, 0}}, {1, {1, {1, 0, 0}, {1, 0, 0}}, 0}}
punteggio
Questo è code-golf , quindi vince il byte più basso!