Nota: Este es el # 2 en una serie de desafíos de manipulación de matrices . Para el desafío anterior, haga clic aquí .
Separar listas anidadas
Para separar los valores en una lista anidada, aplánelo y luego ajuste cada valor para que tenga la misma profundidad anidada que antes.
Es decir, esta lista:
[1, [2, 3], [4, 4, [5, 2], 1]]
Se convertiría:
[1, [2], [3], [4], [4], [[5]], [[2]], [1]]
El reto
Su tarea es escribir un programa que tome cualquier lista anidada de enteros positivos (dentro de los límites de su idioma) y realice esta operación de separación.
Puede enviar una función que tome la lista como argumento o un programa completo que realice E / S.
Como se trata de código de golf , ¡el envío más corto (en bytes) gana! *
* Las lagunas de golf estándar están prohibidas. Ya sabes que hacer.
Casos de prueba
Las listas de entrada solo contendrán enteros en el tamaño entero estándar de su idioma. Para evitar las restricciones de los idiomas que les impiden competir, los valores no se anidarán a profundidades de más de 10.
Puede suponer que la entrada no tendrá sublistas vacías: por ejemplo [[5, []]]
, no se dará. Sin embargo, la lista principal podría estar vacía.
[] -> []
[[1, 2]] -> [[1], [2]]
[3, [4, 5]] -> [3, [4], [5]]
[3, [3, [3]]] -> [3, [3], [[3]]]
[[6, [[7]]]] -> [[6], [[[7]]]]
[[5, 10], 11] -> [[5], [10], 11]
No dude en dejar un comentario si me he perdido un caso de esquina.
Ejemplo
Tiré juntos una solución rápida Python (ungolfed) 3 como ejemplo - se puede probarlo en repl.it .