Thử thách này được lấy cảm hứng từ một câu hỏi trên Mathematica.SE .
Giả sử bạn đã có một danh sách / mảng lồng nhau của một số cấu trúc tùy ý (các danh sách ở mỗi cấp không nhất thiết phải có cùng độ dài). Để đơn giản, chúng tôi sẽ giả sử rằng các nút là số nguyên không âm hoặc mảng trống. Làm ví dụ
[[[1, 3], 2], [1, 4], 12, [[0, [], 0], [5, [7]]]]
Đôi khi, thuận tiện hơn để làm phẳng danh sách đó để thực hiện một số thao tác của các nút, ví dụ:
--> [1, 3, 2, 1, 4, 12, 0, 0, 5, 7]
--> [1, 1, 0, 1, 0, 0, 0, 0, 1, 1]
Nhưng cuối cùng bạn thực sự muốn giữ nguyên cấu trúc ban đầu, vì vậy bạn muốn biến nó trở lại thành
--> [[[1, 1], 0], [1, 0], 0, [[0, [], 0], [1, [1]]]
Nhiệm vụ của bạn là thực hiện bước cuối cùng đó.
Đưa ra một danh sách lồng các số nguyên không âm tùy ý, đại diện cho cấu trúc mong muốn của kết quả và một danh sách phẳng các số nguyên không âm, biểu thị các giá trị mong muốn, định hình lại danh sách phẳng thành dạng của danh sách có cấu trúc. Bạn có thể giả sử rằng cả hai danh sách đều chứa cùng một số nguyên.
Như thường lệ, bạn không phải đối phó với đầu vào không hợp lệ (ví dụ: danh sách thứ hai không bằng phẳng, đầu vào bị sai lệch về mặt cú pháp, không có số nguyên dưới dạng nút, v.v.). Bạn có thể sửa đổi các mảng đầu vào trong mã của bạn.
Bạn có thể viết một hàm hoặc chương trình, lấy đầu vào qua STDIN, đối số dòng lệnh hoặc đối số hàm và bạn có thể trả về kết quả hoặc in nó sang STDOUT. Bạn có thể sử dụng bất kỳ danh sách hoặc định dạng chuỗi thuận tiện để thể hiện đầu vào và đầu ra (miễn là định dạng không rõ ràng và đầu vào không được xử lý trước). Ngoài ra, định dạng của cả hai đầu vào cần nhất quán (vì vậy, bạn không thể lấy một đầu vào dưới dạng một chuỗi và ví dụ khác là một danh sách). Bạn có thể lấy danh sách đầu vào theo thứ tự, nhưng vui lòng chỉ định phương thức nhập chính xác trong câu trả lời của bạn.
Thêm một hạn chế: bạn không được sử dụng các biểu thức thông thường. Đây là một thách thức thao tác mảng, không phải là một thách thức thao tác chuỗi.
Đây là mã golf, vì vậy câu trả lời ngắn nhất (tính bằng byte) sẽ thắng.
Các trường hợp thử nghiệm
Structure Values Result
[[[1,3],2],[1,4],12,[[0,0],[5,[7]]]] [1,1,0,1,0,0,0,0,1,1] [[[1,1],0],[1,0],0,[[0,0],[1,[1]]]]
[[[0,0],0],[0,0],0,[[0,0],[0,[0]]]] [1,1,0,1,0,0,0,0,1,1] [[[1,1],0],[1,0],0,[[0,0],[1,[1]]]]
[] [] []
[[]] [] [[]]
[0,1,2,3] [5,1,0,5] [5,1,0,5]
[[[[[0]]]]] [123] [[[[[123]]]]]
[0,[1,[]],[[]],[2,3],[]] [1,6,1,8] [1,[6,[]],[[]],[1,8],[]]