Tantangan ini terinspirasi oleh pertanyaan tentang Mathematica.SE .
Katakanlah Anda memiliki daftar / array bersarang dari beberapa struktur arbitrer (daftar di setiap level tidak harus memiliki panjang yang sama). Untuk kesederhanaan, kami akan menganggap bahwa node adalah bilangan bulat non-negatif atau array kosong. Sebagai contoh
[[[1, 3], 2], [1, 4], 12, [[0, [], 0], [5, [7]]]]
Terkadang lebih mudah untuk meratakan daftar itu untuk melakukan manipulasi node, misalnya
--> [1, 3, 2, 1, 4, 12, 0, 0, 5, 7]
--> [1, 1, 0, 1, 0, 0, 0, 0, 1, 1]
Tetapi pada akhirnya Anda benar-benar ingin mempertahankan struktur aslinya, jadi Anda ingin mengubahnya menjadi
--> [[[1, 1], 0], [1, 0], 0, [[0, [], 0], [1, [1]]]
Tugas Anda adalah melakukan langkah terakhir itu.
Diberikan daftar bersarang dari bilangan bulat non-negatif sewenang-wenang, yang mewakili struktur hasil yang diinginkan, dan daftar datar bilangan bulat non-negatif, yang mewakili nilai yang diinginkan, membentuk kembali daftar datar menjadi bentuk daftar terstruktur. Anda dapat mengasumsikan bahwa kedua daftar berisi jumlah bilangan bulat yang sama.
Seperti biasa Anda tidak harus berurusan dengan input yang tidak valid (mis. Daftar kedua tidak datar, input yang cacat secara sintaksis, tidak memiliki integer sebagai node, dll.). Anda dapat memodifikasi array input dalam kode Anda.
Anda dapat menulis suatu fungsi atau program, mengambil input melalui STDIN, argumen baris perintah atau argumen fungsi, dan Anda dapat mengembalikan hasilnya atau mencetaknya ke STDOUT. Anda dapat menggunakan format string atau daftar yang mudah digunakan untuk merepresentasikan input dan output (selama formatnya tidak ambigu dan inputnya tidak diproses sebelumnya). Juga, format kedua input harus konsisten (jadi Anda tidak dapat mengambil satu input sebagai string dan yang lainnya sebagai daftar, misalnya). Anda dapat mengambil daftar input dalam urutan apa pun, tetapi harap tentukan metode input yang tepat dalam jawaban Anda.
Satu batasan lagi: Anda tidak boleh menggunakan ekspresi reguler. Ini adalah tantangan manipulasi array, bukan tantangan manipulasi string.
Ini adalah kode golf, jadi jawaban tersingkat (dalam byte) menang.
Uji Kasus
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],[]]