Biorąc pod uwagę niepłaską listę liczb całkowitych, wypisz listę list zawierających liczby całkowite na każdym poziomie zagnieżdżenia, zaczynając od poziomu najmniej zagnieżdżonego, z wartościami w ich oryginalnej kolejności na liście wejściowej podczas czytania od lewej do prawej. Jeśli dwie lub więcej list znajduje się na tym samym poziomie zagnieżdżenia na liście danych wejściowych, należy je połączyć w jedną listę danych wyjściowych. Dane wyjściowe nie powinny zawierać żadnych pustych list - poziomy zagnieżdżenia zawierające tylko listy należy całkowicie pominąć.
Możesz założyć, że wszystkie liczby całkowite należą do (włącznie) zakresu [-100, 100]
. Dla list nie ma maksymalnej długości ani głębokości zagnieżdżenia. Na wejściu nie będzie pustych list - każdy poziom zagnieżdżenia będzie zawierał co najmniej jedną liczbę całkowitą lub listę.
Dane wejściowe i wyjściowe muszą znajdować się na rodzimej liście / tablicy / enumerable / iterable / etc w twoim języku. format lub w jakimkolwiek rozsądnym, jednoznacznym formacie, jeśli w twoim języku brakuje typu sekwencji.
Przykłady
[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~{}&