चक्रीय लेवेनक्वाइन


45

पृष्ठभूमि

जैसा कि अधिकांश पीपीसीजी नियमित जानते हैं, एक एक प्रोग्राम है जो रन होने पर अपने स्वयं के स्रोत कोड को आउटपुट करता है; और दो तारों के बीच लेवेन्सहाइट की दूरी एक स्ट्रिंग को दूसरे में बदलने के लिए आवश्यक सम्मिलन, विलोपन और संपादन की न्यूनतम संख्या है। इस चुनौती में, हम दो अवधारणाओं को एक "लेवेनक्वाइन" में जोड़ रहे हैं: एक प्रोग्राम जो अपने स्वयं के स्रोत कोड को आउटपुट करता है, लेकिन एक वर्ण के एक उदाहरण के साथ डाला जाता है, हटा दिया जाता है, या एक अलग चरित्र के साथ बदल दिया जाता है। (दूसरे शब्दों में, कार्यक्रम और इसके उत्पादन के बीच लेवेंसहाइट दूरी 1. है)

काम

एक लेवेनक्वाइन लिखें जैसे कि इसका आउटपुट एक लेवेनक्वाइन है, उस प्रोग्राम का आउटपुट भी एक लेवेनक्वाइन है, और इसी तरह। इसके अतिरिक्त, कुछ बिंदु पर, प्रोग्राम को बार-बार चलाने, उसके आउटपुट को चलाने, उसके आउटपुट के आउटपुट को चलाने आदि का क्रम अंततः मूल कार्यक्रम पर वापस आना चाहिए।

एक अतिरिक्त प्रतिबंध है जो चीजों को बहुत कठिन बनाता है: इस चक्र के भीतर कहीं दो अलग-अलग कार्यक्रम होने चाहिए जिनमें कोई वर्ण सामान्य नहीं है (दूसरे शब्दों में, ऐसा कोई वर्ण नहीं है जो एक कार्यक्रम के भीतर मौजूद है और दूसरे कार्यक्रम के भीतर भी मौजूद है)। इसलिए आपका कार्यक्रम धीरे-धीरे खुद को एक अलग चरित्र सेट में बदलना है, और फिर से वापस आना है।

यदि आप एक प्रोग्रामिंग भाषा का उपयोग कर रहे हैं, जिसमें किसी भी प्रोग्राम की आवश्यकता नहीं है जो आउटपुट का उत्पादन करता है (उदाहरण के लिए यह केवल एक printस्टेटमेंट लिखने का और आउटपुट के अन्य उपयोगी रूपों का एक ही तरीका है ), तो आप उस बॉयलरप्लेट को उद्देश्य के लिए किसी भी तरह का व्यवहार नहीं कर सकते हैं यह निर्धारित करने के लिए कि कौन से वर्ण दो कार्यक्रम आम हैं। हालाँकि, आपको अभी भी उस बॉयलरप्लेट को कोड की लेवेनक्वाइन संपत्ति के निर्धारण के उद्देश्य से गिना जाना चाहिए।

स्पष्टीकरण

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

विजय की स्थिति

कृपया चक्र से कम से कम तीन कार्यक्रम प्रस्तुत करें: सबसे छोटा कार्यक्रम (बाइट्स में मापा गया); और चक्र से दो प्रोग्राम जिनमें कोई वर्ण सामान्य नहीं है। यह संभव है कि इनमें से दो समान हों, और यह भी संभव है कि तीनों अलग-अलग हों। स्कोर सबसे छोटे कार्यक्रम के बाइट्स में लंबाई पर आधारित होता है, कम बेहतर होने के साथ, इस प्रकार यह एक तरह का प्रतियोगिता बन जाता है।


उन लोगों के लिए जो हटाए गए पोस्ट देख सकते हैं: सैंडबॉक्स पोस्ट यहां था ।

मुझे लगता है कि यह उत्तर के लिए भी अच्छा होगा कि चक्र की लंबाई शामिल हो।
mbomb007

क्या होगा अगर, कहते हैं, आउटपुट के प्रदर्शन के लिए भाषा के कई कार्य हैं, लेकिन वे सभी जोड़ीदार पात्रों को साझा करते हैं?
अर्जन जोहान्सन

2
@ Wouldn'trjanJohansen: मुझे लगता है कि मैं भी उनमें से एक को चुनने और उस मामले में इसके साथ चिपके रहने का विरोध नहीं करूंगा। हालाँकि, यह यकीनन नॉन कमेटिंग है; मैं चाहता था कि नियम वस्तुनिष्ठ हो, क्योंकि अन्यथा लोगों के पास इसमें कमियां निकालने की कोशिश करने की प्रवृत्ति होती है, और यदि आप नियम को बहुत जटिल बनाने की कोशिश करते हैं, तो इसका मतलब क्या है, इस पर बहस होती है।

क्या यह एक लेवेनक्वाइन-वार हो सकता है? मूल स्रोत कोड से दूरी में 1 बाइट बंद है?
मैजिक ऑक्टोपस Urn

