कोडगॉल्फ: क्विन एंड एंटीकाइन


13

यह चुनौती क्या आप मेटा क्वीन के समान है ?

एक क्वीन एक प्रोग्राम है जो STDOUT पर खुद को प्रोड्यूस करता है। यह चुनौती एक प्रोग्राम A को उत्पन्न करने के लिए है, जब रन STDOUT पर एक प्रोग्राम B का उत्पादन करता है। प्रोग्राम B जब रन STDOUT पर प्रोग्राम A बनाता है। प्रोग्राम ए और बी को एक ही भाषा में (और रन इन) लिखा जाना चाहिए। जुड़ा हुआ प्रश्न A! = B. को बहुत आसान लग रहा था। इसलिए इस प्रश्न के लिए, हम निम्नलिखित नियमों का उपयोग करते हुए, ए और बी एंटीकाइन्स पर जोर देते हैं:

  1. प्रोग्राम A और B समान वर्णों का उपयोग नहीं कर सकते हैं, व्हॉट्सएप और स्टेटमेंट सेपरेटर और विराम चिह्न वर्णों के लिए सहेज सकते हैं।
  2. प्रोग्राम ए और बी में प्रत्येक में कम से कम एक ऐसा पात्र होना चाहिए जो न तो व्हाट्सएप हो और न ही स्टेटमेंट सेपरेटर हो और न ही विराम चिह्न हो।
  3. नियम 1 और 2 के उद्देश्य के लिए, शब्द 'व्हाट्सएप' किसी भी प्रतीक या अनुक्रम के प्रतीक को छोड़कर, जो स्वयं एक कथन, ऑपरेटर या प्रतीक है जिसकी व्याख्या की जाती है (एक विभाजक के विपरीत)। इसलिए व्हॉट्सएप भाषा में, व्हॉट्सएप नहीं है।
  4. एक बयान विभाजक अलग-अलग बयानों के लिए भाषा के भीतर पारंपरिक रूप से इस्तेमाल किया जाने वाला एक वाक्यविन्यास तत्व है। इसमें अजगर में न्यूलाइन, या जावा, सेमी या सी में अर्धविराम शामिल होगा।
  5. विराम चिह्न वर्ण एक ASCII वर्ण है जो न तो व्हाट्सएप है और न ही पोसिक्स शब्द वर्ण वर्ग में (अर्थात इस उद्देश्य के लिए एक अंडरस्कोर विराम चिह्न नहीं है) - अर्थात ispunct()यह सच होगा, और यह नहीं है _
  6. जब प्रोग्राम A को उसके STDOUT पर प्रोग्राम (प्रोग्राम B) का उत्पादन करना चाहिए, जो कि बदले में चलने पर प्रोग्राम A का उत्पादन करता है।
  7. प्रोग्राम A और B एक ही प्रोग्रामिंग भाषा में होने चाहिए।
  8. उपयोग की जाने वाली प्रोग्रामिंग भाषा वास्तव में एक प्रोग्रामिंग भाषा होनी चाहिए। जब तक आप एक अच्छा मामला नहीं बनाते हैं, तब तक मैं सुझाव दूंगा कि यह पूरा होना चाहिए।
  9. A और B में से कम से कम एक को भाषा के भीतर कम से कम एक कथन निष्पादित करना चाहिए।

यह कोड गोल्फ है, इसलिए सबसे छोटा उत्तर जीतता है, स्कोर ए में बाइट्स में प्रोग्राम ए की लंबाई (यानी प्रोग्राम बी की लंबाई प्रासंगिक नहीं है)।


क्या आप पहले खंड में अपवादों की सूची में "विराम चिह्न" जोड़ सकते हैं? कई भाषाओं में इस कार्य को हल करना असंभव है (विशेष रूप से वे जो आपको मुख्य फ़ंक्शन में घुंघराले ब्रेसिज़ की आवश्यकता होती है) अन्यथा।
फूजएक्सएक्सएल

संबंधित लेकिन शायद पर्याप्त रूप से अलग।
मार्टिन एंडर

@FUZxxl मैंने विराम चिह्नों की अनुमति दी है लेकिन अंडरस्कोर को बाहर रखा है।
शाम

1
प्रयोजनों के लिए यहाँ के लिए, कर रहे हैं Aऔर aअलग अलग विचार "वर्ण"?
HostileFork का कहना है कि

1
यह बेहतर होगा यदि आप ASCII वर्णों की पूरी सूची प्रदान करते हैं जो नियम 5 से मेल खाते हैं
विज्ञापन छोड़ दें क्योंकि SE EVIL

जवाबों:


5

गोल्फस्क्रिप्ट, 13 बाइट्स

1{\~\".~"}.~

आउटपुट है

-2{\~\".~"}.~

जो प्रारंभिक कार्यक्रम उत्पन्न करता है।

बाइट काउंट में अनुगामी एलएफ शामिल होता है, क्योंकि आउटपुट के आउटपुट में यह शामिल होगा।

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

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

1       # Push 1.
{       # Start code block.
  \~\   # Apply logical NOT to the second topmost element of the stack.
  ".~"  # Push that string.
}       # End code block.
.~      # Duplicate the code block and execute the copy.

GolfScript स्टैक की सामग्री को समाप्ति पर प्रिंट करता है।


कृपया समस्या कथन को फिर से पढ़ें -Programs A and B may not use any of the same characters, save for whitespace and statement separators, and punctuation characters.
isaacg

1
सब कुछ है, लेकिन 1और 2विराम चिह्न है।
डेनिस

ठीक है, नियम बदल दिए गए क्योंकि मैंने उन्हें आखिरी बार पढ़ा था।
isaacg

