क्विन जो इनपुट को एक भाषा का नाम देता है और इनपुट भाषा में लागू की गई चीज़ को आउटपुट करता है


15

से Quine केंद्रीय :

एक क्वीन लिखें जो इनपुट को एक भाषा का नाम देता है और इनपुट भाषा में कार्यान्वित एक ही चीज़ को आउटपुट करता है।

स्रोत लेख में कुछ ऐसा है जिससे आप काम कर सकते हैं, लेकिन जैसा कि लेखक का कहना है कि यह बहुत कठिन है। जाहिर है कि आपको केवल भाषाओं के सीमित सेट का समर्थन करने की आवश्यकता है। पसंद आपकी है, हालांकि साथ ही साथ आधार भाषा भी।

एक , आपका स्कोर आपके कार्यक्रम का समर्थन करने वाली भाषाओं की संख्या होगी; उच्च बेहतर है।


आकर्षक शीर्षक ...
20

"भाषाओं की संख्या" को परिभाषित करें।
अदम

@ Adám: ठीक है, चुनौती की बात यह है कि एक प्रोग्राम लिखना है जो भाषाओं के एक सेट का समर्थन करता है, इस प्रकार है: इसे किसी भी भाषा का नाम देना क्योंकि इनपुट उस भाषा में एक समकक्ष प्रोग्राम आउटपुट करेगा। भाषा की संख्या जिसमें कार्यक्रम काम करता है वह सेट का आकार है। यह मेरी चुनौती नहीं है (बस मैंने जो एक इनाम दिया है), इसलिए मुझे नहीं लगता कि कोने के मामलों पर "आधिकारिक" स्रोत है; जैसे, हमें अर्थ बदलने के बिना इसे बेहतर / स्पष्ट बनाने के लिए चुनौती को संपादित करना चाहिए।

@ ais523 हमें एक बहुविवाह क्वीन लिखने से रोकना है जो इनपुट लेता है और इसके साथ कुछ नहीं करता है? इन नियमों के अनुसार यह पूरी तरह से कानूनी होगा।
mbomb007

@ mbomb007: यह कानूनी है, लेकिन सवाल का जवाब देने का सबसे आसान तरीका नहीं हो सकता है। पॉलीग्लॉट क्वाइन में अक्सर अतिरिक्त भाषाओं को फिट करना मुश्किल हो सकता है, जबकि वर्तमान में प्रश्न के रूप में सवाल यह है कि आपको पॉलीग्लॉट लिखने की आवश्यकता नहीं है (और सार्वभौमिक क्वीन कंस्ट्रक्टरों के सेट के माध्यम से हल किया जा सकता है, प्रत्येक भाषा जो आप उपयोग करते हैं)।

जवाबों:


4

माणिक

require 'json';s=%q[{"ruby":[" %q[","require 'json';s=##;j=JSON.load s;puts j[l=gets.chomp][1].sub('##',j[l][0].delete(' ')+s+j[l][2].delete(' '))"," ]"],"python":["' ''","import json,re;s=##;j=json.loads(s);l=raw_input();print(re.sub('##',j[l][0].replace(' ','')+s+j[l][2].replace(' ',''),j[l][1],1))","' ''"]}];j=JSON.load s;puts j[l=gets.chomp][1].sub('##',j[l][0].delete(' ')+s+j[l][2].delete(' '))

अजगर

import json,re;s='''{"ruby":[" %q[","require 'json';s=##;j=JSON.load s;puts j[l=gets.chomp][1].sub('##',j[l][0].delete(' ')+s+j[l][2].delete(' '))"," ]"],"python":["' ''","import json,re;s=##;j=json.loads(s);l=raw_input();print(re.sub('##',j[l][0].replace(' ','')+s+j[l][2].replace(' ',''),j[l][1],1))","' ''"]}''';j=json.loads(s);l=raw_input();print(re.sub('##',j[l][0].replace(' ','')+s+j[l][2].replace(' ',''),j[l][1],1))

दोनों संस्करण स्टड ( rubyया pythonवर्तमान में) पर इनपुट लेते हैं और किसी भी भाषा में स्टडआउट के लिए आउटपुट उत्पन्न करते हैं।


1

Turtlèd , Python 2, और Python 3, 3 भाषाएँ, केवल इनाम के लिए प्रतिस्पर्धा कर रही हैं

