Wyzwanie to zostało zainspirowane pytaniem na Mathematica.SE .
Załóżmy, że masz zagnieżdżoną listę / tablicę o dowolnej strukturze (listy na każdym poziomie niekoniecznie mają taką samą długość). Dla uproszczenia założymy, że węzły to nieujemne liczby całkowite lub puste tablice. Jako przykład
[[[1, 3], 2], [1, 4], 12, [[0, [], 0], [5, [7]]]]
Czasami wygodniej jest spłaszczyć tę listę, aby wykonać pewne manipulacje węzłami, np
--> [1, 3, 2, 1, 4, 12, 0, 0, 5, 7]
--> [1, 1, 0, 1, 0, 0, 0, 0, 1, 1]
Ale ostatecznie chcesz zachować oryginalną strukturę, więc chcesz z powrotem to zmienić
--> [[[1, 1], 0], [1, 0], 0, [[0, [], 0], [1, [1]]]
Twoim zadaniem jest wykonanie ostatniego kroku.
Biorąc pod uwagę zagnieżdżoną listę dowolnych nieujemnych liczb całkowitych, która reprezentuje pożądaną strukturę wyniku, oraz płaską listę nieujemnych liczb całkowitych, które reprezentują pożądane wartości, przekształca płaską listę w formę listy strukturalnej. Możesz założyć, że obie listy zawierają tę samą liczbę liczb całkowitych.
Jak zwykle nie musisz radzić sobie z nieprawidłowymi danymi wejściowymi (np. Druga lista nie jest płaska, dane wejściowe są zniekształcone składniowo, nie mają liczb całkowitych jako węzłów itp.). Możesz modyfikować tablice wejściowe w swoim kodzie.
Możesz napisać funkcję lub program, przyjmując dane wejściowe przez STDIN, argument wiersza poleceń lub argument funkcji, i możesz zwrócić wynik lub wydrukować go do STDOUT. Możesz użyć dowolnego wygodnego formatu listy lub łańcucha do reprezentowania danych wejściowych i wyjściowych (o ile format jest jednoznaczny, a dane wejściowe nie są przetwarzane wstępnie). Ponadto format obu danych wejściowych musi być spójny (na przykład nie można traktować jednego wejścia jako ciągu, a drugiego jako listy). Możesz wziąć listy wprowadzania w dowolnej kolejności, ale proszę podać dokładną metodę wprowadzania w odpowiedzi.
Jeszcze jedno ograniczenie: nie wolno używać wyrażeń regularnych. Jest to wyzwanie manipulacji tablicą, a nie wyzwanie manipulacji ciągiem.
To jest kod golfowy, więc wygrywa najkrótsza odpowiedź (w bajtach).
Przypadki testowe
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],[]]