अपने लंगूर की व्याख्या करें, लेकिन खुद नहीं?


21

कई चुनौतियां हैं जो "एक्स की व्याख्या करती हैं" कहती हैं, जहां एक्स एक सरल भाषा है। मेरी राय में, यह तरीका बहुत उबाऊ है। इंटरनेट पर सभी प्रमुख लोगों को कुछ दिलचस्प करने के लिए, आप इस चुनौती को करने की कोशिश कर सकते हैं:

चुनौती

एक भाषा चुनें $LANG$LANGकिसी भी ट्यूरिंग पूर्ण प्रोग्रामिंग भाषा या एक प्रोग्रामिंग भाषा का एक ट्यूरिंग पूरा सबसेट हो सकता है। सावधान रहें कि यदि आप $LANGव्याख्या के लिए अपनी भाषा की एक विशेषता को छोड़ देते हैं , तो आपको इसे अपने स्वयं के कार्यक्रम के लिए भी उपयोग नहीं करना चाहिए, क्योंकि आपके प्रस्तुत को भी लिखा जाना चाहिए $LANG

$LANGलिखित में संकलक / दुभाषिया लिखें $LANG। आप evalअपनी भाषा की सभी सुविधाओं (सहित और दोस्तों) का उपयोग कर सकते हैं जो इस संकलक को लिखने के लिए उपलब्ध हैं। कार्य को अधिक चुनौतीपूर्ण बनाने के लिए, एक प्रतिबंध है: आपको $LANGअपने इंटरप्रेटर / कंपाइलर को छोड़कर सभी वैध कार्यक्रमों की व्याख्या / संकलन करने में सक्षम होना चाहिए । यदि ऐसा होता है कि प्रोग्राम की व्याख्या / संकलित किया जाना आपका इंटरप्रेटर या कंपाइलर है (भले ही फ़ाइल नाम की परवाह किए बिना), आपके प्रोग्राम को इंटरप्रेटर या कंपाइलर की कार्यक्षमता से पूरी तरह से असंबंधित होना चाहिए (जैसे कि बारफेक या प्रिंटिंग Hello, world!)।

इस कार्य को और अधिक जटिल बनाने के लिए, संकलन या व्याख्या करते समय आपके कार्यक्रम को अपने स्वयं के स्रोत को नहीं पढ़ना चाहिए।

विशेष विवरण

  • यह कार्य कोड गोल्फ है। कम से कम पात्रों के साथ प्रस्तुत करना सही जीत है। एक टाई के मामले में, जो समाधान प्रस्तुत किया गया था वह पहले जीतता है।
  • आपके प्रोग्राम / स्क्रिप्ट को फ़ाइल से व्याख्या किए जाने वाले प्रोग्राम को पढ़ना चाहिए। आप इसका पथ और नाम हार्डकोड कर सकते हैं। जब फ़ाइल पढ़ी जाती है, तो आप फ़ाइल को किसी अन्य फ़ाइल के लिए संकलित कर सकते हैं (यह आपके सिस्टम पर निष्पादन योग्य होना चाहिए) या इसे सीधे चलाएं। यदि $LANGफ़ाइल-रीडिंग क्षमताओं की कमी है, तो आप उस कोड में पढ़ने के लिए एक और तरीका चुन सकते हैं जो फिट बैठता है $LANG। आप $LANGकिसी अन्य भाषा के सबसेट के रूप में नहीं चुन सकते हैं, लेकिन फाइल-रीडिंग कैपेबिलिटीज को हटा सकते हैं।
  • सामान्य कोड-गोल्फ नियम लागू होते हैं। वह यह है: आपकी व्यक्तिगत पालतू-भाषा जिसे आपने इस चुनौती को हल करने के लिए बनाया है, मना किया जाता है, यदि समाधान इसका उपयोग करने के लिए तुच्छ हो जाता है (जैसे एकल-चार प्रोग्राम को परिभाषित करना जो समाधान को लागू करता है)। नियमों के दुरुपयोग को प्रोत्साहित किया जाता है।

क्या हमें इसके लिए एक भाषा को परिभाषित करने की अनुमति है, जब तक कि यह पूरी तरह से ट्यूरिंग न हो जाए?
क्रंचर

