संकट
मान लें कि आपके पास S N के माध्यम से S 1 नाम का N ढेर है , जहां प्रत्येक S k (k = 1 से N) में नंबर k की N प्रतियां हैं।
उदाहरण के लिए, जब N = 3 स्टैक इस तरह दिखता है:
1 2 3 <- top of stack
1 2 3
1 2 3 <- bottom of stack
=======
1 2 3 <- stack index
यहां 1, 2 और 3 के रूप में अनुक्रमित 3 ढेर हैं, और प्रत्येक में अपने स्वयं के सूचकांक के एन उदाहरण हैं।
लक्ष्य N ढेर को फिर से व्यवस्थित करना है, ताकि उनमें से प्रत्येक में N से शीर्ष पर क्रम से 1 नंबर की पहचान हो।
उदाहरण के लिए N = 3 में लक्ष्य है कि स्टैक को फिर से व्यवस्थित करना:
1 1 1
2 2 2
3 3 3
=======
1 2 3
केवल एक ही क्रिया जो आप स्टैक के साथ कर सकते हैं वह स्टैक (पॉपिंग) में से एक से शीर्ष नंबर ले रही है, फिर तुरंत इसे एक अलग स्टैक (पुशिंग) के ऊपर रखकर । यह इन शर्तों के अधीन है:
एक संख्या को केवल एक स्टैक पर धकेला जा सकता है यदि यह उस स्टैक पर शीर्ष संख्या से कम या उसके बराबर है।
किसी भी गैर-रिक्त स्टैक को पॉप किया जा सकता है, और यह मानते हुए कि पिछली बुलेट संतुष्ट है, किसी भी स्टैक को धक्का दिया जा सकता है।
किसी भी संख्या को एक खाली स्टैक पर धकेला जा सकता है।
स्टैक की कोई अधिकतम ऊंचाई सीमा नहीं है।
ढेर को बनाया या नष्ट नहीं किया जा सकता है, उनमें से हमेशा एन होते हैं।
यह चुनौती यह तय करने के बारे में है कि स्टैक एक्सचेंज को पूरा करने के लिए कौन से पॉप और पुश करता है, जरूरी नहीं कि सबसे कम चाल में हो, लेकिन एक निश्चित तरीके से।
(कार्ड के डेक के साथ अभ्यास करना समस्या को महसूस करने का एक अच्छा तरीका है।)
चुनौती
एक प्रोग्राम या फ़ंक्शन लिखें जो एक सकारात्मक पूर्णांक एन में लेता है, 3 या उससे ऊपर की गारंटी। प्रारंभिक अवस्था से स्टैक को पुनर्व्यवस्थित करने के लिए आवश्यक सभी पॉप-पुश क्रियाओं को दर्शाने वाला स्ट्रिंग प्रिंट या वापस करें:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
=============
1 2 3 4 5
(एन = 5 मामला)
अंतिम स्थिति तक:
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
=============
1 2 3 4 5
आपके आउटपुट की प्रत्येक पंक्ति में एक स्थान से अलग दो संख्याएँ होनी चाहिए। पहली संख्या पॉप से स्टैक का सूचकांक है और दूसरी संख्या स्टैक का सूचकांक है जिसे पुश करना है। क्रम में सभी लाइनों के कार्यों को निष्पादित करना, बिना किसी नियम को तोड़ने के सही ढंग से स्टैक की व्यवस्था करना चाहिए।
उदाहरण के लिए, यहाँ N = 3 केस के लिए संभावित वैध आउटपुट है:
1 2 [move the top number on stack 1 to the top of stack 2]
1 2 [repeat]
1 2 [repeat]
3 1 [move the top number on stack 3 to the top of stack 1]
2 3 [etc.]
2 3
2 3
2 1
2 1
2 1
3 1
3 1
3 1
3 2
1 2
1 2
1 2
1 3
2 3
2 3
2 3
1 2
3 2
3 1
टिप्पणियाँ
आपके आउटपुट को केवल सही होने की आवश्यकता नहीं है। यानी आपको पॉप और पुश की संख्या को कम करने की आवश्यकता नहीं है।
- तो यह ठीक होगा अगर, कहते हैं, कुछ कदम बार-बार किए गए और तुरंत उलट हो गए।
- एक ही चाल में एक ही स्टैक पर खिसकना और धकेलना, जैसे
2 2
कि अनुमति दी जाती है (हालांकि बिल्कुल बेकार)।
आपके आउटपुट को निर्धारक और परिमित होने की आवश्यकता है।
याद रखें कि स्टैक में 1-आधारित अनुक्रमण होता है। 0-आधारित अनुक्रमण की अनुमति नहीं है।
N से अधिक 9 कोर्स के काम के साथ-साथ एकल अंक N भी होना चाहिए।
यदि आप चाहते हैं तो आप रिक्त स्थान और newlines के स्थान पर किसी भी दो अलग-अलग, गैर-अंकीय मुद्रण योग्य ASCII वर्णों का उपयोग कर सकते हैं । आउटपुट में एक अनुगामी न्यूलाइन (या न्यूलाइन विकल्प) ठीक है।
स्कोरिंग
बाइट्स में सबसे छोटा कोड जीतता है। टाईब्रेकर उच्च मतदान वाला उत्तर है।
यदि आप अपने एल्गोरिथ्म को दिखा सकते हैं तो वैधता ब्राउनी अंक इष्टतम है।
-._(._.)_.-
N=3
इष्टतम के मामले में संभव उत्पादन शामिल है ?