কুইনান রেজেক্স পরীক্ষক


13

এই চ্যালেঞ্জটি বেশ সহজ। ইনপুট হিসাবে, আপনি একটি নিয়মিত ভাব প্রকাশ করেন take

তারপরে, আপনি আপনার উত্স কোডটি নিয়মিত ভাবের সাথে মেলে কিনা তার সত্যতা / মিথ্যা আউটপুট দেন। এটা যে সহজ! আরও দুটি জিনিস:

  • কোয়াইন বিল্টিনস নেই; আপনি যাইহোক, ফাইল আইও ইত্যাদি দ্বারা কোডের উত্স কোড অ্যাক্সেস করতে পারেন etc.
  • এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোড !

উদাহরণ

যদি আপনার উত্স কোডটি বলা হয়, abcএকটি ইনপুট a\wcসত্য হয়ে যায় এবং এর একটি ইনপুট a\dcমিথ্যা প্রত্যাবর্তন করে।


উদাহরণ দয়া করে?
মামা ফান রোল

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ না, ঠিক আছে।
মালতিসেন

2
1. আমি মনে করি না সরল চরিত্রের ক্লাসগুলির সাথে একটি বিআরই যথেষ্ট নির্দিষ্ট is বিআরই বৈশিষ্ট্যগুলি কী সমর্থন করতে হবে? 2. \dবিআরই তে বিশেষ নয়; এটি চরিত্রের সাথে মেলে d। ৩. একটি নির্দিষ্ট রেগেক্স গন্ধ নির্বাচন করা আপনার চ্যালেঞ্জগুলিকে সমর্থন করে এমন ভাষাগুলির মধ্যে সীমাবদ্ধ করে এবং কয়েকটি ভাষা বিআরই সমর্থন করে। এটা কি ইচ্ছাকৃত?
ডেনিস

2
আমি এটিকে উত্তরদাতার কাছে রেখে দেওয়ার পরামর্শ দিই। যদি ভাষা এক্স ডিফল্টরূপে রেজেক্স ফ্লেভার y ব্যবহার করে, তবে এই চ্যালেঞ্জটিতে সেই স্বাদটি ব্যবহার করুন।
ডেনিস

6
@ মাল্টেসেন আপনি কেন প্রশ্ন সংস্থায় একটি বিকল্প উদাহরণ যুক্ত করবেন না?
ফেয়ারসুম

উত্তর:


14

জেড শেল, 12 বাইট

grep "$@"<$0

Zsh শর্তাবলী কেবল প্রস্থান কোডগুলি বুঝতে পারে এবং স্ক্রিপ্টগুলি 0 বা 1 এর সাথে প্রস্থান করে।

উপরন্তু, একটি ম্যাচ এই কপি করে প্রিন্ট একটি খালি স্ট্রিং (সোর্স কোড) এবং একটি মেলেনি জন্য একটি খালি এক, যা সঙ্গে একযোগে truthy / falsy মান হিসাবে হতে পারে test/ [

প্রোগ্রামটি নিজস্ব ফাইলটি পড়ে, কিন্তু ওপির এই মন্তব্য অনুযায়ী এটি অনুমোদিত।


3
আন্ড ডেনিস জিতেছে। ¯ \ _ (ツ) _ / ¯
কনর ও'ব্রায়ান

এটি কাজ করে না। এটি তাদের ফাঁকা জায়গাগুলির সাথে নিদর্শনগুলিতে ভেঙে যায়।
শুক্রবার 12'16

ওফারসফফফফফফফফফফফফফফ করে যে ইশারা জন্য ধন্যবাদ। আমি আমার উত্তর সম্পাদনা করেছি।
ডেনিস

2
এখন এটি ফাঁকে ফাঁকে ফাঁকে একটি ফাইল লেখা থাকলে তা ভেঙে যায়। বা একটি ফাইল বলা হয় -v। বা ...
বেন মিলউড

@ বেনমিলউড আমি সাধারনত বলি যে এ জাতীয় ফাইলের নাম দিয়ে এটি সংরক্ষণ করবেন না , তবে জেডএসে স্যুইচ করা বাইট সংখ্যা বাড়ানো ছাড়াই বুলেট প্রুফ তৈরি করে।
ডেনিস

10

জাভাস্ক্রিপ্ট (ES6), 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]] & 

পেছনের স্থানটি নোট করুন। মানক এমএমএ কুইন মেকানিজম ব্যবহার করে এবং পরীক্ষাগুলি যদি এটি রেজেক্সের সাথে মেলে।


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 এর জেএস স্বাদ সমর্থন করে, আমি আশা করি এটি ঠিক আছে। এখানে চেষ্টা করুন!

 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
ডেনিস

@ ডেনিস আহ, এ কারণেই। আমি এইচটিএমএল আপডেট করতে ভুলে গেছি, আমি math.js যোগ করেছি। আমি বাড়ি পৌঁছালে আমি সংশোধন করব, যদি খুব বেশি দেরি না হয়। (প্রায় 4 ইশ ঘন্টার মধ্যে)
কনার ও'ব্রায়ান

1

𝔼𝕊𝕄𝕚𝕟, ১৪ টি চর / ২ 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

দ্রষ্টব্য: কপি ব্লকগুলি কুইন অপারেটর নয়। এগুলি পরিবর্তনশীল ঘোষণার আরও বহুমুখী বিকল্প হতে পারে meant


1
আমার মনে হয় আপনি 10 এ পরিবর্তন করে একটি বাইট সংরক্ষণ করতে পারবেন
লিটারোসিয়াসট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.