이 도전은 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],[]]