अवधि 2 उलट Quine


10

आपका कार्य एक प्रोग्राम लिखना है जो रिवर्स में अपने स्वयं के स्रोत कोड को आउटपुट करता है। हालांकि, जब उलटा कोड चलाया जाता है, तो उसे सही दिशा का सामना करते हुए, स्रोत कोड का उत्पादन करना चाहिए।

उदाहरण

मान लें कि आपका कार्यक्रम है abc। जब चलाने, यह उत्पादन करना चाहिए cbacba, जब चलाया जाता है, तो आउटपुट चाहिए abc

नियम

आपके कार्यक्रम को एक उचित क्वीन के सभी नियमों का पालन करना चाहिए (स्रोत कोड के आउटपुट को छोड़कर)। पलिंड्रोम्स को बंद कर दिया गया है।

रैंडम टिप्पणी: मैं के बारे में पता कर रहा हूँ इस लेकिन मुझे विश्वास है कि इस चुनौती से अलग है क्योंकि तब्दील कोड एक ही गुण होना आवश्यक है।



जवाबों:


9

RProgN , 3 बाइट्स

1
2

इस उत्तर के बारे में मुझे याद दिलाने के लिए @MartinEnder को धन्यवाद ।

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

यह काम किस प्रकार करता है

यह उचित क्वीन की हमारी परिभाषा में एक संभावित दोष का शोषण करता है :

कार्यक्रम के एक हिस्से की पहचान करना संभव है जो कार्यक्रम के एक अलग हिस्से को एन्कोड करता है। ("भिन्न" का अर्थ है कि दोनों भाग अलग-अलग स्थिति में दिखाई देते हैं।)

इसके अलावा, एक क्वीन को प्रत्यक्ष या अप्रत्यक्ष रूप से अपने स्वयं के स्रोत तक नहीं पहुंचना चाहिए।

यह स्पष्ट रूप से यहाँ मामला है, क्योंकि आउटपुट कोड का उल्टा है और कोड कोई palindrome नहीं है।

RProgN - रिवर्स प्रोग्रामर नोटेशन - एक LIFO स्टैक का उपयोग करता है और इस पर आइटम को उस क्रम में प्रिंट करता है जिस क्रम में वे पॉप होते हैं। दो टोकनों 1 और 2 , रिक्त स्थान और / या newlines द्वारा अलग, रिवर्स ऑर्डर में popped और एक newline द्वारा अलग मुद्रित कर रहे हैं।

यह उल्टे प्रोग्राम को प्रिंट करता है

2
1

जो, बदले में, मूल प्रिंट करता है।

! इल्न्नो टीआई yrT


मुझे URL पसंद है।
क्रिस्टोफर

4
हमें इसे ठीक कर लेना चाहिए ... मैं मेटा प्रश्न पर एक नया उत्तर ( इस टिप्पणी के आधार पर ) पोस्ट करूंगा , लेकिन यह संभवतः मौजूदा उत्तरों के साथ प्रतिस्पर्धा करने के लिए पर्याप्त ध्यान नहीं देगा।
18

2
@ETHproductions: इसे करें। मुझे लगता है कि हमारी वर्तमान उचित क्वीन परिभाषा के साथ कई समस्याएं हैं। (तर्क से, मेरी भाषा 7 उचित विचित्रता के लिए किनारे के मामलों में एक अध्ययन है; इस विशेष मामले के अलावा, यह काफी कुछ अन्य लोगों को संभाल सकता है।) FWIW, मुझे यकीन नहीं है कि यह हमारे वर्तमान द्वारा भी एक उचित रिवर्स-क्वीन है। परिभाषा; 1 और 2 स्पष्ट रूप से स्वयं द्वारा एन्कोड किए गए हैं, इसलिए एकमात्र संभावित रुचि यह है कि नई लाइन को एन्कोडिंग क्या है। (यह एक से अलग है 1\n1, जिसमें दोनों ने 1एक दूसरे को सांकेतिक शब्दों में बदलना है; यह संभवतः एक उचित क्वीन है लेकिन उचित-क्वीन नहीं है।)