सभी ओनलीनेर्स ने न्यूलाइन द्वारा फोलो किया

Turtlèd

@##'@r,r,r-{ +.r_}r{ +.r_}!!-.(3"';m=ord(input()[-1]);_='x=%r;m=ord(input()[-1]);_=%r;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%%(x,_) if m==50 else _%%(x,_) if m==51 else x.replace(chr(121),chr(39)))';print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%(x,_) if m==50 else _%(x,_) if m==51 else x.replace(chr(121),chr(39)))"367>;++[ d( d)('.)]d<"x='"))(2"';m=ord(raw_input()[-1]);_='x=%r;m=ord(input()[-1]);_=%r;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%%(x,_) if m==50 else _%%(x,_) if m==51 else x.replace(chr(121),chr(39)))';print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%(x,_) if m==50 else _%(x,_) if m==51 else x.replace(chr(121),chr(39)))"371>;++[ d( d)('.)]d<"x='"))(d' )#'@r,r,r-{ +.r_}r{ +.r_}!!-.(3"';m=ord(input()[-1]);_='x=%r;m=ord(input()[-1]);_=%r;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%%(x,_) if m==50 else _%%(x,_) if m==51 else x.replace(chr(121),chr(39)))';print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%(x,_) if m==50 else _%(x,_) if m==51 else x.replace(chr(121),chr(39)))"367>;++[ d( d)('.)]d<"x='"))(2"';m=ord(raw_input()[-1]);_='x=%r;m=ord(input()[-1]);_=%r;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%%(x,_) if m==50 else _%%(x,_) if m==51 else x.replace(chr(121),chr(39)))';print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%(x,_) if m==50 else _%(x,_) if m==51 else x.replace(chr(121),chr(39)))"371>;++[ d( d)('.)]d<"x='"))(d' )

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

अजगर २

x='@##y@r,r,r-{ +.r_}r{ +.r_}!!-.(3"y;m=ord(input()[-1]);_=yx=%r;m=ord(input()[-1]);_=%r;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%%(x,_) if m==50 else _%%(x,_) if m==51 else x.replace(chr(121),chr(39)))y;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%(x,_) if m==50 else _%(x,_) if m==51 else x.replace(chr(121),chr(39)))"367>;++[ d( d)(y.)]d<"x=y"))(2"y;m=ord(raw_input()[-1]);_=yx=%r;m=ord(input()[-1]);_=%r;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%%(x,_) if m==50 else _%%(x,_) if m==51 else x.replace(chr(121),chr(39)))y;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%(x,_) if m==50 else _%(x,_) if m==51 else x.replace(chr(121),chr(39)))"371>;++[ d( d)(y.)]d<"x=y"))(dy )#y@r,r,r-{ +.r_}r{ +.r_}!!-.(3"y;m=ord(input()[-1]);_=yx=%r;m=ord(input()[-1]);_=%r;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%%(x,_) if m==50 else _%%(x,_) if m==51 else x.replace(chr(121),chr(39)))y;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%(x,_) if m==50 else _%(x,_) if m==51 else x.replace(chr(121),chr(39)))"367>;++[ d( d)(y.)]d<"x=y"))(2"y;m=ord(raw_input()[-1]);_=yx=%r;m=ord(input()[-1]);_=%r;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%%(x,_) if m==50 else _%%(x,_) if m==51 else x.replace(chr(121),chr(39)))y;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%(x,_) if m==50 else _%(x,_) if m==51 else x.replace(chr(121),chr(39)))"371>;++[ d( d)(y.)]d<"x=y"))(dy )';m=ord(raw_input()[-1]);_='x=%r;m=ord(input()[-1]);_=%r;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%%(x,_) if m==50 else _%%(x,_) if m==51 else x.replace(chr(121),chr(39)))';print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%(x,_) if m==50 else _%(x,_) if m==51 else x.replace(chr(121),chr(39)))

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

अजगर ३

