Цей виклик надихнув запитання на Mathematica.SE .
Скажіть, у вас є вкладений список / масив якоїсь довільної структури (списки на кожному рівні не обов'язково мають однакову довжину). Для простоти будемо вважати, що вузли - це негативні цілі числа або порожні масиви. Як приклад
[[[1, 3], 2], [1, 4], 12, [[0, [], 0], [5, [7]]]]
Іноді зручніше вирівняти цей список, щоб виконати деякі маніпуляції з вузлами, наприклад
--> [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]]]
Ваше завдання - виконати останній крок.
Враховуючи вкладений список довільних невід’ємних цілих чисел, що представляє бажану структуру результату, та плоский список невід’ємних цілих чисел, які представляють бажані значення, переформатуйте плоский список у форму структурованого списку. Можна припустити, що обидва списки містять однакову кількість цілих чисел.
Як зазвичай, вам не доведеться мати справу з невірним введенням (наприклад, другий список не є рівним, вхід синтаксично неправильним, не має цілих чисел як вузлів тощо). Ви можете змінювати вхідні масиви у своєму коді.
Ви можете написати функцію або програму, взявши введення через STDIN, аргумент командного рядка або аргумент функції, і ви можете повернути результат або роздрукувати його в STDOUT. Ви можете використовувати будь-який зручний список або формат рядка для представлення вводу та виводу (до тих пір, поки формат не буде однозначним і введення не буде попередньо оброблено). Крім того, формат обох входів повинен бути узгодженим (таким чином, ви не можете приймати один вклад як рядок, а інший як список, наприклад). Ви можете приймати списки введення в будь-якому порядку, але, будь ласка, вкажіть точний спосіб введення у своїй відповіді.
Ще одне обмеження: ви не повинні використовувати регулярні вирази. Це виклик маніпуляції з масивом, а не виклик рядкових маніпуляцій.
Це кодовий гольф, тому найкоротша відповідь (у байтах) виграє.
Випробування
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],[]]