सबसे छोटा स्व-पहचान कार्यक्रम (एक क्वीन संस्करण) लिखें


57

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

इस समस्या को क्वाइंस से संबंधित होने के रूप में वर्णित किया जा सकता है, क्योंकि कार्यक्रम को किसी भी तरह से प्रक्रिया में अपने स्वयं के स्रोत कोड की गणना करने में सक्षम होना चाहिए।

यह कोड गोल्फ है: मानक नियम लागू होते हैं। आपके प्रोग्राम को किसी विशेष फ़ाइल का उपयोग नहीं करना चाहिए, जैसे कि उसके स्वयं के स्रोत कोड की फ़ाइल।

संपादित करें: यदि आप ऐसा चुनते हैं, तो सच / गलत को True / False या 1/0 से बदला जा सकता है।

उदाहरण

यदि आपके प्रोग्राम का सोर्स कोड है bhiofvewoibh46948732));:/)4, तो यहां बताया गया है कि आपका प्रोग्राम क्या करना चाहिए:

इनपुट (स्टडिन)

bhiofvewoibh46948732));:/)4

आउटपुट (स्टडआउट)

true

इनपुट

(Anything other than your source code)

उत्पादन

false

7
है true/ falseउत्पादन एक मजबूत आवश्यकता, या बदलाव (हैं True/ False, 1/ 0) स्वीकार्य रूप में अच्छी तरह?
क्रिस्टियन लुपस्कु

क्या यह समस्या है यदि प्रोग्राम सही / गलत से थोड़ा अधिक आउटपुट करता है (यदि यह अस्पष्ट रहता है और सत्य / गलत के साथ समाप्त होता है)?
डेनिस सेगुरेट


5
तो आपका मतलब है एक नार्सिसिस्ट प्रोग्राम?
प्युर्लेज़

जवाबों:


33

जावास्क्रिप्ट: २६

function f(s){return s==f}

मुझे नहीं पता कि एक जावास्क्रिप्ट फ़ाइल वास्तव में "प्रोग्राम" के रूप में योग्य है या नहीं।



यह एक तीर समारोह का उपयोग करके छोटा किया जा सकता हैf=s=>s=='f='+f
जोनाथन

2
@ जोनाथन हाँ। लेकिन 2013 में यह नहीं हो सका ...
सैगुरेट

19

जावास्क्रिप्ट ES6, 9 अक्षर

यह जेएस में ऐसा करने का एकमात्र (गोल्फ) तरीका है। ईएस 6 सिर्फ इसे सुपर कम अक्षर लेता है

इसे नवीनतम फ़ायरफ़ॉक्स वेब कंसोल में चलाएं:

f=x=>f==x

उदाहरण का उपयोग:

f("check") // returns false
f("x=>f==x") // returns true

1
@phinotpi - क्या मेरी प्रविष्टि अभी भी उत्तर के रूप में चुने जाने योग्य है?
ऑप्टिमाइज़र

6
यह तर्क दिया जा सकता है कि इस मामले में स्रोत है f=x=>f==xऔर नहीं x=>f==x, जबकि डेनिस सेगुरेट का संस्करण वास्तव में पूरे स्रोत की जांच करता है।
हैन्क्रेकार्ड्स