हाँ, यह काम करता है। मैं व्हाट्सएप को बयानों के रूप में इस्तेमाल करने से रोकने के लिए नियमों को प्रतिसाद देता था, लेकिन विस्मृति के लिए वही खामियों को भूल जाता था। इसलिए खामियों का कानूनी तौर पर फायदा उठाया गया।
16

14

पास्कल (731 अक्षर)

कार्यक्रम ए:

program s;{$h+}uses sysutils;const p='program s;{$h+}uses sysutils;const p=';a='a';aa=''';';aaa='a=''';aaaa='''';aaaaa='begin write(lowercase(p+aaaa+p+aa+aaa+a+aa+a+aaa+aaaa+aa+aa+a+a+aaa+aaa+aaaa+aa+a+a+a+aaa+aaaa+aaaa+aa+a+a+a+a+aaa+stringreplace(stringreplace(stringreplace(stringreplace(aaaaa,aaaa,aaaa+aaaa,[rfreplaceall]),''lower''+''c'',''tm''+''p'',[]),''up''+''c'',''lower''+''c'',[]),''tm''+''p'',''up''+''c'',[])+aa+aaaaa))end.';begin write(upcase(p+aaaa+p+aa+aaa+a+aa+a+aaa+aaaa+aa+aa+a+a+aaa+aaa+aaaa+aa+a+a+a+aaa+aaaa+aaaa+aa+a+a+a+a+aaa+stringreplace(stringreplace(stringreplace(stringreplace(aaaaa,aaaa,aaaa+aaaa,[rfreplaceall]),'lower'+'c','tm'+'p',[]),'up'+'c','lower'+'c',[]),'tm'+'p','up'+'c',[])+aa+aaaaa))end.

आउटपुट प्रोग्राम B:

PROGRAM S;{$H+}USES SYSUTILS;CONST P='PROGRAM S;{$H+}USES SYSUTILS;CONST P=';A='A';AA=''';';AAA='A=''';AAAA='''';AAAAA='BEGIN WRITE(UPCASE(P+AAAA+P+AA+AAA+A+AA+A+AAA+AAAA+AA+AA+A+A+AAA+AAA+AAAA+AA+A+A+A+AAA+AAAA+AAAA+AA+A+A+A+A+AAA+STRINGREPLACE(STRINGREPLACE(STRINGREPLACE(STRINGREPLACE(AAAAA,AAAA,AAAA+AAAA,[RFREPLACEALL]),''LOWER''+''C'',''TM''+''P'',[]),''UP''+''C'',''LOWER''+''C'',[]),''TM''+''P'',''UP''+''C'',[])+AA+AAAAA))END.';BEGIN WRITE(LOWERCASE(P+AAAA+P+AA+AAA+A+AA+A+AAA+AAAA+AA+AA+A+A+AAA+AAA+AAAA+AA+A+A+A+AAA+AAAA+AAAA+AA+A+A+A+A+AAA+STRINGREPLACE(STRINGREPLACE(STRINGREPLACE(STRINGREPLACE(AAAAA,AAAA,AAAA+AAAA,[RFREPLACEALL]),'LOWER'+'C','TM'+'P',[]),'UP'+'C','LOWER'+'C',[]),'TM'+'P','UP'+'C',[])+AA+AAAAA))END.

आउटपुट प्रोग्राम ए।


3
मैं केस ट्रांसलेशन के उपयोग (गलत) का आनंद ले रहा हूं।
अब्ली

11

ROT13 ( नियम अपडेट के बाद अब प्रतिस्पर्धा नहीं )

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

A

के बीच साइकिल Aऔर N:

~>> echo "A" | rot13
N
~>> echo "A" | rot13 | rot13
A

मुझे लगता है कि यह काम नहीं करता है, क्योंकि रोट 13 केवल इनपुट पर ले रहा है STDIN, किसी प्रोग्राम को निष्पादित नहीं कर रहा है। यदि आप यह तर्क दे रहे हैं कि यह एक शून्य लंबाई कार्यक्रम है, जो नियम 2 को पूरा करने में विफल रहता है। जो कार्यक्रम (पास sed) में पारित किया गया है sed -e। यदि यह स्वीकार्य था, तो catएक क्वीन tacहोगा , और एक क्वीन और पुरातन होगा। हालांकि, कुछ भी नहीं करने के लिए स्रोत का निर्माण कर रहा है cat, tacया उस बात के लिए rot13
अब्लीग

@ बार, अगर रोट १३ का उपयोग किया जाता है, तो मुझे रोट १३ के लिए स्रोत कोड क्यों प्रिंट करना चाहिए? इसके अलावा, अगर मैं गोल्फस्क्रिप्ट, पायथन या अन्य कुछ भी चलाता हूं, तो मैं संभवतः स्टडिन या फ़ाइल के माध्यम से इसे स्रोत कोड पास कर दूंगा, इसलिए वास्तव में कोई अंतर नहीं है। इस मामले ROT13 में है दुभाषिया।
इंगो बुर्क

rot13एक प्रोग्रामिंग भाषा के रूप में 'प्रोग्रामिंग भाषा' की किसी भी उचित परिभाषा को संतुष्ट करने के लिए प्रकट नहीं होता है, और यह कुछ भी व्याख्या नहीं कर रहा है। मैं प्रश्न को स्पष्ट करने के लिए संशोधन करूंगा।
अब्लीग

मेरे लिए उत्तम है। मैं इस जवाब को अब और प्रतिस्पर्धा नहीं करने के रूप में छोड़ दूँगा और एक मेटा चर्चा शुरू करूँगा। अच्छी चुनौती है, वैसे। "वास्तविक" समाधान देखने के लिए इंतजार नहीं कर सकता!
इंगो बुर्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.