जवाबों:


34

गोल> <> , 252 167 बाइट्स

1>'r&ff9++r}}r&f*bc++1z.r}r6=z?Hzznr6rHr}r:ee+6+=z9*5c*+1z . }&z+5c*&H}rebe*b+ke++rHS6PWSb`S6P$$1W5/11b6W6EE/W6EE`S6P$$W61`S6P5W6$5_61P1WW_b_

इसे ऑनलाइन आज़माएं!

और पारस्परिक रूप से अलग ( सत्यापन ) कार्यक्रम:

0<CŽB‚‚UGGŽ™™ŽB‚F~GGM–JŽ™ŽRY–[d––ŠŽRŽdŽ™ŽVGRGY–UFQFGM–<J<™B–GQFBd™Ž~F~G‡GGŽd;oRl-7-7so~|;oRl@@-Ms7QKMM3-3-3~R-4sRaaK-3sRaa|;oRl@@sR43M|;oRlQ-sR43@Q{RMlMss3{~{"

इसे ऑनलाइन आज़माएं!

यह ज्यादातर म्यूचुअल एक्सक्लूसिव क्विन्स चैलेंज के मेरे जवाब से प्रेरित है , जिसमें कुडोस भी बब्बलर के गोल> <> उत्तर पर जा रहे हैं

यहां एक सत्यापन कार्यक्रम है जिसे आप चला सकते हैं। दुर्भाग्य से, यह कई बार खत्म हो जाता है, लेकिन आप देख सकते हैं कि कैसे एक खंड दूसरे खंड का निर्माण करता है और फिर आप मुद्रित किए गए अंतिम संस्करण की प्रतिलिपि बना सकते हैं और इसे जारी रखने के लिए इनपुट में पेस्ट कर सकते हैं। आखिरकार, आप अपने द्वारा डाले गए पहले कार्यक्रम पर पहुँचेंगे।

व्याख्या

कोड के दोनों खंड दो वर्गों से बने होते हैं, वास्तविक निष्पादन भाग और कोड के अन्य अनुभाग वाले डेटा। वे दोनों व्यावहारिक रूप से समान रूप से कार्य करते हैं:

वे एक झंडे पर निर्भर (कोड के पहले अक्षर, या तो 1या 0)। यदि ध्वज सेट किया जाता है, तो वे 252 वें वर्ण को नीचे ले जाकर, उससे जोड़ / घटाकर 28और इसे कोड में जोड़कर कोड के दूसरे खंड का निर्माण शुरू करेंगे ।

उदाहरण के लिए, ऊपर दिए गए पहले कार्यक्रम के बाद यहां कोड के पहले दो पुनरावृत्तियों हैं:

1>'r&ff9++r}}r&f*bc++1z.r}r6=z?Hzznr6rHr}r:ee+6+=z9*5c*+1z . }&z+5c*&H}rebe*b+ke++rHS6PWSb`S6P$$1W5/11b6W6EE/W6EE`S6P$$W61`S6P5W6$5_61P1WW_b_C

1>'r&ff9++r}}r&f*bc++1z.r}r6=z?Hzznr6rHr}r:ee+6+=z9*5c*+1z . }&z+5c*&H}rebe*b+ke++rHS6PWSb`S6P$$1W5/11b6W6EE/W6EE`S6P$$W61`S6P5W6$5_61P1WW_b_CŽ

आखिरकार जब यह वर्तमान अनुभाग के अंत तक पहुँच जाता है, यह कोड (के दूसरे चरित्र flips <करने के लिए >अन्य अनुभाग के लिए बात करने के लिए और फिर से वापस)।

यहां दोनों खंड एक साथ हैं, पहले खंड को निष्पादित करने से दूसरे को निष्पादित करने के बारे में।

1>'r&ff9++r}}r&f*bc++1z.r}r6=z?Hzznr6rHr}r:ee+6+=z9*5c*+1z . }&z+5c*&H}rebe*b+ke++rHS6PWSb`S6P$$1W5/11b6W6EE/W6EE`S6P$$W61`S6P5W6$5_61P1WW_b_CŽB‚‚UGGŽ™™ŽB‚F~GGM–JŽ™ŽRY–[d––ŠŽRŽdŽ™ŽVGRGY–UFQFGM–<J<™B–GQFBd™Ž~F~G‡GGŽd;oRl-7-7so~|;oRl@@-Ms7QKMM3-3-3~R-4sRaaK-3sRaa|;oRl@@sR43M|;oRlQ-sR43@Q{RMlMss3{~{"

इसे ऑनलाइन आज़माएं!

झंडे प्रत्येक अनुभाग के लिए विपरीत होते हैं, इसलिए नव निष्पादित अनुभाग कोड के अन्य अनुभाग को हटाना शुरू कर देगा, जब तक कि वह अपने कोड तक नहीं पहुंच जाता। इस बिंदु पर, यह झंडा फहराता है और चक्र फिर से दोहराता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.