पृष्ठभूमि
जेली अंकगणित परमाणु स्वचालित रूप से वेक्टर होते हैं। वास्तव में, x + y को तब भी अच्छी तरह से परिभाषित किया जाता है जब x और y संख्याएं या संख्याओं के रैग्ड एरे होते हैं। जेली का स्रोत कोड एक जेनेरिक वेक्टर का उपयोग करके इस व्यवहार को लागू करता है, लेकिन इस चुनौती के लिए, हम केवल पूर्णांक और नेस्टेड पूर्णांक सरणियों पर विचार करेंगे।
परिभाषाएं
X की गहराई को 0 के रूप में परिभाषित करें यदि x पूर्णांक है, तो 1 के रूप में यदि यह पूर्णांकों का (संभवतः खाली) समतल सरणी है, और n + 1 के रूप में यदि इसमें गहराई का कम से कम एक तत्व n और गहराई के कोई तत्व नहीं है > एन ।
इस तरह, 1 की गहराई 0 , [] और [1] और [1, 1] की गहराई 1 है , [[], []] और [[1], [1]] और [[1]] और [1 ] , []] गहराई २ है , [१, [१, [१]]] गहराई ३ है , आदि।
ऑपरेशन x + y को निम्नानुसार परिभाषित किया गया है।
यदि x और y में गहराई 0 है , तो उनका योग वापस करें।
यदि x और y में समान लेकिन सकारात्मक गहराई है, तो x के सभी आइटम्स और y के संबंधित आइटम्स के लिए पुनरावर्ती + लागू करें ।
यदि x और y की लंबाई अलग-अलग है, तो लंबी सारणी की पूंछ को sums के सरणी में जोड़ दें।
परिणाम लौटाओ।
यदि एक्स के गहराई से सख्ती से छोटा होता है y के गहराई, रिकर्सिवली लागू + करने के लिए एक्स और के सभी आइटम्स y , और परिणाम लौटने।
विपरीत करें यदि y की गहराई x की तुलना में कड़ाई से कम है ।
उदाहरण के लिए, ऑपरेशन [1, [2, 3], [4]] + [[[10, 20], [30], 40, 50], 60] पर विचार करें ।
बाएं तर्क की गहराई 2 है , जबकि सही तर्क की गहराई 3 है , इसलिए हम गणना करते हैं [1, [2, 3], [4]] + [[10, 20], [30], 40, 50 ]] और [१, [२, ३], [४]] + ६० ।
[१, [२, ३], [४]] और [[१०, २०], [३०], ४०, ५०] दोनों की गहराई २ है , इसलिए हम १ + [१०, २०] , [२, ३] की गणना करते हैं । + [३०] और [४] + ४० ।
1 + [10, 20] = [1 + 10, 1 + 20] = [11, 21]
[२, ३] + [३०] = [२ + ३०, ३] = [३२, ३]
ध्यान दें कि 3 अछूता रहता है, क्योंकि इसमें एक मेल तत्व नहीं है।
[४] + ४० = [४ + ४०] = [४४]
50 तो परिणाम है, उससे मिलते-जुलते तत्व नहीं है [[[11, 21], [32, 3], [44], 50]] ।[१, [२, ३], [४]] + ६० = [१ + ६०, [२, ३] + ६०, [४] + ६०] = [६१, [२ + ६०, ३ + ६०], [] 4 + 60]] , जिसके परिणामस्वरूप [61, [62, 63], [64]] ।
अंतिम परिणाम है [[[११, २१], [३२, ३], [४४], ५०], [६१, [६२, ६३], [६४]] ।
कार्य
एक प्रोग्राम या एक फ़ंक्शन लिखें जो दो पूर्णांकों को लेता है, पूर्णांक के दो नेस्टेड सरणियों या इनपुट के रूप में एक संयोजन और उपरोक्त के रूप में उनकी राशि लौटाता है।
यदि आपकी भाषा में कई प्रकार के प्रकार (सूचियाँ, टुपल्स, वैक्टर आदि) हैं, तो आप उनमें से किसी को भी अपने उत्तर के लिए चुन सकते हैं। वापसी प्रकार को तर्क प्रकार से मेल खाना चाहिए।
उबाऊ और अपराजेय समाधानों को रोकने के लिए, यदि किसी भाषा में अंतर्निहित ऑपरेशन के रूप में यह सटीक ऑपरेशन है, तो आप उस भाषा का उपयोग नहीं कर सकते हैं।
अन्य सभी भाषाओं के सभी बिल्ट-इन की अनुमति है। यदि आपकी पसंद की भाषा इसे अनुमति देती है, तो आप बिल्ट-इन अतिरिक्त को अधिभार और / या फिर से परिभाषित कर सकते हैं।
यह कोड-गोल्फ है , इसलिए बाइट्स में सबसे छोटा कोड जीत जाता है।
परीक्षण के मामलों
0 + 0 = 0
[-1, 0, -1] + [1] = [0, 0, -1]
[] + [0] = [0]
[] + 0 = []
[] + [] = []
[[], 0] + [] = [[], []]
[1, 2, 3] + 10 = [11, 12, 13]
[1, 2, 3] + [10] = [11, 2, 3]
[1, 2, 3] + [10, [20]] = [[11, 12, 13], [21, 2, 3]]
[1, 2, 3, []] + [10, [20]] = [11, [22], 3, []]
[1, [2, [3, [4]]]] + [10, [20]] = [[11, [21]], [[12, [22]], [13, [24]]]]
अधिक परीक्षण मामलों को उत्पन्न करने के लिए, आप इस जेली कार्यक्रम का उपयोग कर सकते हैं ।