क्या यह स्वयं का एक विकल्प है?


21

एक स्ट्रिंग को देखते हुए, वापसी करें कि क्या स्ट्रिंग प्रोग्राम के स्रोत कोड का एक विकल्प है।

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

यह एक इसलिए सबसे छोटा कोड जीतता है!

एक उदाहरण

यदि आपका स्रोत कोड है print(input() = False), तो इसके लिए True लौटना चाहिए nt(iलेकिन गलत है tupn



2
ज्यादातर चुनौतियों के साथ @totallyhuman, हाँ।
caird coinheringaahing


10
@StanStrum यह डुप्लिकेट को इंगित करने के लिए नहीं है, यह संबंधित चुनौतियों को दिखाने के लिए है जो लोगों को रुचि हो सकती है और उन्हें दाईं ओर साइडबार पर दिखा सकती है।
अमानवीय

1
क्या इनपुट खाली हो सकता है? (वास्तव में, कोड खाली हो सकता है?)
लिन

जवाबों:



6

जावास्क्रिप्ट , 25 बाइट्स

f=s=>('f='+f).includes(s)

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

मैं व्यक्तिगत रूप से इसका प्रशंसक नहीं हूं, लेकिन इसकी अनुमति है

वैकल्पिक (अमान्य?) समाधान, 19 बाइट्स

यह एक रेग्ज के रूप में इनपुट लेता है।

f=s=>s.test('f='+f)

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


क्या यह खुद नहीं पढ़ता है?
16


स्पष्ट रूप से उल्लेख करने का उद्देश्य क्या है (Node.js)? क्या यह ब्राउज़रों में भी काम नहीं करता है?

@ ThePirateBay क्रोम में उम्मीद के मुताबिक काम करता है।
स्टीनबर्गघ

1
आप लोग आगे की सोच रहे हैं, यह सिर्फ TIO टेम्पलेट से है। : पी
पूरी तरह से

5

जावा 8, 124 112 बाइट्स (फंक्शन)

p->{String s="p->{String s=%c%s%1$c;return s.format(s,34,s).contains(p);}";return s.format(s,34,s).contains(p);}

इसे यहाँ आज़माएँ।


इसके बजाय यह पूर्ण कार्यक्रम के रूप में है (पीपीसीजी पर कार्यों की अनुमति देने के कारणों में से एक को देखने के लिए, क्योंकि कुछ भाषाओं की तरह जावा-पूर्ण कार्यक्रमों के लिए बहुत वर्बोज़ अनिवार्य बॉयलरप्लेट कोड की आवश्यकता होती है)।

जावा 8, 226 214 बाइट्स (पूरा कार्यक्रम)

interface M{static void main(String[]a){String s="interface M{static void main(String[]a){String s=%c%s%1$c;System.out.print(s.format(s,34,s).contains(a[0]));}}";System.out.print(s.format(s,34,s).contains(a[0]));}}

इसे यहाँ आज़माएँ।


स्पष्टीकरण:

  • String sअस्वरूपित स्रोत कोड शामिल हैं।
  • %sइस स्ट्रिंग को स्वयं के साथ इनपुट करने के लिए उपयोग किया जाता है s.format(...)
  • %c, %1$cऔर द34 डबल-कोट्स को फॉर्मेट करने के लिए उपयोग किया जाता है।
  • s.format(s,34,s) यह सब एक साथ रखता है।

और फिर .contains(...)यह जांचने के लिए उपयोग किया जाता है कि क्या इस स्रोत कोड में दिए गए इनपुट हैं।


यह मुझे सभी स्ट्रिंग्स के लिए सच है जब मैं "इसे ऑनलाइन आज़माता हूं"।
माइकल

1
@MichaelKarnerfors मेरे लिए नहीं ... क्या आप सुनिश्चित हैं कि आप हर बार तर्क नहीं जोड़ते हैं? केवल एक तर्क का उपयोग किया जाता है। हर बार जब आप एक नया परीक्षण करते हैं, तो आपको तर्क बदलते हुए कार्यक्रम चलाना होगा।
ओलिवियर ग्रेगोइरे

@ OlivierGrégoire आप सही हैं, मैंने TIO पृष्ठ का गलत उपयोग किया। धन्यवाद। :)
माइकलके

3

बैश, 43 , 28 बाइट्स

[[ $BASH_COMMAND = *"$1"* ]]

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


मैं बैश को नहीं जानता, लेकिन क्या यह व्हॉट्सएप के बहुत सारे हिस्सों को हटाकर आगे बढ़ाया जा सकता है?
16

