ड्रिफ्टोर्ट एक सरणी को "सॉर्ट" करने का एक सरल तरीका है। यह सरणी पर तत्वों को "स्लाइडिंग" या "घूर्णन" द्वारा कार्य करता है जब तक कि सरणी को सॉर्ट नहीं किया जाता है, या जब तक कि सरणी को सॉर्ट करने में विफल रहता है।
दो उदाहरणों से चलते हैं। पहले, सरणी पर विचार करें [10, 2, 3, 4, 7]
। चूंकि सरणी क्रमबद्ध नहीं है, इसलिए हम इसे एक बार घुमाते हैं। (यह किसी भी दिशा में हो सकता है, इसलिए जब तक यह एक ही दिशा रहता है।) तब, सरणी बन जाती है:
[7, 10, 2, 3, 4]
यह सॉर्ट नहीं किया गया है, इसलिए हम फिर से घुमाते हैं।
[4, 7, 10, 2, 3]
और फिर:
[3, 4, 7, 10, 2]
और एक अंतिम समय:
[2, 3, 4, 7, 10]
और यह हल है! तो सरणी [10, 2, 3, 4, 7]
बहती है। यहाँ सरणी के सभी घुमाव हैं, स्पष्टता के लिए:
[10, 2, 3, 4, 7]
[7, 10, 2, 3, 4]
[4, 7, 10, 2, 3]
[3, 4, 7, 10, 2]
[2, 3, 4, 7, 10]
अब सरणी पर विचार करें [5, 3, 9, 2, 6, 7]
। इसके रोटेशन को देखें:
[5, 3, 9, 2, 6, 7]
[7, 5, 3, 9, 2, 6]
[6, 7, 5, 3, 9, 2]
[2, 6, 7, 5, 3, 9]
[9, 2, 6, 7, 5, 3]
[3, 9, 2, 6, 7, 5]
इन सरणियों में से कोई भी क्रमबद्ध नहीं है, इसलिए सरणी [5, 3, 9, 2, 6, 7]
ड्रिफ्टॉर्टेबल नहीं है।
उद्देश्य किसी गैर-रिक्त सरणी / पूर्णांक की सूची को एक प्रोग्राम / फ़ंक्शन के इनपुट के रूप में देखते हुए, इनपुट पर ड्रिफ्टसर्ट को लागू करें और इसे आउटपुट करें, या यदि इसे ड्रिफ्टर्स नहीं किया जा सकता है, तो एक फ़ॉल्सी मान ( या खाली सरणी / सूची) आउटपुट करें। पूर्णांक आपकी भाषाओं में अधिकतम / मिनट तक सीमित हैं, लेकिन यह अधिकतम के लिए कम से कम 255, और मिनट के लिए 0 होना चाहिए।
आप अंतर्निहित छँटाई विधियों का उपयोग कर सकते हैं, लेकिन एक अंतर्निहित नहीं जो चुनौती को हल करता है।
यह एक कोड-गोल्फ है , इसलिए बाइट्स में सबसे छोटा प्रोग्राम है।
परीक्षण के मामलों
input => output
[1] => [1]
[5, 0, 5] => [0, 5, 5]
[3, 2, 1] => false
[0, 9, 3] => false
[1, 2, 3, 4] => [1, 2, 3, 4]
[4, 1, 2, 3] => [1, 2, 3, 4]
[0, 2, 0, 2] => false
[5, 3, 9, 2, 6, 7] => false
[0, 0, 0, 0, 0, 0, 0] => [0, 0, 0, 0, 0, 0, 0]
[75, 230, 30, 42, 50] => [30, 42, 50, 75, 230]
[255, 255, 200, 200, 203] => [200, 200, 203, 255, 255]
shiftsort
?
shift
ऑपरेशन के साथ भ्रम पैदा कर सकता है जो किसी सरणी के पहले तत्व को हटा देता है।
sorted(l)
एक सन्निहित उप-सूची हैl+l
।