Lưu ý: Đây là số 2 trong một loạt các thử thách thao tác mảng . Đối với thử thách trước, bấm vào đây .
Danh sách lồng nhau
Để tách các giá trị trong danh sách lồng nhau, làm phẳng nó, sau đó bọc từng giá trị để nó ở cùng độ sâu lồng nhau như trước.
Đó là để nói, danh sách này:
[1, [2, 3], [4, 4, [5, 2], 1]]
Sẽ trở thành:
[1, [2], [3], [4], [4], [[5]], [[2]], [1]]
Các thách thức
Nhiệm vụ của bạn là viết một chương trình lấy bất kỳ danh sách số nguyên dương nào lồng nhau (trong giới hạn ngôn ngữ của bạn) và thực hiện thao tác tách này.
Bạn có thể gửi một hàm lấy danh sách làm đối số hoặc chương trình đầy đủ thực hiện I / O.
Vì đây là môn đánh gôn , bài nộp ngắn nhất (tính bằng byte) sẽ thắng! *
* Các lỗ hổng golf tiêu chuẩn bị cấm. Bạn biết khoan.
Các trường hợp thử nghiệm
Danh sách đầu vào sẽ chỉ bao gồm các số nguyên trong kích thước số nguyên tiêu chuẩn của ngôn ngữ của bạn. Để tránh các ràng buộc của ngôn ngữ ngăn chúng cạnh tranh, các giá trị sẽ không được lồng ở độ sâu hơn 10.
Bạn có thể cho rằng đầu vào sẽ không có danh sách phụ trống: ví dụ - [[5, []]]
sẽ không được cung cấp. Tuy nhiên, danh sách chính có thể trống.
[] -> []
[[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]
Đừng ngần ngại để lại nhận xét nếu tôi bỏ lỡ một trường hợp góc.
Thí dụ
Tôi ném lại với nhau một cách nhanh chóng (ungolfed) giải pháp Python 3 là một ví dụ - bạn có thể kiểm tra nó trên repl.it .