9

Befunge-98 , 33 बाइट्स

b3*>1#;-:0g,:#;_@_;#:,g0:-;#1>*b3

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


पहला जवाब अच्छा लगा। लेकिन #आपको हेडर बनाने के लिए उपयोग करें । इसके अलावा Tryitonline.net पर जाएं और एक ऑनलाइन दुभाषिया प्राप्त करें
क्रिस्टोफर

2
इसके अलावा सेव बटन पर जाएं और कोडगुल्फ सबमिशन का उपयोग करें।
क्रिस्टोफर

मैंने इसे TIO पर संपादित किया पहली बार मैं लिंक जोड़ना भूल गया था, लेकिन अब इसका शीर्षक और हेडर टिप के लिए धन्यवाद
IQuick 143

ध्यान दें कि TIO पर "कोडगॉल्फ सबमिशन" विकल्प आपको हेडर सहित एक प्रारंभिक टेम्पलेट देता है।
अर्जन जोहानसन

मुझे लगा कि gबेफ़ुंज क्वीन में डिसलाइक किया गया था, क्योंकि यह प्रोग्राम के स्रोत को सीधे मेमोरी से पढ़ता है?

7

विखंडन 2 , 10 बाइट्स

"L;L'!+!'_

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

यह प्रिंट:

_'!+!'L;L"

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

और इसके विपरीत।

व्याख्या

यह रिवर्स क्वीन का एक संशोधन है । यह यहां हमारे लाभ के लिए काम कर रहा है जो !मुद्रण के लिए उपयोग किया जाता है और उद्धरण से केवल एक कोड बिंदु दूर है "। इससे उद्धरण मुद्रण अनुभाग को पैलिंड्रोमिक ( '!+!') बनाना आसान हो जाता है । पहले कोड के साथ शुरू करते हैं:

"L;L'!+!'_

इस कार्यक्रम में दो प्रवेश बिंदु हैं L , जो प्रत्येक को एक बाएं-बाएं परमाणु बनाता है। हालांकि, सही एक तुरंत हिट हो जाता है ;जो इसे नष्ट कर देता है। बाएं वाला स्ट्रिंग मोड में प्रवेश करता है और अंत में चारों ओर लपेटता है, ताकि यह पूरे कोड ( "पीछे को छोड़कर ) को सामने से प्रिंट करता है । वह हमें पहले ही दे देता है _'!+!'L;L। जो कुछ बचा है, उसे प्रिंट करना है "_नजरअंदाज किया जा सकता है, '!परमाणु के द्रव्यमान को 33 (कोड बिंदु !) पर सेट करता है , +इसे बढ़ाता है "और !इसे प्रिंट करता है। वह सब आउटपुट किया है। 'Lसेट की बात करने के लिए कोड परमाणुओं जन Lलेकिन वह अप्रासंगिक है। ;इस परमाणु को भी नष्ट कर देता है और चूंकि कोई परमाणु नहीं बचा है, इसलिए कार्यक्रम समाप्त हो जाता है।

अब दूसरा रास्ता:

_'!+!'L;L"

फिर, हमारे पास दो प्रवेश बिंदु हैं लेकिन एक परमाणु तुरंत नष्ट हो जाता है। इस समय के माध्यम से हम आगे बढ़ते हैं!+!' पहले खंड , इसलिए हम एक उद्धरण मुद्रित करके शुरू करते हैं। '_फिर से कोई वास्ता नहीं है, लेकिन हम की जरूरत है _(या कुछ अन्य बेकार चरित्र) यहां से बचने के लिए 'भागने "। परमाणु अंत तक लपेटता है, स्ट्रिंग प्रोग्राम में एक बार स्रोत कोड को उलट देता है, बाकी प्रोग्राम को रिवर्स में प्रिंट करने के लिए, Lफिर इसे अनदेखा किया जाता है और ;परमाणु को नष्ट कर देता है और प्रोग्राम को समाप्त कर देता है।

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