@ क्रंचर जी, आप हैं। अधिक विवरण के लिए विनिर्देशों का अंतिम बुलेट बिंदु देखें।
FUZxxl

जवाबों:


8

रूबी, ६३

b=$<.read
t="b=$<.read\nt=%p\nb!=t%%t&&eval(b)"
b!=t%t&&eval(b)

उत्तर तब तक स्वीकार किया जाता है जब तक कि कोई छोटा समाधान न हो।
19

11

पर्ल, 89 वर्ण, कोई धोखा नहीं

$_=q($_=q(Q);s/Q/$_/;($q=join"",<>)eq$_?die:eval$q);s/Q/$_/;($q=join"",<>)eq$_?die:eval$q

ध्यान दें कि यह कोड "खुद" के रूप में गिना जाता है के बारे में बहुत picky है। विशेष रूप से, यह खुद को पहचान नहीं करेगा यदि इनपुट में कोई अनुगामी newlines या अन्य अतिरिक्त व्हाट्सएप हैं। इसका परीक्षण करने के लिए, इसे नाम की फ़ाइल में सहेजें (उदाहरण के लिए) unquine.plऔर ऐसा करें:

$ perl unquine.pl unquine.pl
Died at unquine.pl line 1, <> line 1.

याद रखें, unquine.plफ़ाइल बिलकुल 89 बाइट लंबी होनी चाहिए , और अधिक नहीं, कम नहीं। इनपुट के रूप में कुछ अन्य पर्ल स्क्रिप्ट के साथ इसे चलाना सिर्फ दूसरी स्क्रिप्ट को निष्पादित करता है, जैसा कि यह होना चाहिए:

$ perl unquine.pl hello.pl
Hello, world!

जैसा कि नाम से पता चलता है, कार्यान्वयन एक क्वीन पर आधारित है - विशेष रूप से, यह एक:

$_=q($_=q(Q);s/Q/$_/);s/Q/$_/

यह कोड $_खुद के बराबर सेट होता है; कार्यक्रम के बाकी (जो, ज़ाहिर है, अंदर डुप्लिकेट होना चाहिए $_) बस $_इनपुट की तुलना करता है, मरता है अगर वे मेल खाते हैं और अन्यथा इनपुट का मूल्यांकन करते हैं।


आप उस &&/ ;जोड़ी को एक टर्नरी (एक चार बंद, क्विलिंग द्वारा दोगुना) के साथ बदल सकते हैं । महान विचार और कार्यान्वयन!
JB

@ जेबी: अच्छी पकड़! अब नीचे 89 वर्ण हैं।
इल्मरी करोनें

5

GolfScript, 30 वर्ण

