क्विनियन रेगेक्स परीक्षक


13

यह चुनौती बहुत आसान है। इनपुट के रूप में, आप एक नियमित अभिव्यक्ति लेते हैं।

फिर, आप अपने स्रोत कोड को नियमित अभिव्यक्ति से मेल खाते हैं या नहीं, इस बात की सच्चाई / सच्चाई का उत्पादन करते हैं। यह इत्ना आसान है! बस दो और बातें:

  • कोई क्वीन बिलिन नहीं; हालाँकि, आप फ़ाइल IO इत्यादि द्वारा कोड के स्रोत कोड का उपयोग कर सकते हैं।
  • यह , इसलिए बाइट्स जीत में सबसे छोटा कोड है !

उदाहरण

यदि आपका स्रोत कोड कहा गया था, तो abc, एक इनपुट a\wcसच लौटाएगा और एक इनपुट a\dcगलत आएगा।


उदाहरण कृपया?
मामा फन रोल

1
@ C @O'Bʀɪᴇɴ नहीं, यह ठीक है।
माल्टसेन

2
1. मुझे नहीं लगता कि साधारण चरित्र वर्गों के साथ सिर्फ एक BRE पर्याप्त विशिष्ट है। क्या BRE सुविधाओं का समर्थन किया जाना है? 2. \dBRE में विशेष नहीं है; यह चरित्र से मेल खाता है d। 3. एक विशिष्ट रेगेक्स स्वाद चुनना उन भाषाओं के लिए आपकी चुनौती को सीमित करता है जो इसका समर्थन करते हैं, और कुछ भाषाएँ BRE का समर्थन करती हैं। क्या वह जानबूझकर है?
डेनिस

2
मैं इसे उत्तर देने वाले तक छोड़ने की सलाह दूंगा। यदि भाषा x डिफ़ॉल्ट रूप से रेगेक्स फ्लेवर वाई का उपयोग करता है , तो इस चुनौती में उस स्वाद का उपयोग करें।
डेनिस

6
@ मेन्टीसन आप प्रश्न निकाय में एक स्थानापन्न उदाहरण क्यों नहीं जोड़ते?

जवाबों:


14

जेड शेल, 12 बाइट्स

grep "$@"<$0

Zsh सशर्त केवल बाहर निकलने के कोड को समझते हैं, और स्क्रिप्ट तदनुसार 0 या 1 से बाहर निकलते हैं।

