Inspirado en A014486 .
Reto
Dada una entrada entera en la base 10, construya una representación para el bosque binario correspondiente a la entrada. Las representaciones incluyen, entre otras, matrices y cadenas anidadas.
¿Cómo?
Convierta la entrada a binario. 1s representan ramas y 0s representan hojas.
Para que esto sea más fácil de entender, usemos 834(1101000010 en binario) como ejemplo.
Comenzamos con el primer dígito. El primer dígito es a 1, por lo que dibujamos ramas:
\ / 1
o como una matriz, {{1}}
El siguiente dígito es 1, por lo que dibujamos más ramas (vamos de izquierda a derecha):
\ /
1
\ /
1
o como una matriz, {{1, {1}}}
El siguiente dígito es 0, así que colocamos una hoja:
0 0
\ /
1
\ /
1
o como una matriz, {{1, {1, 0}}}
El siguiente dígito es un 1, así que colocamos una rama:
\ /
0 1
\ /
1
\ /
1
o como una matriz, {{1, {1, 0, {1}}}}
Repitiendo el proceso, obtenemos el siguiente árbol después del octavo dígito:
0 0
\ /
0 1
\ /
1 0
\ /
1
o como una matriz, {{1, {1, 0, {1, 0, 0}}, 0}}
Para los dígitos restantes, dibujamos más árboles:
El noveno dígito es un 0, así que colocamos una hoja (¡aww, es un brote joven!)
0 0
\ /
0 1
\ /
1 0
\ /
1 0
o como una matriz, {{1, {1, 0, {1, 0, 0}}, 0}, 0}
Cuando usamos todos los dígitos, terminamos con esto:
0 0
\ /
0 1
\ /
1 0 0
\ / \ /
1 0 1
o como una matriz, {{1, {1, 0, {1, 0, 0}}, 0}, 0, {1, 0}}
Eso se ve raro, así que rellenamos un cero para completar el árbol:
0 0
\ /
0 1
\ /
1 0 0 0
\ / \ /
1 0 1
o como una matriz, {{1, {1, 0, {1, 0, 0}}, 0}, 0, {1, 0, 0}}
Tenga en cuenta que al aplanar la matriz se obtiene el número original en binario, pero con un cero rellenado.
Criterios
- La salida debe mostrar claramente la separación de los árboles y las ramas (si no es una matriz anidada, explique su formato de salida).
- La extracción de todos los dígitos de la salida debe ser idéntica a la representación binaria de la entrada (con los cero rellenados del proceso anterior).
Casos de prueba
El resultado puede diferir siempre que cumpla con los criterios.
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}}
Tanteo
Este es el código de golf , por lo que gana los bytes más bajos.