{`".~"+"#{$<.read}".@=!{~}*}.~

यह प्रोग्राम कमांड लाइन पर नामित फ़ाइल की सामग्री को पढ़ता है और, यदि यह ऊपर दिए गए कोड के बराबर नहीं है, तो इसे गोल्फस्क्रिप्ट की व्याख्या करता है। यदि इनपुट ऊपर दिए गए कोड के बराबर है, तो इसे बस अपरिवर्तित मुद्रित किया जाएगा (सिवाय एक नई पंक्ति के अंत तक जोड़ा गया)।

यह इस स्व-पहचान कार्यक्रम का काफी सीधा अनुकूलन है । विशेष रूप से:

  • { } GolfScript में एक कोड ब्लॉक शाब्दिक है।
  • .~, एक कोड ब्लॉक पर लागू होता है, ब्लॉक को डुप्लिकेट करता है और कॉपी निष्पादित करता है।

कोड ब्लॉक के अंदर:

  • ` कोड ब्लॉक की कॉपी को सख्त करता है।
  • ".~"+.~कार्यक्रम के स्रोत कोड से युक्त एक स्ट्रिंग की पैदावार करने के लिए इसे पात्रों को जोड़ता है ।
  • "#{$<.read}"एक डॉक्यूमेंटेड हैक है जो गोल्फस्क्रिप्ट के भीतर रूबी कोड के निष्पादन की अनुमति देता है। इस स्थिति में, यह रूबी स्टेटमेंट $<.read(बेशर्मी से रूबीकर के रूबी समाधान से चुराया गया ) निष्पादित करता है , जो कमांड लाइन पर निर्दिष्ट किसी भी फाइल की सामग्री को पढ़ता है और वापस करता है। इस हैक की आवश्यकता है क्योंकि गोल्फस्क्रिप्ट स्वयं कोई स्पष्ट फ़ाइल I / O क्षमता प्रदान नहीं करता है।
  • .@ स्टैक के शीर्ष पर तत्वों को डुप्लिकेट और फेरबदल करता है ताकि स्टैक में इस कार्यक्रम के स्रोत कोड के बाद फ़ाइल सामग्री की दो प्रतियां शामिल हों।
  • =! स्टैक पर शीर्ष दो वस्तुओं (यानी फ़ाइल सामग्री और स्रोत) की तुलना करता है, यदि वे समान हैं और यदि वे समान हैं तो 1 लौटाते हैं।
  • {~}*फ़ाइल सामग्री की बची हुई प्रतिलिपि को गोल्फस्क्रिप्ट कोड के रूप में मूल्यांकन करता है, लेकिन केवल यदि तुलना का परिणाम 1. है (तकनीकी रूप से, यह कोड ब्लॉक {~}को कई बार निष्पादित करता है, जैसा कि स्टैक पर संख्या द्वारा दिया गया है, अर्थात 0 या 1 बार। ब्लॉक, ~GolfScript eval ऑपरेटर है।)

Ps। यदि स्टड से निष्पादित करने के लिए कोड को पढ़ने की अनुमति है, तो यह चुनौती 21 वर्णों में हल की जा सकती है, बिना रूबी के

{`".~"+1$=!{""\~}*}.~

यह कार्यक्रम स्टड से एक इनपुट स्ट्रिंग पढ़ेगा और, यदि यह अपने स्वयं के स्रोत से मेल नहीं खाता है, तो इसे निष्पादित करता है (खाली इनपुट के साथ)। उपरोक्त कार्यक्रम की तरह, स्रोत से मेल खाने वाले इनपुट को केवल वापस प्रतिध्वनित किया जाता है।


अच्छा लग रहा है, लेकिन ऐसा नहीं लगता कि आप किसी फ़ाइल से इनपुट पढ़ते हैं।
फ़ूजएक्सएक्सएल

फिक्स्ड, अब यह लॉजैकर के समाधान की तरह एक फ़ाइल (बिल्कुल) से पढ़ता है।
इल्मरी करोनन

5

पायथन, 167 130 118 बाइट्स

यह गोल्फ में मेरा पहला प्रयास है, इसलिए यहाँ जाता है! यह स्वयं को छोड़कर किसी भी कार्यक्रम की व्याख्या करता है

संशोधित संस्करण:

i=open(raw_input()).read();q='i=open(raw_input()).read();q=%s;i==q%%repr(q)and a;exec(i)\n';i==q%repr(q)and a;exec(i)

अगर यह अपने आप हो जाता है तो इसके साथ बारफोर्स हो जाता है:

Traceback (most recent call last):
  File "pygolf.py", line 1, in <module>
    i=open(raw_input()).read();q='i=open(raw_input()).read();q=%s;i==q%%repr(q)and a;exec(i)\n';i==q%repr(q)and a;exec(i)
NameError: name 'a' is not defined

मुझे लगता है कि यह समाधान इल्मरी करोनन की तरह ही बहुत काम करता है, मूल विचार कुछ इस तरह है:

input = read_some_file()
if input == some_quine()
    barf()
interpret(input)

मैं जिस क्वीन का इस्तेमाल करता था, वह इसी पर आधारित थी:

(lambda x: x + repr((x,)))('(lambda x: x + repr((x,)))',)

लेकिन मुझे एहसास हुआ कि बहुत छोटी रानी है:

q='q=%s;q%%repr(q)';q%repr(q)

और अगर आप इंटरेक्टिव पाइथन शेल की अनुमति देते हैं तो यह और भी कम हो सकता है, जिस स्थिति में आप कर सकते हैं:

'%s;_%%repr(_)';_%repr(_)

चूंकि अजगर के पास कमांड लाइन आर्गन्स प्राप्त करने का एक छोटा तरीका नहीं है, मैं रॉ_इनपुट () के साथ गया था (जो अभी भी बहुत लंबा है, लेकिन उतना लंबा नहीं है

import sys;sys.argv[1]

उपयोग है:

echo "foobar.py" | python quinterpretter.py

या

python quinterpretter.py
<type filename and hit enter>

मुझे उपयोग करने के लिए एक छोटी रानी मिली, लेकिन यहाँ मेरा पुराना संस्करण है (पोस्टीरिटी के लिए):

i=open(raw_input()).read();a if i==(lambda x,y:x+repr((x,y))+y)('i=open(raw_input()).read();a if i==(lambda x,y:x+repr((x,y))+y)', ' else 1;exec(i)\n') else 1;exec(i)

% S को% r से बदलें और रीप्र को हटा दें। % r का मतलब कच्चा है और यह मूल रूप से वही है।
लवजो

4

मैं जावास्क्रिप्ट (ठीक है, मैं, HTML5 FileReader चीज़ का उपयोग करके, मैं एक फ़ाइल से नहीं पढ़ सकता हूँ, लेकिन इससे चीज़ें बहुत अधिक जटिल हो जाती हैं)। तो, यह एक फ़ंक्शन है जो जावास्क्रिप्ट प्रोग्राम को एक स्ट्रिंग के रूप में स्वीकार करता है और इसे चलाता है।

यह शायद उतना नहीं है जितना कि यह हो सकता है, लेकिन यहाँ यह वैसे भी है:

जावास्क्रिप्ट, 252

function c(p){q='\"';s='\\';a="function c(p){q='\"';s='\\';a=%;a=a.slice(0,17)+s+a.slice(17,24)+a[23]+a.slice(24);a=q+a.replace('%',q+a+q)+q;alert(a);}";a=a.slice(0,17)+s+a.slice(17,24)+a[23]+a.slice(24);a=a.replace('%',q+a+q);alert(a);if(p!=a)eval(p)}

मुझे पता है कि क्या कोई जावास्क्रिप्ट में एक क्वीन बनाने की बेहतर तकनीक जानता है।


1
मैंने आपके कोड और मेरे पर्ल समाधान के आधार पर, नीचे 135-चॉइस जेएस समाधान पोस्ट किया है। प्रेरणा के लिए +1!
इल्मरी करोनें

2
read p<p;read c<c;[ "$p" = "$c" ]||. ./c

श (POSIX शेल) के 45 अक्षर। चलाने के लिए कोड फ़ाइल में होना चाहिए ./c

दुभाषिया के लिए कोड ही फाइल में होना चाहिए ./p, इसलिए मुझे लगता है कि मैं ठगा हुआ हूं, हालांकि चुनौती इसे मना नहीं करती है। या क्या यह मेरी "भाषा" को "ट्यूरिंग-पूर्ण प्रोग्रामिंग भाषा" होने से अयोग्य ठहराएगा?

एक उपकरण का उपयोग करना जो आम तौर पर एक बाहरी निष्पादन योग्य है, लेकिन सैद्धांतिक रूप से शेल में बनाया जा सकता है, कोड को छोटा किया जा सकता है:

cmp -s p c||. ./c

यह 18 अक्षर है, और -sबिट बस एक पंक्ति को दबाने के लिए है जो अन्यथा मान्य (गैर-स्व) कार्यक्रमों के लिए हमेशा मुद्रित होगा।

और फिर आप हमेशा शेल भाषा का एक संस्करण बना सकते हैं जो ऊपर और अधिक संक्षिप्त वाक्य रचना के साथ करता है।

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

read code; if [ "$code" ]; then eval "$code"; else . ./othercode; fi

भाषा का उपयोग उपरोक्त लिपि की व्याख्या करता है, समाधान रिक्त स्ट्रिंग है। और कोड स्थान को अब हार्डकोड नहीं किया जाना चाहिए।

संकट?


2
चुनौती यह कहती है कि "आपके कार्यक्रम को पढ़ना नहीं चाहिए, यह स्वयं का स्रोत है"।
इल्मरी करोनें

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

@TaylanUB ठीक है, आपको वास्तव में दुभाषिया को छोड़कर सभी वैध $ lang कार्यक्रमों की व्याख्या करनी होगी।
फ़ूजएक्सएक्सएक्सएल

@FUZxxl हां, "श + खाली स्ट्रिंग" भाषा अन्यथा sh (यदि कोड रिक्त स्ट्रिंग नहीं है) के बराबर है, और इसमें लिखा गया रिक्त स्ट्रिंग प्रोग्राम भी sh कोड (जिसे अवश्य डाला जाना चाहिए ./othercode) की व्याख्या करता है, और करता है कुछ भी नहीं जब कोड खाली स्ट्रिंग है। मुझे फ़ाइल नहीं मिलनी चाहिए ।/othercode, यह भ्रामक है; यह सिर्फ वह कोड है जो खाली स्ट्रिंग भाषा में लिखा गया दुभाषिया व्याख्या करेगा।
तैयालुब

2

जावास्क्रिप्ट, 135 वर्ण

function c(p){q='function c(p){q=%27Q%27;p!=unescape(q).replace(/Q/,q)?eval(p):alert()}';p!=unescape(q).replace(/Q/,q)?eval(p):alert()}

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

यह मेरे जावास्क्रिप्ट में संतुलित स्ट्रिंग सीमांकक के अभाव से निपटने के लिए बाहर एक अच्छा तरीका आंकड़ा करने के लिए कुछ समय लिया, जब तक मैंने पाया मसा में क्या स्पष्ट समाधान है: unescape()

आसानी से, मेरे कोड में कोई भी बैकस्लैश या दोहरे उद्धरण नहीं हैं, इसलिए इसे सुरक्षित रूप से एक दोहरे उद्धरण में संग्रहीत किया जा सकता है। यह परीक्षण करना आसान बनाता है:

e = "function c(p){q='function c(p){q=%27Q%27;p!=unescape(q).replace(/Q/,q)?eval(p):alert()}';p!=unescape(q).replace(/Q/,q)?eval(p):alert()}"
h = "alert('Hello, world!')"

eval(e)  // defines the function c()

c(h)     // evaluates h
c(e)     // does not evaluate e, alerts "undefined" instead

आप बदल सकते alert()साथ 0यह बजाय चेताने का कुछ भी नहीं बनाने के लिए undefinedऔर 13 वर्ण बचाने।
पीटर ओल्सन

@PeterOlson: हाँ, लेकिन कार्य यह कहता है कि "यदि आपका कार्यक्रम स्वयं पूरी तरह असंबंधित है तो उसे कुछ करना चाहिए"। मैं व्याख्या करता हूं कि इसका अर्थ यह है कि इसे कुछ करना चाहिए - अधिमानतः उपयोगकर्ता को कुछ दिखाई दे, मैं अनुमान लगाऊंगा। इसके अलावा, मैं इसे इस तरह से बेहतर करता हूं। :) (पी। यू।, यह बाहर बर्फ़ पड़ रही है! सर्दियों के अंत में यहाँ!)
इल्मरी करोनें

1
@ इल्मारी कुछ भी नहीं करना जावास्क्रिप्ट जावास्क्रिप्ट की व्याख्या करने के लिए असंबंधित है।
21

आप p=>...इसके बजायfunction c(p)
FireCubez

2

आम लिस्प, 59

#+~ #.(#:a)(defun L(p)(compile-file p))(push :~ *features*)
  • एक ताजा लिस्प REPL में, अपनी फ़ाइल संकलित करें (जैसे sbcl --load)
  • अब आपके पास एक फ़ंक्शन है L, जो आम लिस्प फ़ाइलों को संकलित कर सकता है
  • हालाँकि, यदि आप कॉल करते हैं (L <your file>), तो फ़ाइल को पढ़ते समय एक त्रुटि का संकेत दिया जाता है ।

क्यूं कर?

क्योंकि पहली बार, आपने :~कीवर्ड को धक्का दिया *features*। अब, आपका वातावरण ~फीचर के बारे में जानता है , और पाठक मैक्रो #+, ~ फीचर अभिव्यक्ति का मूल्यांकन करने पर , इसे छोड़ने के बजाय निम्नलिखित फ़ॉर्म को सफल और पढ़ेंगे क्योंकि यह पहली बार हुआ था। आपकी फ़ाइल में, निम्न फॉर्म है #.(#:a), जो रीड-टाइम(#:a) पर मूल्यांकन करने और कोड पढ़े जाने के परिणामस्वरूप परिणाम का उपयोग करने के लिए कहता है । लेकिन बिन बुलाए प्रतीक से जुड़े फ़ंक्शन को कॉल करता है । चूंकि निर्जन है, यह एक ताजा प्रतीक है जो किसी भी कार्य के लिए बाध्य नहीं है (अर्थात नहीं )। त्रुटि।(#:a)#:a#:afboundp


1

योजना, 48 या 51 वर्ण

योजना एक भाषा है जिसमें कई अलग-अलग कार्यान्वयन हैं। नवीनतम RnRS के अनुरूप होने के बावजूद, नवीनतम कार्य मानक (R6RS) न्यूनतावाद की कमी के कारण अलोकप्रिय है। R7RS जल्द ही एक उपाय के रूप में जारी किया जा रहा है, जबकि भाषा को 2 में विभाजित किया गया है। पहली भाषा शक्तिशाली और न्यूनतर हो रही है और दूसरी, कार्यान्वयन के बीच अंतर के लिए फीचर एक्सटेंशन प्रदान करने का पहला उद्देश्य का एक सुपरसेट। तब तक, हम SRFI (स्कीम रिक्वेस्ट फ़ॉर इंप्लीमेंटेशन) पर भरोसा करते हैं, जो प्रदान करते हैं (यदि मेजबान कार्यान्वयन या मैन्युअल रूप से लागू होता है (जैसा कि स्कीम में आम है)) सामान्य कार्यों को आंशिक रूप से पूरा करने का एक साधन है। यह सब कहने के लिए कि पहला कोड स्निपेट (51 अक्षर), जबकि यह पोर्टेबल हो सकता है, एसआरएफआई -22 (UNIX में स्कीम स्क्रिप्ट निष्पादित करना) पर निर्भर करता है, कमांड-लाइन तर्कों तक पहुंच के लिए:

(define(main x y)(case y(x => error)(else => load)))

या अधिक आसानी से:

(define (main current-file arg)
  (case arg
    [current-file => error]
    [else => load]))

दूसरा (48 वर्ण) व्याख्या करने के लिए एक फ़ाइल-कम साधन है जो स्वयं का मूल्यांकन नहीं कर सकता है (अशक्त वातावरण में):

(define(e)(write(eval(read)null-environment))(e))

या अधिक आसानी से:

(define (interpret)
  (write (eval (read) null-environment))
  (interpret))

यदि आप अपने दुभाषिया की नकल करते हैं तो आपका कोड काम नहीं करता है।
फूजएक्सएक्सएल

1
इसके गद्य में निहित पैतृक को शामिल करने के लिए इसे एक योजना के उत्तर पर छोड़ दें।
साइओस

1

ग्रूवी, 13 बाइट्स

{Eval.me(it)}

यह ग्रूवी के एक सबसेट की व्याख्या करना चाहिए।

परीक्षण के मामलों:

p={Eval.me(it)}

p'''
    (0..37).each{println"1234567890JIHGFEDCBAKLMNOPQRST!?,.ZYXWVU"[it..it+2]}
'''

p'''
    {Eval.me(it)}
'''

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


आप किस लाइन में व्याख्या किए जाने वाले कार्यक्रम को पढ़ते हैं? आपका कोड दिलचस्प है, हालांकि यह इस कार्य के लिए मान्य सबमिशन नहीं है।
FUZxxl

मुझे लगता है कि त्रुटि "पुनरावृत्ति सीमा पार हो गई" जैसी कुछ है?
इल्मरी करोनें

1

जावास्क्रिप्ट ईएस 6, 45 बाइट्स

$=(_=prompt())=>eval(_==`$=${$};$()`?0:_);$()

अभी भी प्रतिस्पर्धी! (thx @Downgoat)



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