@cairdcoinheringaahing मुझे ऐसा नहीं लगता, typesetयह इस AFAICT की तरह प्रारूपित करता है। इसे ऑनलाइन आज़माएं!
आउटगोल्फ

लेकिन शायद एक और तकनीक का उपयोग करके सुधार किया जा सकता है
नहुएल फौलीउल

बस एक और समाधान मिला
नाहुएल फौइउल

क्या करता $1है?
caird coinheringaahing

2

हास्केल , 92 बाइट्स

import Data.List;f s=isInfixOf s$(++)<*>show$"import Data.List;f s=isInfixOf s$(++)<*>show$"

इसे ऑनलाइन आज़माएं! मानक क्वीन का स्पष्ट विस्तार। आयात से छुटकारा पाना अच्छा होगा, लेकिन मुझे संदेह है कि isInfixOfकम मात्रा में बाइट्स में गणना की जा सकती है।



2

QBIC , 28 बाइट्स

?instr(B+B,;)#?instr(B+B,;)#

यह 0 प्रिंट करता है, यदि इनपुट स्रोत का एक विकल्प नहीं है, और एक्स अन्यथा अन्यथा जहां एक्स प्रतिस्थापन का पहला (पहला) सूचकांक है।

व्याख्या

Latter part:
#?instr(B+B,;)#   Define a string literal B$ with a copy of the source

First part:
?                 PRINT
 instr(   , )     the index of
           ;          the cmd line parameter A$
       B+B            in B$ concatenated with itself

#QBIC में एक स्ट्रिंग शाब्दिक को परिभाषित करता है, और इसे पहले उपलब्ध स्ट्रिंग चर को असाइन करता है। यह B$इस कार्यक्रम में है, क्योंकि A$पहले से ही ;(cmd लाइन से एक स्ट्रिंग पढ़ें)। फिर, परिसीमन तक सब कुछ शाब्दिक रूप से खिलाया जाता है; सीमांकक एक बैकटिक है - जो इसे केवल ASCII चार बनाता है जो स्ट्रिंग लिट में शामिल नहीं है। इस मामले में, QBIC को बैकटिक की आवश्यकता नहीं है, क्योंकि QBIC के ऑटो-क्लोज़ फ़ीचर द्वारा कोड के अंत में शाब्दिक को समाप्त कर दिया जाता है। QBIC की शाब्दिक जानकारी के लिए, शोकेस थ्रेड देखें ।


Aइस संदर्भ में क्या है ?
caird coinheringaahing

@cairdcoinheringaahing मेरी तरफ से एक छोटी सी त्रुटि, किया गया है Bऔर एक स्पष्टीकरण जोड़ा जाना चाहिए ।
स्टेनबर्घ

2

जेली , 10 बाइट्स

“;⁾vṾƓẇ”vṾ

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

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

“;⁾vṾƓẇ”vṾ  Main link. No arguments.

“;⁾vṾƓẇ”    Set the left argument and the return value to ';⁾vṾƓẇ'.
         Ṿ  Uneval; yield '“;⁾vṾƓẇ”'.
        v   Dyadic eval; eval ';⁾vṾƓẇ' with argument '“;⁾vṾƓẇ”'.

  ⁾vṾ       Yield 'vṾ'.
 ;          Append it to '“;⁾vṾƓẇ”', yielding the source code.
     Ɠ      Read a string from STDIN.
      ẇ     Check if it's a substring of the source code.

1

जूलिया, 72 बाइट्स

मुझे अब समझ में आया कि लोग क्या कहते हैं जब वे कहते हैं कि क्वीन की समस्याएं क्लासिक क्वीन पर सिर्फ बदलाव हैं।

x="~y=contains\"x=\$(repr(x));\$x\",y)";~y=contains("x=$(repr(x));$x",y)

व्याख्या

#Defines x to be the next line of the source, with the help of escaping characters
x="~y=contains\"x=\$(repr(x));\$x\",y)"; 
#Interpolates together a comparison string, including repr(x), the re-escaped from of x, and x itself, for comparison. 
~y=contains("x=$(repr(x));$x",y)


0

05AB1E , 17 बाइट्स

0"D34çýIå"D34çýIå

जोड़कर डिफ़ॉल्ट का संशोधन ।0"D34çý"D34çý

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

स्पष्टीकरण:

0                    # Push 0 to the stack
                     #  STACK: [0]
 "D34çýIå"           # Push the string 'D34çýIå' 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å']
               I     # Take the input
                     #  STACK: ['0"D34çýIå"D34çýIå', 'Iå"D']
                å    # Check if it's a substring of the source code
                     #  STACK [1]
                     # (Output the top of the stack implicitly)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.