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. 1
s representan ramas y 0
s 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.