@Hankrecords जावास्क्रिप्ट का फैसला करते हैं। f=x=>f==x function f() f.toSource() "x=>f==x"(मूल रूप से सांत्वना में कोड का मूल्यांकन करें और फिर f.toSource()उस विधि का समर्थन करने वाले ब्राउज़र में मूल्यांकन
करें

अनाम फ़ंक्शंस की अनुमति नहीं है (अपने कोड को छोटा करें x=>f==x) EDIT: nevermind, f को फ़ंक्शन के अंदर संदर्भित किया जाता है
MilkyWay90

9

हास्केल, 72 अक्षर

main=interact$show.(==s++show s);s="main=interact$show.(==s++show s);s="

नोट: स्क्रिप्ट के अंत में कोई अंत अक्षर नहीं है।

$ runhaskell Self.hs < Self.hs
True

8

GolfScript, 11 वर्ण

{`".~"+=}.~

=इस कोड के बिना , यह कोड एक क्वीन होगा जो स्ट्रिंग के रूप में अपना स्वयं का सोर्स कोड बनाता है। =वह अपने इनपुट और आउटपुट को यह स्ट्रिंग तुलना में आता है 1अगर वे से मेल खाते हैं और 0न वे करते हैं। ध्यान दें कि तुलना सटीक है - विशेष रूप से, इनपुट के अंत में एक अनुगामी न्यूलाइन इसे विफल करने का कारण बनेगी।

स्पष्टीकरण:

  • { } GolfScript में एक कोड ब्लॉक शाब्दिक है;
  • .इस कोड ब्लॉक को डुप्लिकेट ~करता है , और दूसरी कॉपी निष्पादित करता है (स्टैक पर पहले को छोड़कर);
  • `कोड ब्लॉक को स्ट्रिंग करता है, और ".~"+ .~इसे जोड़ देता है;
  • अंत में, =इनपुट के साथ परिणामी स्ट्रिंग की तुलना करें (जो कि प्रोग्राम शुरू होने से पहले गोल्फस्क्रिप्ट दुभाषिया द्वारा स्ट्रिंग के रूप में स्टैक पर धकेल दिया जाता है) और 1यदि वे मेल खाते हैं और 0यदि वे नहीं करते हैं तो वापस आ जाता है।

7

पर्ल, इन्फिनिटी 41 38 वर्ण

$_=q(print<>eq"\$_=q($_);eval"|0);eval

अद्यतन: कार्यक्रम अब एक नई पंक्ति के साथ समाप्त नहीं होता है, जिसका अर्थ है कि यह बहु-पंक्ति फ़ाइलों पर सही ढंग से काम करेगा। आपको एंट्री मार के बिना STDIN से इनपुट दर्ज करना है। विंडोज पर मैं केवल एक फ़ाइल से पढ़कर ऐसा करने में सक्षम था।

मूल समाधान:

print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(print<>==q(...

1
अच्छी तरह से किया! । । ।
भीड़

कोड के साथ शुरू होने वाली फ़ाइल के लिए विफल रहता है, जैसे(cat id.pl; echo foo)|perl id.pl
Geoff Reedy

@GeoffReedy, धन्यवाद; प्रोग्राम ने बहु-लाइन इनपुट को पहले नहीं संभाला था। अब इसे सुधारा गया है।

डर, क्या यह कोड गेंदबाजी है?
मैथ्यू रोह

7

> <> , 68 बाइट्स

मछलियों को मछली खाना पसंद है। अब हम जानते हैं कि वे अपने दोस्तों से अलग पहचान बना सकते हैं। '

00v      0+1~$^?)0~\;n0\
  >:@@:@gi:0(?\:a=?/=?!/$1+
  0n;n*=f$=2~~/

आप इसे ऑनलाइन आज़मा सकते हैं !


1
यह 1कोड के किसी भी उपसर्ग के लिए आउटपुट
जो किंग

@ जोक्स करना स्क्रिप्ट के सिर्फ उपसर्गों से भी बदतर था, इसने छोटी लाइनों को भी स्वीकार कर लिया! मैंने इसे ठीक कर लिया है, लेकिन मैं निराश हूं कि यह उतना सामान्य नहीं है जितना मैं चाहता था, मुझे स्क्रिप्ट के अंत में पूरे सेल से मिलान करने के लिए पहुंच सेल की जांच करनी थी। यह निश्चित रूप से सुधार किया जा सकता है, लेकिन मुझे यकीन नहीं है कि मैं परेशान करूंगा।
हारून

6

पायथन 2, 55

a='a=%r;print a%%a==raw_input()';print a%a==raw_input()

परीक्षण:

a='a=%r;print a%%a==raw_input()';print a%a==raw_input() -> True

(anything else) -> False


3
किसी भी फ़ाइल पर विफल रहता है जो पहली पंक्ति के बराबर होती है a='a=%r;print a%%a==raw_input()';print a%a==raw_input()
बूथबेल

सच है, मल्टी-लाइन इनपुट समर्थित नहीं है।
20

एक तुच्छ निर्धारण के raw_input()साथ प्रतिस्थापित करना होगा __import__('sys').stdin.read()
22

मैं चुनौती शब्द (मैं अंग्रेजी व्याकरण के साथ अच्छा नहीं कर रहा हूँ) के कारण भ्रमित हूँ। क्या यह अनुमति है? print raw_input()==open(__file__).read()? यह केवल 40 बाइट्स है, आपके raw_input()दृष्टिकोण का उपयोग करता है , लेकिन यह कोड पढ़ता है।
साइमन

1
@ साइमन की अनुमति नहीं है, यह इस तरह की चुनौतियों के लिए मानक खामियों में से एक है। और हाँ, इसका यही अर्थ हैYour program must not access any special files, such as the file of its own source code.
PunPun1000

6

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

$=_=>_==`$=`+$

नील की बदौलत माइनस दो बाइट्स।

31 बाइट्स अगर हमें प्रॉम्प्ट से इनपुट लेना चाहिए।

$=_=>prompt()==`$=${$};$()`;$()

38 बाइट्स अगर हम अलर्ट के माध्यम से उत्पादन करना चाहिए।

$=_=>alert(prompt()==`$=${$};$()`);$()

ऐसा करने का यह उचित तरीका है, क्योंकि ऑप्टिमाइज़र का जवाब पूरे स्रोत कोड को स्वीकार नहीं करता है।


1
अच्छा लगा, हालाँकि मैं सिर्फ लिखूंगा '$='+$
22

ओह, सच है। @ नील
कॉनर ओ'ब्रायन

1
मुझे पूरा यकीन है कि आपको अंत की आवश्यकता है ;$()क्योंकि फ़ंक्शन कॉल क्वीन का हिस्सा है। इसका मतलब यह भी है कि आपको promptइनपुट के लिए खाते में स्विच करने की आवश्यकता होगी ।
मामा फन रोल

1
यह समस्या नहीं है। फ़ंक्शन कॉल आवश्यक है क्योंकि यह क्वीन का एक हिस्सा है। उपयोगकर्ता को इसे फ़ंक्शन के रूप में कॉल करने की अनुमति देने से क्वीन बर्बाद हो जाएगा।
मामा फन रोल

1
कोशिश$=_=>prompt()==`$=${$};$()`;$()
मामा फन रोल

5

नोड.जेएस: 54

function f(){console.log(f+'f()'==process.argv[2])}f()

आप इसे एक फ़ाइल में सहेजकर f.js(सटीक नाम का कोई महत्व नहीं है) और उपयोग करके परीक्षण करते हैं

node f.js "test"

(जो गलत आउटपुट देता है) या

node f.js "$(< f.js)"

(जो आउटपुट सही है)

मैंने eval के आधार पर एक अलग संस्करण भी बनाया:

eval(f="console.log('eval(f='+JSON.stringify(f)+')'==process.argv[2])")

अब यह when२ चार्ट पर है, मैं कोशिश करूंगा कि जब मेरे पास समय हो।


1
@ dan1111 क्यों? यह किसी भी फ़ाइल का उपयोग नहीं करता है। मैं सिर्फ इशारा कर रहा था कि कैसे लोगों को कार्यक्रम शुरू करने के लिए इस्तेमाल नहीं किया जा सकता है। यह फ़ाइल नहीं पढ़ता है।
डेनसिटी सेगुरेट

1
जावास्क्रिप्ट समाधान के सभी इस तथ्य का लाभ उठाते हैं कि आप जेएस में अपने स्वयं के स्रोत कोड तक पहुंच सकते हैं। यह तकनीकी रूप से " अपने स्वयं के स्रोत कोड की फ़ाइल तक पहुंच" नहीं हो सकता है , लेकिन यह ठीक उसी चीज को पूरा करता है। मुझे लगता है कि आपका जवाब कानूनी है, हालांकि, सवाल के रूप में यह विशेष रूप से मना नहीं किया था।

ठीक है, आप एक फ़ंक्शन के स्रोत (केवल शरीर सटीक होने के लिए) तक पहुंचते हैं जो कार्यक्रम का हिस्सा है। यह मिक्सिन () में डी का उपयोग करने जैसा है। लेकिन मुझे नहीं लगता कि जेएस के दो अन्य उत्तर, जिनमें से एक मुझे भी शामिल है, वास्तव में "प्रोग्राम" के रूप में योग्य है।
डेनिस सेगुरेट

@ डीस्ट्रोय वास्तव में डी में मिक्सिन को पढ़ने के स्रोत की तुलना में eval का उपयोग करना अधिक पसंद करता है
शाफ़्ट फ्रीक

@ratchetfreak हाँ, तुम सही हो। लेकिन मुझे लगता है कि आपके कार्यक्रम में एनम मूल्य का एक प्रकार का स्ट्रिंग का उपयोग किया जाता है, है ना? और eval / mixin का उपयोग करने वाला कोई भी कोड फ़ंक्शन के स्रोत का उपयोग करने की तुलना में समान चाल के बारे में है।
डेनिस सेगरुट

5

स्मॉलटाकल (चरणो 2.0 बोली)

स्ट्रिंग में इस 41 वर्ण विधि को लागू करें (कोड-गोल्फ के लिए बदसूरत प्रारूपण):

isItMe^self=thisContext method sourceCode

फिर एक कार्यक्षेत्र में इसका मूल्यांकन करें (पारंपरिक स्मॉलटॉक तरीके से प्रिंट करें)
इनपुट को स्टडिन से नहीं पढ़ा जाता है, यह सिर्फ एक स्ट्रिंग है जिससे हम संदेश भेजते हैं (और क्या एक कार्यक्रम स्मॉलटॉक में हो सकता है?)।

'isItMe^self=thisContext method sourceCode' isItMe.

लेकिन हम धोखा दे रहे हैं, sourceCode कुछ स्रोत फ़ाइल पढ़ता है ...
यहाँ 51 वर्णों वाला एक संस्करण है जो नहीं है:

isItMe
    ^ self = thisContext method decompileString

और के साथ परीक्षण:

'isItMe
    ^ self = thisContext method decompileString' isItMe

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

(UIManager default request: 'type me') = (thisContext method decompileString withSeparatorsCompacted allButFirst: 7)

चूंकि विघटित प्रारूप में सीआर और टीएबी शामिल हैं, इसलिए हम इसे बदल देते हैं।
फिर हम पहले 7 वर्णों को छोड़ते हैं 'doIt ^'

अंत में स्टैड का उपयोग करते हुए एक 105 वर्ण संस्करण, बस कमांड लाइन से इस वाक्य की व्याख्या करें, बस अधिक मुख्यधारा महसूस करने के लिए:

Pharo -headless Pharo-2.0.image eval "FileStream stdin nextLine = (thisContext method decompileString withSeparatorsCompacted allButFirst: 7)"

4

फ्लेक्स - 312 वर्ण

Q \"
N \n
S " "
B \\
P "Q{S}{B}{Q}{N}N{S}{B}n{N}S{S}{Q}{S}{Q}{N}B{S}{B}{B}{N}P{S}{Q}{P}{Q}{N}M{S}{Q}{M}{Q}{N}%%{N}{P}{N}{M}{N} putchar('1');"
M "(.|{N})* putchar('0');"
%%
Q{S}{B}{Q}{N}N{S}{B}n{N}S{S}{Q}{S}{Q}{N}B{S}{B}{B}{N}P{S}{Q}{P}{Q}{N}M{S}{Q}{M}{Q}{N}%%{N}{P}{N}{M}{N} putchar('1');
(.|{N})* putchar('0');

शायद कम किया जा सकता है, लेकिन यह मल्टी-लाइन इनपुट के साथ काम करता है (आवश्यक है क्योंकि स्रोत कोड कई लाइनें हैं) और यहां तक ​​कि उन इनपुट के लिए जो प्रोग्राम को विकल्प के रूप में समाहित करते हैं। ऐसा लगता है कि इनमें से एक या दोनों पर अब तक कई जवाब विफल हैं।

संकलन आदेश: flex id.l && gcc -lfl lex.yy.c




3

गोल्फस्क्रिप्ट - 26

":@;[34]@+2*=":@;[34]@+2*=

Http://esolangs.org/wiki/GolfScript#Examples से प्रेरित

एक और संस्करण:

"[34].@@;+2*="[34].@@;+2*=

बहुत बुरा है कि \दोनों स्वैप और बच रहे हैं ...


3

पायथन 2, 47 बाइट्स

_='_=%r;print _%%_==input()';print _%_==input()

जोड़े गए चेक के साथ एक साधारण रानी।


यह काम नहीं करता है। printहै एक समारोह अजगर 3. आप क्या करने की जरूरत होता है print(_%%_==input())';print(_%_==input())या अजगर 2. के लिए इसे बदल
Mego

3

CJam , 12 बाइट्स

{s"_~"+q=}_~

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

व्याख्या

यह सिर्फ मानक CJam quine ढांचे का उपयोग करता है।

{s"_~"+q=}    e# Push this block (function literal).
          _~  e# Copy and run it.

ब्लॉक क्या करता है:

 s            e# Stringify the top element (this block itself).
  "_~"+       e# Append "_~". Now the source code is on the stack.
       q      e# Read the input.
        =     e# Check if it equals the source code.

मेरे पास यही समाधान है ।_।
फल



2

पायथन, 187 बाइट्स

import sys;code="import sys;code=!X!;print(sys.stdin.read()==code.replace(chr(33),chr(34)).replace(!X!,code,1))";print(sys.stdin.read()==code.replace(chr(33),chr(34)).replace("X",code,1))

अंत में newline नहीं जोड़ने के लिए सावधान। बेहतर पायथन-फू के साथ कोई इसे छोटा करने में सक्षम हो सकता है।


2
आप C=chrकई बाइट्स छोड़ने के लिए उपयोग कर सकते हैं । इसके अलावा, चर नाम को छोटा करें code
जैच गेट्स

2
चूंकि किसी ने भी इसे एक वर्ष से अधिक समय तक नहीं कहा, इसलिए आपका स्वागत है पीपीसीजी में आपका स्वागत है!
से एग्लोफ़र ​​आउटरीक

2

भूसी , 11 बाइट्स

=hS+s"=hS+s

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

व्याख्या

स्पष्टीकरण ¨स्ट्रिमिंग का उपयोग करता है (अपठनीय बचने से बचने के लिए):

     "=hS+s  -- string literal: ¨=hS+s¨
  S+         -- join itself with
    s        -- | itself "showed": ¨"=hS+s"¨
             -- : ¨=hS+s"=hS+s"¨
 h           -- init: ¨=hS+s"=hS+s¨
=            -- is the input equal?

फ़ंक्शन को हटाकर =आप यह सत्यापित कर सकते हैं कि यह वास्तव में केवल स्रोत से ही मेल खाएगा।




2

05AB1E , 15 बाइट्स

0"D34çýQ"D34çýQ

डिफ़ॉल्ट 0"D34çý"D34çý को जोड़कर संशोधित करता है Q(निहित इनपुट के साथ समानता की जांच करें)

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

स्पष्टीकरण:

0                # Push 0 to the stack
                 #  STACK: [0]
 "D34çýQ"        # Push the string 'D34çýQ' to the stack
                 #  STACK: [0, 'D34çýIå']
         D       # Duplicate this string
                 #  STACK: [0, 'D34çýIå', 'D34çýIå']
          34ç    # Push '"' to the stack
                 #  STACK: [0, 'D34çýIå', 'D34çýIå', '"']
             ý   # Join the stack by this '"' delimiter
                 #  STACK: ['0"D34çýIå"D34çýIå']
              Q  # Check if it's equal to the (implicit) input
                 # (and output the top of the stack implicitly as result)

@Grimy द्वारा प्रदान किया गया कूल 15 बाइट्स विकल्प :

187745012D27BJQ

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

स्पष्टीकरण:

187745012        # Push integer 187745012 
                 #  STACK: [187745012]
         D       # Duplicate it
                 #  STACK: [187745012, 187745012]
          27     # Push integer 27
                 #  STACK: [187745012, 187745012, 27]
            B    # Convert 187745012 to base-27
                 #  STACK: [187745012, "D27BJQ"]
             J   # Join the values on the stack together
                 #  STACK: ["187745012D27BJQ"]
              Q  # Check if it's equal to the (implicit) input
                 # (and output the top of the stack implicitly as result)

3
187745012D27BJQएक टाई है।
ग्रिमि

1

C - 186 176 वर्ण

एक लाइन:

 *a="*a=%c%s%c,b[999],c[999];main(){sprintf(b,a,34,a,34);gets(c);putchar(strcmp(b,c)?'0':'1');}",b[999],c[999];main(){sprintf(b,a,34,a,34);gets(c);putchar(strcmp(b,c)?'0':'1');}

व्हॉट्सएप के साथ (ध्यान दें कि इससे प्रोग्राम टूट जाता है):

*a="*a=%c%s%c,b[999],c[999];main(){sprintf(b,a,34,a,34);gets(c);putchar(strcmp(b,c)?'0':'1');}",b[999],c[999];
main() {
  sprintf(b,a,34,a,34);
  gets(c);
  putchar(strcmp(b,c)?'0':'1');
}



1

क्यू, 8 बाइट्स

{x~.z.s}

स्व-रेफरेंशियल .zs से मेल खाते इनपुट पर बूलियन लौटें


1

रूनिक , 11 बाइट्स

"3X4+kSqi=@

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

TIO अपडेट हो गया और अब कोई इनपुट पढ़ने वाला मुद्दा नहीं है (और अब किसी अनुगामी व्हॉट्सएप की आवश्यकता नहीं है)।

व्याख्या

>                 Implicit entry
 "                Begin reading as string
  3X4+kSqi=@      Pushed to the stack as a string, loop around
 "                End reading as string
  3X4+            Push 3*10 and 4 to the stack, add them together
      k           Convert to character (")
       S          Swap the top two items on the stack
        q         Concatenate. This leaves only "3X4+kSqi=@ on the stack
         i        Read input
          =       Compare using .Equals, push 1 if equal, else 0
           @      Print and terminate

जोकिंग का समाधान:

"'<~qi=@|

व्याख्या

  <              Entry
 '               Read character (loop around)
"                Push "
         |       Mirror
"                Begin reading string (loop around)
 '<~ri=@|        Push the string '<~qi=@| (loop around)
"                End reading string
 '<~             Push the character < and then discard it
    q            Concatenate, stack contains only "'<~qi=@|
      i          Read input
       =         Compare
        @        Print and terminate


@JoKing बहुत चालाक।
15

असल में, 9 बाइट्स को rबचाने से बचा जाता है
Jo King

@JoKing मैं शायद (10 बाइट समाधान से) उस तक पहुंचने में सक्षम होना चाहिए था, लेकिन मैं अभी तक अपने cawfee नहीं था । मैं पहले ही कल काम कर चुका था कि "बाईं ओर एक ही जगह है जो वास्तव में जा सकती है, क्योंकि यह कहीं और होने से चीजें जटिल हो जाती हैं। (लेकिन अभी-अभी मुझे इसे अपने डिबगर में चलाने के लिए देखना पड़ा कि यह क्या कर रहा है ...)
ड्रेको

1

आर , 54 बाइट्स

f=function(s)s==paste0("f=function(s)s==", body(f)[3])

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

bodyफ़ंक्शन का शरीर मिलता है (इसे थोड़ा अलग करना, ताकि आगे body(f)[3]से सब कुछ हो paste0)। दिलचस्प है, bodyकोड को सुधारता है, अल्पविराम के बाद रिक्त स्थान जोड़ रहा है, आदि इस प्रकार अल्पविराम के बाद अंतरिक्ष के साथ आर गोल्फ उत्तर का एक दुर्लभ मामला है।

यह काम करता है क्योंकि body(f)प्रकार की एक वस्तु है language, और as.characterइस प्रकार के लिए एक विधि मौजूद है । दूसरी ओर, fऔर args(f)प्रकार के हैं closure, और जहाँ तक मैं बता सकता हूं, उसे चरित्र प्रकार में परिवर्तित नहीं किया जा सकता है। कृपया मुझसे यह न पूछें कि भाषा का प्रकार क्या है ...


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