Đưa ra một danh sách các số nguyên không phẳng, xuất ra một danh sách các danh sách chứa các số nguyên ở mỗi cấp lồng nhau, bắt đầu với mức lồng nhau ít nhất, với các giá trị theo thứ tự ban đầu trong danh sách đầu vào khi đọc từ trái sang phải. Nếu hai hoặc nhiều danh sách ở cùng một mức lồng nhau trong danh sách đầu vào, chúng sẽ được kết hợp thành một danh sách duy nhất trong đầu ra. Đầu ra không được chứa bất kỳ danh sách trống nào - các mức lồng nhau chỉ chứa các danh sách nên được bỏ qua hoàn toàn.
Bạn có thể cho rằng các số nguyên đều nằm trong phạm vi (bao gồm) [-100, 100]
. Không có chiều dài tối đa hoặc độ sâu lồng cho danh sách. Sẽ không có danh sách trống trong đầu vào - mỗi cấp độ lồng sẽ chứa ít nhất một số nguyên hoặc danh sách.
Đầu vào và đầu ra phải nằm trong danh sách / mảng / liệt kê / lặp lại / ngôn ngữ của ngôn ngữ của bạn. định dạng hoặc ở bất kỳ định dạng hợp lý, rõ ràng nào nếu ngôn ngữ của bạn thiếu loại trình tự.
Ví dụ
[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~{}&