x='@##y@r,r,r-{ +.r_}r{ +.r_}!!-.(3"y;m=ord(input()[-1]);_=yx=%r;m=ord(input()[-1]);_=%r;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%%(x,_) if m==50 else _%%(x,_) if m==51 else x.replace(chr(121),chr(39)))y;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%(x,_) if m==50 else _%(x,_) if m==51 else x.replace(chr(121),chr(39)))"367>;++[ d( d)(y.)]d<"x=y"))(2"y;m=ord(raw_input()[-1]);_=yx=%r;m=ord(input()[-1]);_=%r;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%%(x,_) if m==50 else _%%(x,_) if m==51 else x.replace(chr(121),chr(39)))y;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%(x,_) if m==50 else _%(x,_) if m==51 else x.replace(chr(121),chr(39)))"371>;++[ d( d)(y.)]d<"x=y"))(dy )#y@r,r,r-{ +.r_}r{ +.r_}!!-.(3"y;m=ord(input()[-1]);_=yx=%r;m=ord(input()[-1]);_=%r;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%%(x,_) if m==50 else _%%(x,_) if m==51 else x.replace(chr(121),chr(39)))y;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%(x,_) if m==50 else _%(x,_) if m==51 else x.replace(chr(121),chr(39)))"367>;++[ d( d)(y.)]d<"x=y"))(2"y;m=ord(raw_input()[-1]);_=yx=%r;m=ord(input()[-1]);_=%r;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%%(x,_) if m==50 else _%%(x,_) if m==51 else x.replace(chr(121),chr(39)))y;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%(x,_) if m==50 else _%(x,_) if m==51 else x.replace(chr(121),chr(39)))"371>;++[ d( d)(y.)]d<"x=y"))(dy )';m=ord(input()[-1]);_='x=%r;m=ord(input()[-1]);_=%r;print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%%(x,_) if m==50 else _%%(x,_) if m==51 else x.replace(chr(121),chr(39)))';print(_.replace(chr(100)+chr(40),chr(100)+chr(40)+chr(114)+chr(97)+chr(119)+chr(95))%(x,_) if m==50 else _%(x,_) if m==51 else x.replace(chr(121),chr(39)))

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

स्पष्टीकरण:

प्रत्येक भाषा के लिए, मैंने पहले से ही लिखित क्वीन लिया और उन्हें थोड़ा संशोधित किया।

पहले टर्टलड:

टर्टलार्ड में मानक क्वीन संरचना शामिल है। हालाँकि, इनपुट को 2 या 3 के साथ समाप्त होना चाहिए, यह अजगर कोड के अंत को जोड़ता है, या तो 2 या 3, यह उन दोनों को अलग-अलग शामिल करता है, क्वीन आउटपुट के लिए, और फिर शुरू और वापस जोड़ता है x='। अन्यथा सोर्सकोड बचा हुआ है और एक नियमित क्वीन की तरह आउटपुट है

यह भी ध्यान दें कि यह दो बार इनपुट लेता है !!., क्योंकि स्रोत में एक नई रेखा होती है जो एक खाली लाइन को इनपुट करने के लिए फीड करती है।

हालांकि, स्ट्रिंग की शुरुआत के रास्ते के साथ, इस तथ्य से बचने के लिए कि स्ट्रिंग इसमें नहीं हो सकती 'है, यह 'मुख्य स्रोत के साथ-साथ सभी को बदल देती है y। यदि ऐसा होता है, तो भागना कष्टप्रद हो सकता है, यदि संभव हो तो

यह एक चाल पर निर्भर करता है; मैं लिख नहीं सकता था (''y), (pseudocode:if cell is ', write y)क्योंकि तब वह y एक 'से अप्रभेद्य रहा होगा। इसलिए, मैं "पायथन" इनपुट से y का उपयोग करता हूं! यह मेरे लिए एक वास्तविक यूरेका पल था।

फिर, वहाँ अजगर quinelike चीजें हैं।

कैसे अजगर quinelike काम करता है:

यह एक नियमित क्वीन की तरह काम करता है, इसके अलावा इसमें चर x भी शामिल है

यदि इसमें इनपुट पायथन 3 है, तो यह एक नियमित क्वीन की तरह काम करता है, और टर्टलगार्ड के स्रोत को शामिल करने के लिए% स्वरूपण का उपयोग करता है।

यदि इसके पास इनपुट पायथन 2 है, तो यह inputस्ट्रिंग में बदल देता है raw_input, और अन्यथा वही काम करता है।

यदि इनपुट Turtlèd है, तो yवह Turtlèd स्रोत में s को प्रतिस्थापित करता है और उसे प्रिंट करता है।

दो अजगर कार्यक्रम समान कार्य करते हैं, और उसी तरह इनपुट लेते हैं

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