पृष्ठभूमि
जैसा कि अधिकांश पीपीसीजी नियमित जानते हैं, एक क्वीन एक प्रोग्राम है जो रन होने पर अपने स्वयं के स्रोत कोड को आउटपुट करता है; और दो तारों के बीच लेवेन्सहाइट की दूरी एक स्ट्रिंग को दूसरे में बदलने के लिए आवश्यक सम्मिलन, विलोपन और संपादन की न्यूनतम संख्या है। इस चुनौती में, हम दो अवधारणाओं को एक "लेवेनक्वाइन" में जोड़ रहे हैं: एक प्रोग्राम जो अपने स्वयं के स्रोत कोड को आउटपुट करता है, लेकिन एक वर्ण के एक उदाहरण के साथ डाला जाता है, हटा दिया जाता है, या एक अलग चरित्र के साथ बदल दिया जाता है। (दूसरे शब्दों में, कार्यक्रम और इसके उत्पादन के बीच लेवेंसहाइट दूरी 1. है)
काम
एक लेवेनक्वाइन लिखें जैसे कि इसका आउटपुट एक लेवेनक्वाइन है, उस प्रोग्राम का आउटपुट भी एक लेवेनक्वाइन है, और इसी तरह। इसके अतिरिक्त, कुछ बिंदु पर, प्रोग्राम को बार-बार चलाने, उसके आउटपुट को चलाने, उसके आउटपुट के आउटपुट को चलाने आदि का क्रम अंततः मूल कार्यक्रम पर वापस आना चाहिए।
एक अतिरिक्त प्रतिबंध है जो चीजों को बहुत कठिन बनाता है: इस चक्र के भीतर कहीं दो अलग-अलग कार्यक्रम होने चाहिए जिनमें कोई वर्ण सामान्य नहीं है (दूसरे शब्दों में, ऐसा कोई वर्ण नहीं है जो एक कार्यक्रम के भीतर मौजूद है और दूसरे कार्यक्रम के भीतर भी मौजूद है)। इसलिए आपका कार्यक्रम धीरे-धीरे खुद को एक अलग चरित्र सेट में बदलना है, और फिर से वापस आना है।
यदि आप एक प्रोग्रामिंग भाषा का उपयोग कर रहे हैं, जिसमें किसी भी प्रोग्राम की आवश्यकता नहीं है जो आउटपुट का उत्पादन करता है (उदाहरण के लिए यह केवल एक print
स्टेटमेंट लिखने का और आउटपुट के अन्य उपयोगी रूपों का एक ही तरीका है ), तो आप उस बॉयलरप्लेट को उद्देश्य के लिए किसी भी तरह का व्यवहार नहीं कर सकते हैं यह निर्धारित करने के लिए कि कौन से वर्ण दो कार्यक्रम आम हैं। हालाँकि, आपको अभी भी उस बॉयलरप्लेट को कोड की लेवेनक्वाइन संपत्ति के निर्धारण के उद्देश्य से गिना जाना चाहिए।
स्पष्टीकरण
- चक्र में प्रत्येक "प्रोग्राम" या तो एक पूर्ण प्रोग्राम या फ़ंक्शन हो सकता है। वे सभी समान नहीं हैं, जैसे कुछ पूर्ण कार्यक्रम हो सकते हैं और कुछ कार्य हो सकते हैं।
- चक्र के सभी कार्यक्रमों को आउटपुट के समान रूप का उपयोग करने की आवश्यकता नहीं है। उदाहरण के लिए, कुछ मानक आउटपुट के माध्यम से आउटपुट कर सकते हैं, और कुछ मानक त्रुटि के माध्यम से आउटपुट कर सकते हैं।
- आपके प्रोग्राम बिना किसी इनपुट (या उन भाषाओं में चलाए जाएँगे, जिनके लिए कुछ भी करने के लिए इनपुट की आवश्यकता होती है, सबसे सरल संभव इनपुट)।
- उचित रानी नियम लागू होते हैं; हालांकि एक लेवेनक्वाइन एक सच्ची क्वीन नहीं है, लेकिन आप ऐसा कुछ भी नहीं कर सकते हैं जो उचित क्वीन लिखते समय अवैध हो। विशेष रूप से, एक उचित लेवेनक्वाइन से अशक्त कार्यक्रम कभी भी वैध आउटपुट नहीं होता है (और इस तरह यह आपके चक्र का हिस्सा नहीं हो सकता है)।
- लेवेनक्वाइन प्रतिबंध को बाइट्स के बजाय वर्णों के संदर्भ में मापा जाता है (उदाहरण के
ê
लिए UTF-8 में स्रोत के एन्कोड होने पर भी एक वर्ण है)। नो-कैरेक्टर-इन-कॉमन प्रतिबंध को पात्रों के संदर्भ में भी मापा जाता है। जीत की स्थिति, हालांकि, बाइट्स में गिना जाता है।
विजय की स्थिति
कृपया चक्र से कम से कम तीन कार्यक्रम प्रस्तुत करें: सबसे छोटा कार्यक्रम (बाइट्स में मापा गया); और चक्र से दो प्रोग्राम जिनमें कोई वर्ण सामान्य नहीं है। यह संभव है कि इनमें से दो समान हों, और यह भी संभव है कि तीनों अलग-अलग हों। स्कोर सबसे छोटे कार्यक्रम के बाइट्स में लंबाई पर आधारित होता है, कम बेहतर होने के साथ, इस प्रकार यह एक तरह का कोड-गोल्फ प्रतियोगिता बन जाता है।