Nota: Este é o número 2 em uma série de desafios de manipulação de matriz . Para o desafio anterior, clique aqui .
Separando listas aninhadas
Para separar valores em uma lista aninhada, alise-o e, em seguida, agrupe cada valor para que ele fique na mesma profundidade aninhada de antes.
Ou seja, esta lista:
[1, [2, 3], [4, 4, [5, 2], 1]]
Se tornaria:
[1, [2], [3], [4], [4], [[5]], [[2]], [1]]
O desafio
Sua tarefa é escrever um programa que utilize qualquer lista aninhada de números inteiros positivos (dentro dos limites do seu idioma) e execute essa operação de separação.
Você pode enviar uma função que considere a lista como argumento ou um programa completo que execute E / S.
Como se trata de código-golfe , o envio mais curto (em bytes) vence! *
* As brechas de golfe padrão são proibidas. Você sabe o que fazer.
Casos de teste
As listas de entrada sempre conterão números inteiros no tamanho inteiro padrão do seu idioma. Para evitar restrições de idiomas que os impedem de competir, os valores não serão aninhados em profundidades superiores a 10.
Você pode assumir que a entrada não terá sub-listas vazias: por exemplo - [[5, []]]
não será fornecida. No entanto, a lista principal pode estar vazia.
[] -> []
[[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]
Não hesite em deixar um comentário se eu perdi uma caixa de esquina.
Exemplo
Eu joguei junto um (ungolfed) Python solução rápida 3 como um exemplo - você pode testá-lo em repl.it .