यह चुनौती 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],[]]