परिचय
आप नए तकनीकी स्टार्टअप Dejavu से कुछ गुप्त योजनाओं को चुराने वाले अपराधी हैं। आप पिछली दीवार के ऊपर से छलनी करते हैं, लेकिन एक ऐसा दरवाजा खोजें, जिसे खोलने के लिए पिन की आवश्यकता हो। आप लॉक के मेक को पहचानते हैं और जानते हैं कि यह 0 से 4 तक के सभी नंबरों का उपयोग करके 5 अंकों का पिन लेता है। प्रत्येक अंक में प्रवेश करने के बाद, लॉक दर्ज किए गए अंतिम 5 अंकों की जांच करता है और कोड सही होने पर खुलता है। आपको इस लॉक को प्राप्त करना होगा, और तेजी से।
संक्षेप में सुपरपरमुटेशन
एक क्रमचय एक निश्चित समूह के अंकों का सभी संभव संयोजन है। उदाहरण के लिए, अंक 0, 1, 2 के सभी क्रमांकन हैं:
012, 021, 102, 120, 201 और 210।
यदि हम इन सभी क्रमपरिवर्तन को एक साथ जोड़ते हैं, तो हमें एक अतिपरिवर्तन प्राप्त होता है:
012021102120201210
इस अतिपरिवर्तन में 0, 1, 2 के सभी क्रमपरिवर्तन शामिल हैं, लेकिन इससे एक को कम करना संभव है। मैं यहाँ थोड़ा परेशान करने जा रहा हूँ, लेकिन इन अंकों में सबसे छोटा है:
012010210
हमारे इरादों और उद्देश्यों के लिए, यह अनिवार्य रूप से अंकों की सबसे छोटी स्ट्रिंग है जिसमें उन अंकों के सभी संभावित क्रमांकन शामिल हैं, अर्थात एक सुपरपरमुटेशन।
कार्य
आपका कार्य सुपरपरमुटेशन उदाहरण की तुलना में थोड़ा कठिन है, जैसा कि ऊपर दिखाया गया है, क्योंकि आपके पास चिंता करने के लिए दो और अंक हैं। - यदि आपने सुपरपरमुटेशन के बारे में नहीं पढ़ा है, या ऊपर दिया गया मेरा उदाहरण थोड़ा अस्पष्ट था, तो मैं आपको इस विषय पर पैट्रिक ऑनर का यह शानदार लेख पढ़ने का सुझाव देता हूं (यह चुनौती उनके लेख से काफी प्रेरित थी, इसलिए उनके लिए यश:) https://www.quantamagazine.org/unscrambling-the-hidden-secrets-of-superpermutations-20190116/ । आपका लक्ष्य संभवतया सबसे छोटा कार्यक्रम लिखना है जो अंकों के 0 से 4 तक का सुपरपरमुटेशन उत्पन्न करता है।
स्कोरिंग
आपका प्रोग्राम किसी भी प्रकार का कोई इनपुट नहीं लेता है, और 0 से 4 तक अंकों का एक सुपरपरमुटेशन उत्पन्न करता है। इसके परिणामस्वरूप सुपरपरमुटेशन को आपकी पसंद की भाषा द्वारा प्रदान की गई सीमा तक उपयोगकर्ता के लिए प्रदर्शित कंसोल या विज़ुअली में प्रिंट किया जाना चाहिए। इसके लिए सबसे छोटा क्रमपरिवर्तन संभव नहीं है, बस इसे एक मान्य सुपरपरमुटेशन होना चाहिए। इस वजह से, लक्ष्य सबसे छोटा सुपरपरमुटेशन के साथ सबसे छोटा प्रोग्राम लिखना है, इसलिए आपको अपने स्कोर की गणना करनी चाहिए:
फ़ाइल का आकार (बाइट्स) * उत्पन्न सुपरपरमुटेशन लंबाई (अंक)
उदाहरण के लिए, यदि मेरे पास 40 बाइट का कार्यक्रम था, और मेरा सुपरपरमुटेशन 153 अंक लंबा है, तो मेरा स्कोर होगा:
40 * 153 = 6120
हमेशा की तरह, इस स्कोर को कम से कम प्राप्त करने का लक्ष्य है।
खाका
यहां बताया गया है कि आपको अपना उत्तर कैसे देना चाहिए:
भाषा | स्कोर
काम के माहौल में कोड के लिए लिंक (यदि संभव हो तो)
code snippet
कोड स्पष्टीकरण, आदि।
Finalities
यह इस साइट पर मेरे पहले सवालों में से एक है। तो कृपया मुझे बताएं कि क्या मुझे कुछ याद आ रहा है या मेरी चुनौती का एक खंड स्पष्ट नहीं है। धन्यवाद, और मज़ा गोल्फ है!