में पैनकेक छँटाई केवल अनुमति आपरेशन अनुक्रम में से कुछ उपसर्ग के तत्वों को उल्टा करने के लिए है। या, पेनकेक्स के ढेर के बारे में सोचें: हम स्टैक में कहीं न कहीं एक स्पैटुला डालते हैं और स्पैचुला के ऊपर सभी पेनकेक्स को फ्लिप करते हैं।
उदाहरण के लिए, अनुक्रम 6 5 4 1 2 3
को पहले 6
तत्वों (संपूर्ण अनुक्रम) को 3 2 1 4 5 6
फ़्लिप करके, मध्यवर्ती परिणाम को उपजाने , और फिर पहले 3
तत्वों को फ़्लिप करके, हल किया जा सकता है 1 2 3 4 5 6
।
जैसा कि केवल एक ही ऑपरेशन है, संपूर्ण सॉर्टिंग प्रक्रिया को पूर्णांकों के अनुक्रम द्वारा वर्णित किया जा सकता है, जहां प्रत्येक पूर्णांक में पीआर फ्लिप शामिल करने के लिए तत्वों / पेनकेक्स की संख्या होती है। ऊपर के उदाहरण के लिए, क्रमबद्ध अनुक्रम होगा 6 3
।
एक और उदाहरण: के 4 2 3 1
साथ हल किया जा सकता है 4 2 3 2
। यहाँ मध्यवर्ती परिणाम है:
4 2 3 1
flip 4: 1 3 2 4
flip 2: 3 1 2 4
flip 3: 2 1 3 4
flip 2: 1 2 3 4
काम:
एक प्रोग्राम लिखें जो पूर्णांक की एक सूची लेता है और एक वैध पैनकेक अनुक्रम अनुक्रमित करता है।
सॉर्ट करने के लिए सूची या तो स्टड, या कमांड लाइन तर्कों से एक अलग अंतरिक्ष सूची हो सकती है। सूची को प्रिंट करें हालांकि यह सुविधाजनक है, जब तक यह कुछ हद तक पठनीय है।
यह कोडगोल्फ है!
संपादित करें:
जैसा कि मैंने टिप्पणियों में कहा था, आपको आउटपुट का अनुकूलन करने की आवश्यकता नहीं है (सबसे छोटा अनुक्रम एनपी-हार्ड है )। हालांकि , मुझे सिर्फ यह एहसास हुआ कि जब तक आप वांछित परिणाम (एक [नया?] प्रकार का बोगोसर्ट) प्राप्त नहीं कर लेते, तब तक एक सस्ता समाधान यादृच्छिक संख्याओं को फेंकना होगा। अब तक किसी भी उत्तर ने ऐसा नहीं किया है, इसलिए मैं अब घोषणा करता हूं कि आपके एल्गोरिथ्म को किसी भी (छद्म-) यादृच्छिकता पर भरोसा नहीं करना चाहिए ।
जब आप सभी अपने आप को मार रहे हैं, तो यहां रूबी 2.0 (60 अक्षर) में एक बोगोपेंकसॉर्ट संस्करण है, इसे इसमें रगड़ने के लिए:
a=$*.map &:to_i
a=a[0,p(v=rand(a.size)+1)].reverse+a[v..-1]while a!=a.sort
4 3 2 1
कि4 2 3 1