जैसा कि इस प्रश्न में वर्णित है :
डेविड मॉर्गन-मार द्वारा डिज़ाइन किया गया ड्रॉप्सॉर्ट, एक रेखीय-समय "सॉर्टिंग एल्गोरिथ्म" का एक उदाहरण है जो एक सूची का उत्पादन करता है जो वास्तव में, सॉर्ट किया गया है, लेकिन इसमें केवल कुछ मूल तत्व शामिल हैं। कोई भी तत्व जो कम से कम उतना बड़ा नहीं है जितना कि पूर्ववर्ती तत्वों में से अधिकतम इसे सूची से हटा दिया गया है और त्याग दिया गया है।
उनके परीक्षण मामलों में से एक का उपयोग करने के लिए, {1, 2, 5, 4, 3, 7}
पैदावार का एक इनपुट {1, 2, 5, 7}
, जैसा कि 4
और 3
दोनों को पहले "क्रमबद्ध" मूल्य से छोटा होने के लिए गिरा दिया गया है 5
।
हम एल्गोरिदम को "सॉर्ट करना" नहीं चाहते हैं, हम चाहते हैं कि वे वास्तविक सौदे हों। इसलिए, मैं चाहता हूं कि आप एक ऐसा प्रोग्राम लिखें, जिसमें संख्याओं की एक सूची दी गई हो, ड्रॉप्सरेड सूचियों की एक सूची को आउटपुट करता है (एक पूर्ण छंटनी एल्गोरिथ्म होने के लिए, हमें इन सूचियों को मर्ज करना होगा, लेकिन दो सॉर्ट की गई सूचियों को मर्ज करने से पहले, और आपको इसे फिर से करने के लिए कहना बहुत अधिक दो सवाल पूछ रहा है, इसलिए यह सवाल विशेष रूप से हमारे पूर्ण ड्रॉपसॉर्ट का "विभाजन" चरण है।
हालाँकि, हमारी सूचियों की व्यवस्था और सामग्री महत्वपूर्ण है। आपके प्रोग्राम का आउटपुट ड्रॉपसॉर्ट के आउटपुट के बराबर होना चाहिए, उसके बाद डिसलाइज्ड वैल्यू का ड्रॉपशॉट, और इसी तरह तब तक जब तक आपके पास केवल सॉर्ट की गई चेन की सूची न हो। फिर, मौजूदा परीक्षण सूट उधार (और दो और जोड़कर):
Input -> Output
{1, 2, 5, 4, 3, 7} -> {{1, 2, 5, 7}, {4}, {3}}
{10, -1, 12} -> {{10, 12}, {-1}}
{-7, -8, -5, 0, -1, 1} -> {{-7, -5, 0, 1}, {-8, -1}}
{9, 8, 7, 6, 5} -> {{9}, {8}, {7}, {6}, {5}}
{10, 13, 17, 21} -> {{10, 13, 17, 21}}
{10, 10, 10, 9, 10} -> {{10, 10, 10, 10}, {9}} //Note equivalent values aren't dropped
{5, 4, 3, 8, 7, 6} -> {{5, 8}, {4, 7}, {3, 6}}
{0, 2, 5, 4, 0, 7} -> {{0, 2, 5, 7}, {4}, {0}}
आप मान सकते हैं कि इनपुट गैर-रिक्त है।
यह कोड-गोल्फ है , इसलिए मानक नियम लागू होते हैं!
{3,4,5,3,4,5,3,4,5}
परिणाम होना चाहिए {{3,4,5,5,5},{3,4,4},{3}}
?
[5, 4, 3, 8, 7, 6] -> [5, 8], [4,3,7,6]
?