आपको एक प्रोग्राम या फ़ंक्शन लिखना होगा जो एक नेस्टेड सूची को सॉर्ट करता है। यहां नेस्टेड सूची को छाँटने के नियम दिए गए हैं:
आइए इस सूची को एक उदाहरण के रूप में लेते हैं:
((5, 2), 2, 7, (2, 1, (3, 4)), 9)
इस सूची के प्रत्येक तत्व की "प्राथमिकता" है। एक तत्व एक संख्या या एक सबलिस्ट के रूप में गिना जाता है। सबसे पहले, प्रत्येक तत्व को समान गहराई पर प्राथमिकता दें। यदि कोई तत्व सिर्फ एक संख्या है, तो उसकी प्राथमिकता स्वयं संख्या के समान है। यदि कोई तत्व एक सबलिस्ट है, तो उसकी प्राथमिकता इसमें सभी संख्याओं का योग है, न कि किसी उप-सब्लिस्ट्स को शामिल करना।
तो, गहराई 1 के सभी तत्वों की प्राथमिकताएं हैं:
( 7 ) 2 7 ( 3 ) 9
((5, 2), 2, 7, (2, 1, (3, 4)), 9)
प्रत्येक तत्व को प्राथमिकता से क्रमबद्ध करें। यदि कोई टाई है, तो आपको मूल सूची के समान क्रम रखना होगा।
2 ( 3 ) ( 7 ) 7 9
(2, (2, 1, (3, 4)), (5, 2), 7, 9)
हर सबलिस्ट के लिए दोहराएँ। तो इस सबलिस्ट पर
(2, 1, (3, 4))
हमारी प्राथमिकताएं ऐसी दिखती हैं:
2 1 ( 7 )
(2, 1, (3, 4))
तो क्रमबद्ध, ऐसा लगता है:
(1, 2, (3, 4))
(3, 4)
पहले से ही हल है, इसलिए हम कर रहे हैं। (5, 2)
जिसके लिए परिणाम दोहराएं (2, 5)
और हम कर रहे हैं! हमारी अंतिम सूची है:
(2, (1, 2, (3, 4)), (2, 5), 7, 9)
नियम:
अत्यधिक संदिग्ध, लेकिन सिर्फ मामले में गणितज्ञ के पास इसके लिए कुछ है, कोई भी नेस्टेड सूची सॉर्टिंग बिल्डरों की अनुमति नहीं है। नियमित छंटाई कार्यों की अनुमति है।
I / O किसी भी उचित प्रारूप में हो सकता है।
हर सबलिस्ट में कम से कम एक नंबर या सूची होगी। इसके अलावा, सब्लिस्ट्स को कई स्तरों तक नेस्टेड किया जा सकता है। उदाहरण के लिए, में , क्योंकि यह उस में केवल उप-सूचियों है, 0 से प्राथमिकता है।
(1, 2, (((3))))
(((3)))
अमान्य सूचियाँ (बेजोड़ कोष्ठक, गैर-संख्याएँ, गलत ब्रैकेट प्रकार, ऋणात्मक संख्याएँ, आदि) अपरिभाषित व्यवहार का परिणाम हैं।
टेस्ट I / O:
(1, 2, 3) ---> (1, 2, 3)
(1, 2, 6, 3, 9, 8) ---> (1, 2, 3, 6, 8, 9)
(4, 3, (2), (1)) ---> ((1), (2), 3, 4)
(4, 3, (2), ((1))) ---> (((1)), (2), 3, 4)
(5, (1, 2, (9, 8))) ---> ((1, 2, (8, 9)), 5)
(3, (1, 2), (2, 1)) ---> (3, (1, 2), (1, 2))
(3, (1, 2, (99)), (2, 1, (34))) ---> (3, (1, 2, (99)), (1, 2, (34)))
(7, 2, (1, (9, 12)), (4, 3, 2, (1, 2))) ---> ((1, (9, 12)), 2, 7, (2, 3, (1, 2), 4))
बाइट्स जीत में सबसे छोटा जवाब।