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. 1
s rappresentano i rami e 0
s 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!