Dato un elenco non intero di numeri interi, genera un elenco di elenchi contenenti gli interi in ciascun livello di annidamento, a partire dal livello meno nidificato, con i valori nel loro ordine originale nell'elenco di input quando letti da sinistra a destra. Se due o più elenchi si trovano allo stesso livello di annidamento nell'elenco di input, devono essere combinati in un unico elenco nell'output. L'output non deve contenere elenchi vuoti: i livelli di annidamento che contengono solo elenchi devono essere saltati del tutto.
Si può presumere che gli interi siano tutti nell'intervallo (inclusivo) [-100, 100]
. Non esiste una lunghezza massima o una profondità di annidamento per gli elenchi. Non ci saranno elenchi vuoti nell'input: ogni livello di annidamento conterrà almeno un numero intero o un elenco.
L'input e l'output devono essere nell'elenco nativo / array / enumerable / iterable / etc della tua lingua. formato o in qualsiasi formato ragionevole e inequivocabile se nella tua lingua manca un tipo di sequenza.
Esempi
[1, 2, [3, [4, 5], 6, [7, [8], 9]]] => [[1, 2], [3, 6], [4, 5, 7, 9], [8]]
[3, 1, [12, [14, [18], 2], 1], [[4]], 5] => [[3, 1, 5], [12, 1], [14, 2, 4], [18]]
[2, 1, [[5]], 6] => [[2, 1, 6], [5]]
[[54, [43, 76, [[[-19]]]], 20], 12] => [[12], [54, 20], [43, 76], [-19]]
[[[50]], [[50]]] => [[50, 50]]
Cases[#,_?AtomQ,{i}]~Table~{i,Depth@#}~DeleteCases~{}&