Étant donné une liste non plate d'entiers, affichez une liste de listes contenant les entiers dans chaque niveau d'imbrication, en commençant par le niveau le moins imbriqué, avec les valeurs dans leur ordre d'origine dans la liste d'entrée lors de la lecture de gauche à droite. Si deux ou plusieurs listes sont au même niveau d'imbrication dans la liste d'entrée, elles doivent être combinées en une seule liste dans la sortie. La sortie ne doit contenir aucune liste vide - les niveaux d'imbrication qui ne contiennent que des listes doivent être entièrement ignorés.
Vous pouvez supposer que les nombres entiers sont tous dans la plage (inclusive) [-100, 100]
. Il n'y a pas de longueur maximale ni de profondeur d'imbrication pour les listes. Il n'y aura pas de listes vides dans l'entrée - chaque niveau d'imbrication contiendra au moins un entier ou une liste.
L'entrée et la sortie doivent être dans la liste native / tableau / enumerable / iterable / etc de votre langue. format, ou dans tout format raisonnable et sans ambiguïté si votre langue n'a pas de type de séquence.
Exemples
[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~{}&