इसके अलावा, मिलान के लिए इस प्रिंट एक गैर रिक्त स्ट्रिंग (स्रोत कोड) और एक बेमेल के लिए एक खाली है, जो के साथ संयोजन में truthy / falsy मूल्यों के रूप में हो सकता है test/ [

कार्यक्रम अपनी खुद की फ़ाइल पढ़ता है, लेकिन ओपी की इस टिप्पणी के अनुसार , यह अनुमति है।


3
Aaand डेनिस जीता। ¯ \ _ (ツ) _ / ¯
कॉनर ओ'ब्रायन

यह काम नहीं करता है। यह उन में रिक्त स्थान के साथ पैटर्न पर टूट जाता है।
2

@ फेरेसम व्हाट्स! यह बात बताने के लिए धन्यवाद। मैंने अपना उत्तर संपादित कर दिया है।
डेनिस

2
अब यह टूट जाता है अगर यह नाम में रिक्त स्थान के साथ एक फ़ाइल को लिखा जाता है। या नामक एक फाइल -v। या ...
बेन मिलवुड

@BenMillwood मैं सामान्य रूप से कहूंगा कि इसे ऐसे किसी फ़ाइल नाम से न सहेजें , लेकिन zsh पर स्विच करने से यह बाइट काउंट को बढ़ाए बिना बुलेट प्रूफ बना देता है।
डेनिस

10

जावास्क्रिप्ट (ईएस 6), 39

(f=_=>!!`(f=${f})()`.match(prompt()))()

बस इसे पोस्ट करने के बारे में, लेकिन आपने मुझे इसके लिए हराया। अच्छा काम!
मामा फन रोल

12
आपके कोड की शुरुआत इस तरह से समझने की कोशिश करते समय मेरी तरह दिखती है: (f = _ =)
निको

9

पायथन 3, 119 बाइट्स

यह सिर्फ कूलर दिखता है, IMO (और यह फ़ाइल नहीं पढ़ता है)।

(lambda i:print(bool(__import__('re').search(input(),i))))("(lambda i:print(bool(__import__('re').search(input(),i))))")

पायथन 3, 67 बाइट्स

print(bool(__import__('re').search(input(),open(__file__).read())))

इस टिप्पणी को पढ़ने के बाद जोड़ा गया ।


intसे छोटा है bool
बिल्ली

7

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

r=readline;show(ismatch(Regex(r()),open(r,@__FILE__)))

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


3

जाप, 22 बाइट्स

"+Q ³sAJ fU"+Q ³sAJ fU

इस चुनौती को पूरा करने के लिए कुछ बाइट्स के साथ स्टैंडर्ड क्वीन फ्रेमवर्क जोड़ा गया। सत्य = मेल (तों), मिथ्या = अशक्त। इसे ऑनलाइन आज़माएं!

         // Implicit: U = input string, A = 10, J = -1, Q = quotation mark
"..."+Q  // Take this string and concatenate a quotation mark.
³        // Repeat three times.
sAJ      // Slice off the first 10 and last 1 chars.
fU       // Match U to the result.

2

गणितज्ञ, 63 बाइट्स

StringMatchQ[ToString[#0, InputForm], RegularExpression[#1]] & 

ट्रेलिंग स्थान पर ध्यान दें। मानक Mma quine तंत्र का उपयोग करता है, और यदि यह regex से मेल खाता है तो परीक्षण करता है।


2

पर्ल, 21 बाइट्स

open 0;$_=<0>=~$_

17 बाइट्स प्लस 4 बाइट्स के लिए -pl0। इस तरह से चलाएं:

echo open | perl -pl0 quinean

स्रोत फ़ाइल में केवल ऊपर का कोड (कोई शेबंग, कोई अनुगामी न्यूलाइन नहीं) होना चाहिए। आउटपुट 1अगर regex मैच और रिक्त स्ट्रिंग अगर यह नहीं करता है (रिक्त स्ट्रिंग falsey पर्ल में है)।


चार बाइट्स सहेजे जा सकते हैं यदि इनपुट की गारंटी एक नई पंक्ति में नहीं है:

open 0;say<0>=~<>

इस तरह से चलाएं:

echo -n open | perl -M5.010 quinean

sayपर्ल को 5.10+ की आवश्यकता होती है और इसे सक्षम होना चाहिए -M5.010मेटा के अनुसार , " -M5.010, जब जरूरत होती है, वह स्वतंत्र होता है," 17 बाइट्स का स्कोर देता है।

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

यह "धोखा" मानक पर एक साधारण भिन्नता है:

open 0;print<0>

यह नाम की फ़ाइल को खोलता है $0और सामग्री को पढ़ता है <0>

$_=<0>=~$_स्रोत फ़ाइल से एक पंक्ति पढ़ता है, की सामग्री $_(जो -pध्वज द्वारा पढ़ी गई थी ) के विरुद्ध एक रेग्क्स मैच करता है , और परिणाम को असाइन करता है $_। अंत में स्वचालित रूप से -pप्रिंट $_करता है।


2

जोल्फ, 18 15 बाइट्स

RegEx के JS स्वाद का समर्थन करता है, मुझे आशा है कि यह ठीक है। यहाँ यह कोशिश करो!

 h$code.value#i

टिप्पणी की:

  $code.value#      the document's element "code" (the program container)
_h            i     and output if it has (matches) the input string (i.e. regex)

यह किस ब्राउज़र में काम करता है? क्रोम और फ़ायरफ़ॉक्स दोनों शिकायत करते हैं कि x.stepएक फ़ंक्शन नहीं है।
डेनिस

@ डेनिस हू। मैंने कल रात दुभाषिए को तोड़ा होगा। और क्या गलत है? मैं वर्तमान में स्कूल में डिबग करने में असमर्थ हूं।
कॉनर ओ'ब्रायन

अच्छा। अब दस्तावेज़ के तत्व "कोड" में एक शॉर्टकट जोड़ें ताकि हम इसे छोटा बना सकें।
user48538

@ C @O'Bʀɪᴇɴ यह एक संदर्भ त्रुटि भी देता है math
डेनिस

@ डेनिस आह, इसीलिए। मैं HTML को अपडेट करना भूल गया, मैंने math.js. जब मैं घर आऊंगा, तो मैं बहुत देर हो जाऊंगा। (लगभग 4 ईश घंटों में)
कॉनर ओ'ब्रायन

1

S, 14 चार्ट / 26 बाइट्स (गैर-प्रतिस्पर्धी)

⟮‼(ⒸⅩ222+ᶈ0)đï

Try it here (Firefox only).

चुनौती के बाद लिखे बग फिक्स के साथ एक संस्करण का उपयोग करना।

व्याख्या

⟮‼(ⒸⅩ222+ᶈ0)đï // implicit: ï=input
⟮               // copy block: copy following code for later use
 (ⒸⅩ222+ᶈ0)   // take convert 10222 to char, add stuff inside copy block
‼           đï // check if input matches resulting string
               // implicit output

नोट: कॉपी ब्लॉक्स क्वीन ऑपरेटर नहीं हैं। वे चर घोषणाओं के लिए अधिक बहुमुखी विकल्प होने के लिए हैं।


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