Nota: questo è il numero 2 in una serie di sfide di manipolazione di array . Per la sfida precedente, fai clic qui .
Separare gli elenchi nidificati
Per separare i valori in un elenco nidificato, appiattirlo e quindi avvolgere ciascun valore in modo che sia alla stessa profondità nidificata di prima.
Vale a dire, questo elenco:
[1, [2, 3], [4, 4, [5, 2], 1]]
Potrebbe diventare:
[1, [2], [3], [4], [4], [[5]], [[2]], [1]]
La sfida
Il tuo compito è quello di scrivere un programma che prende qualsiasi elenco nidificato di numeri interi positivi (entro i limiti della tua lingua) ed esegue questa operazione di separazione.
È possibile inviare una funzione che accetta l'elenco come argomento o un programma completo che esegue I / O.
Dato che si tratta di code-golf , vince l'invio più breve (in byte)! *
* Le scappatoie da golf standard sono vietate. Conosci il trapano.
Casi test
Gli elenchi di input conterranno sempre numeri interi nella dimensione intera standard della tua lingua. Per evitare i vincoli delle lingue che impediscono loro di competere, i valori non saranno nidificati a profondità superiori a 10.
Si può presumere che l'input non avrà sottoelenco vuoti: per esempio - [[5, []]]
non verrà dato. Tuttavia, l'elenco principale potrebbe essere vuoto.
[] -> []
[[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]
Non esitate a lasciare un commento se ho perso un caso d'angolo.
Esempio
Ho gettato insieme un rapido (ungolfed) Python 3 soluzione come un esempio - è possibile testare sul repl.it .