পিসিআরই গন্ধ, 261 289 210 184 127 109 71 53 51 44 40 বাইট
হ্যা এটা সম্ভব!
<^<()(?R){2}>\z|\1\Q^<()(?R){2}>\z|\1\Q>
এখানে চেষ্টা করুন। (তবে /
Regex101-এ ডিলিমিটার হিসাবে দেখানো হয়েছে))
Regex101 পৃষ্ঠায় অপ্রয়োজনীয় সম্পাদনা (আপডেট) করা থেকে বিরত থাকুন। আপনার সম্পাদনার আসলে উন্নতি চেষ্টা বা এই Regex পরীক্ষা সঙ্গে যুক্ত নয়, তাহলে আপনি এটি কাঁটাচামচ বা থেকে নতুন তৈরী করতে পারে তাদের হোমপেজে ।
সংস্করণটি Regex101 (44 বাইট) -এ আরও সঠিকভাবে কাজ করে:
/^\/()(?R){2}\/\z|\1\Q^\/()(?R){2}\/\z|\1\Q/
এখানে চেষ্টা করুন।
এটি মূল সংস্করণের তুলনায় অনেক সহজ এবং আরও একটি traditionalতিহ্যবাহী কুইনের মতো কাজ করে। এটি স্ট্রিংটি ব্যবহার না করে সংজ্ঞায়িত করার চেষ্টা করে এবং এটি অন্য কোনও জায়গায় ব্যবহার করে। সুতরাং এটি ম্যাজিক প্যাটার্নটি সংজ্ঞায়িত করতে আরও অক্ষরের প্রয়োজন এমন অক্ষরের সংখ্যা হ্রাস করতে এবং আরও বার বার পুনরাবৃত্তি করার জন্য, রেজেক্সের এক প্রান্তের খুব কাছাকাছি স্থাপন করা যেতে পারে।
ব্যাখ্যা:
\Q^\/()(?R){2}\/\z|\1\Q
স্ট্রিং মেলে ^\/()(?R){2}\/\z|\1\Q
। এটি এমন এক ছদ্মবেশ ব্যবহার \Q...\E
করে যা বন্ধ করতে হবে না, এবং অনির্ধারিত ডিলিমিটররা এতে কাজ করে \Q
। এটি কিছু পূর্ববর্তী সংস্করণগুলি কেবল স্থানীয়ভাবে নয় বরং রেজেক্স 101 এ কাজ করে। তবে ভাগ্যক্রমে সর্বশেষতম সংস্করণটি কাজ করেছে এবং আমি এটি ব্যবহার করে আরও কিছু বাইট গল্ফ করেছি।
\1
\Q
দখল করা গোষ্ঠীটির সাথে ম্যাচ হওয়ার আগে ১। যেহেতু এই বিকল্পটিতে গ্রুপ 1 বিদ্যমান নেই, এটি কেবল পুনরাবৃত্ত কলগুলিতে মিলতে পারে। পুনরাবৃত্ত কলগুলিতে এটি খালি স্ট্রিংগুলির সাথে মেলে।
(?R){2}
পুরো রিজেক্সকে পুনরাবৃত্তভাবে দুবার কল করে, যা ^\/()(?R){2}\/\z|\1\Q
প্রতিটি সময়ের সাথে মেলে ।
()
গোষ্ঠী 1 তে একটি খালি স্ট্রিং ক্যাপচার করা ছাড়া আর কিছুই করে না, যা পুনরাবৃত্তির কলগুলিতে অন্যান্য বিকল্পকে সক্ষম করে।
^\/()(?R){2}\/\z
(?R){2}
শুরু থেকে শেষ পর্যন্ত ডিলিমিটারগুলির সাথে মিল রয়েছে। \/
সামনে recursive কল এছাড়াও নিশ্চিত এই অপশনটি নিজেই recursive কল মধ্যে মিলছে না, কারণ এটি স্ট্রিং শুরুতে হবে না করেন।
বন্ধ সঙ্গে 51 বাইট \Q...\E
:
/\QE\1|^\/(\\)Q(?R){2}z\/\E\1|^\/(\\)Q(?R){2}z\/\z/
এখানে চেষ্টা করুন।
আসল সংস্করণ, 188 বাইট
প্রায় 100 বাইট গল্ফ করার জন্য মার্টিন বাটনারকে ধন্যবাদ!
/^(?=.{173}\Q\2\)){2}.{11}$\E\/\z)((?=(.2.|))\2\/\2\^\2\(\2\?=\2\.\2\{173}\2\\Q\2\\2\2\\\2\)\2\)\2\{2}\2\.\2\{11}\2\$\2\\E\2\\\2\/\2\\z\2\)\2\(\2\(\2\?=\2\(\2\.2\2\.\2\|\2\)\2\)){2}.{11}$/
এখানে চেষ্টা করুন।
বা 210 বাইট ছাড়াই \Q...\E
:
/^(?=.{194}\\2\\.\)\{2}\.\{12}\$\/D$)((?=(.2.|))\2\/\2\^\2\(\2\?=\2\.\2\{194}\2\\\2\\2\2\\\2\\\2\.\2\\\2\)\2\\\2\{2}\2\\\2\.\2\\\2\{12}\2\\\2\$\2\\\2\/D\2\$\2\)\2\(\2\(\2\?=\2\(\2\.2\2\.\2\|\2\)\2\)){2}.{12}$/D
এখানে চেষ্টা করুন।
প্রসারিত সংস্করণ:
/^(?=.{173}\Q\2\)){2}.{11}$\E\/\z) # Match things near the end.
((?=(.2.|)) # Capture an empty string or \2\ into group 2.
\2\/\2\^\2\(\2\?=\2\.\2\{173}\2\\Q\2\\2\2\\\2\)\2\)\2\{2}\2\.
\2\{11}\2\$\2\\E\2\\\2\/\2\\z\2\) # 1st line escaped.
\2\(\2\(\2\?=\2\(\2\.2\2\.\2\|\2\)\2\) # 2nd line escaped.
){2}
.{11}$/x
মত এক্সটেনশানগুলি (?=
এবং \1
তথাকথিত "নিয়মিত" আর রেগুলার এক্সপ্রেশনের, যা quines সম্ভব করে তোলে করেছেন। ব্যাকরেফারেন্স নিয়মিত নয়, তবে লকহেড।
ব্যাখ্যা:
- আমি বিশেষ চরিত্রগুলি এড়ানোর
\2\
জায়গায় ব্যবহার করি \
। যদি \2
খালি স্ট্রিংয়ের সাথে মেলে, \2\x
(যেখানে x
একটি বিশেষ চরিত্রটি রয়েছে) x
নিজেই মেলে । যদি \2
ম্যাচ \2\
, \2\x
পলান এক সাথে মেলে। \2
গ্রুপ ১ এর দুটি ম্যাচ রেজেজেসে আলাদা হতে পারে। প্রথমবারে \2
খালি স্ট্রিংটি এবং দ্বিতীয়বারের সাথে মিলিয়ে নেওয়া উচিত \2\
।
\Q\2\)){2}.{11}$\E\/\z
(লাইন 1) শেষ থেকে 15 টি অক্ষরের সাথে মেলে। এবং .{11}$
(লাইন 7) শেষ থেকে 11 টি অক্ষরের সাথে মেলে (বা একটি ট্রেলিং নতুন লাইনের আগে)। সুতরাং দ্বিতীয় প্যাটার্নের ঠিক আগে প্যাটার্নটি অবশ্যই প্রথম প্যাটার্নে প্রথম 4 বা 3 অক্ষরের সাথে \2\.\2\|\2\)\2\)
মেলে , সুতরাং অবশ্যই মেলতে হবে ...\2\)
বা ...\2\
। শেষের অক্ষরটি হওয়া উচিত কারণ সেখানে কোনও অনুবর্তনযোগ্য নিউলাইন থাকতে পারে না )
। এবং মিলিত পাঠ্যটিতে )
সঠিকতমটির আগে অন্যটি থাকে না , সুতরাং অন্য সমস্ত অক্ষর অবশ্যই এর মধ্যে থাকা উচিত \2
। \2
হিসাবে সংজ্ঞায়িত করা হয় (.2.|)
, তাই এটি শুধুমাত্র হতে পারে \2\
।
- প্রথম সারির পুরো অভিব্যক্তিটি হ'ল 188 টি অক্ষরের সাথে মেলে কারণ সমস্ত কিছুের নির্দিষ্ট দৈর্ঘ্য থাকে। গ্রুপ 1 এর দুটি সময় 45 * 2 টি অক্ষর এবং 29 বারের সাথে মেলে
\2
। এবং গ্রুপ 1 এর পরে জিনিসগুলি 11 টি অক্ষরের সাথে মেলে। সুতরাং দু'বারের মোট দৈর্ঘ্য \2
অবশ্যই 3 টি অক্ষর হতে হবে। \2
দ্বিতীয় বারের জন্য জানা 3 টি অক্ষর দীর্ঘ, এটি প্রথমবারের জন্য খালি থাকতে হবে।
- দৃষ্টিকোণ ব্যতীত সবকিছুই
\2
এবং গ্রুপ 1 টিতে আক্ষরিক । দুটি সময় \2
পরিচিত, এবং প্রথম লাইন থেকে জানা শেষ কয়েকটি অক্ষর সহ, এই রেজেক্সটি হুবহু একটি স্ট্রিংয়ের সাথে মেলে।
- মার্টিন বাটনার লুক 2 হেড ব্যবহার করে গ্রুপ 2 ক্যাপচার এবং কুইন পার্ট দিয়ে ওভারল্যাপ করার ধারণাটি নিয়ে আসে। এটি গ্রুপ 1 এর দুটি সময়ের মধ্যে স্বাভাবিক উপায়ে পালিয়ে যাওয়া অক্ষরগুলিকে সরিয়ে দিয়েছে এবং আমার মূল সংস্করণে সেগুলি মেলে ধরতে প্যাটার্নটি এড়াতে সহায়তা করেছে এবং রেজেক্সকে অনেক সরল করে তুলেছে।
পুনরাবৃত্তি বা ব্যাকেরেফারেন্স ছাড়াই রেজেক্স, 85 বাইট
কেউ তর্ক করতে পারেন যে পুনরাবৃত্তি বা পশ্চাদগহনের সাথে প্রকাশগুলি সত্য "নিয়মিত" এক্সপ্রেশন নয়। তবে কেবলমাত্র চেহারাযুক্ত অভিব্যক্তিগুলি কেবলমাত্র নিয়মিত ভাষার সাথেই মিলতে পারে, যদিও traditionalতিহ্যবাহী নিয়মিত প্রকাশ দ্বারা প্রকাশ করা এগুলি আরও দীর্ঘতর হতে পারে।
/(?=.*(\QE\\){2}z\/\z)^\/\(\?\=\.\*\(\\Q.{76}\E\\){2}z\/\z)^\/\(\?\=\.\*\(\\Q.{76}\z/
এখানে চেষ্টা করুন।
\Q...\E
(গল্ফ করা) ছাড়াই 610 বাইট :
/^(?=.{610}$)(?=.{71}(\(\.\{8\}\)\?\\.[^(]*){57}\)\{2\}\.\{12\}\$\/D$)((.{8})?\/(.{8})?\^(.{8})?\((.{8})?\?=(.{8})?\.(.{8})?\{610(.{8})?\}(.{8})?\$(.{8})?\)(.{8})?\((.{8})?\?=(.{8})?\.(.{8})?\{71(.{8})?\}(.{8})?\((.{8})?\\(.{8})?\((.{8})?\\(.{8})?\.(.{8})?\\(.{8})?\{8(.{8})?\\(.{8})?\}(.{8})?\\(.{8})?\)(.{8})?\\(.{8})?\?(.{8})?\\(.{8})?\\(.{8})?\.(.{8})?\[(.{8})?\^(.{8})?\((.{8})?\](.{8})?\*(.{8})?\)(.{8})?\{57(.{8})?\}(.{8})?\\(.{8})?\)(.{8})?\\(.{8})?\{2(.{8})?\\(.{8})?\}(.{8})?\\(.{8})?\.(.{8})?\\(.{8})?\{12(.{8})?\\(.{8})?\}(.{8})?\\(.{8})?\$(.{8})?\\(.{8})?\/D(.{8})?\$(.{8})?\)(.{8})?\(){2}.{12}$/D
এখানে চেষ্টা করুন।
ধারণাটিও একই রকম।
/^(?=.{610}$)(?=.{71}(\(\.\{8\}\)\?\\.[^(]*){57}\)\{2\}\.\{12\}\$\/D$)
((.{8})?\/(.{8})?\^(.{8})?\((.{8})?\?=(.{8})?\.(.{8})?\{610(.{8})?\}(.{8})?\$(.{8})?\)
(.{8})?\((.{8})?\?=(.{8})?\.(.{8})?\{71(.{8})?\}
(.{8})?\((.{8})?\\(.{8})?\((.{8})?\\(.{8})?\.(.{8})?\\(.{8})?\{8(.{8})?\\(.{8})?\}
(.{8})?\\(.{8})?\)(.{8})?\\(.{8})?\?(.{8})?\\(.{8})?\\
(.{8})?\.(.{8})?\[(.{8})?\^(.{8})?\((.{8})?\](.{8})?\*(.{8})?\)(.{8})?\{57(.{8})?\}
(.{8})?\\(.{8})?\)(.{8})?\\(.{8})?\{2(.{8})?\\(.{8})?\}
(.{8})?\\(.{8})?\.(.{8})?\\(.{8})?\{12(.{8})?\\(.{8})?\}
(.{8})?\\(.{8})?\$(.{8})?\\(.{8})?\/D(.{8})?\$(.{8})?\)(.{8})?\(){2}.{12}$/D
বেসিক নিয়মিত প্রকাশ
যদি সন্ধানের অনুমতি না দেওয়া হয় তবে আমি এখন সবচেয়ে ভাল করতে পারি:
/\\(\\\(\\\\){2}/
যা মেলে
\\(\\\(\\
যদি {m,n}
কোয়ান্টেফায়ারকে অনুমতি না দেওয়া হয় তবে এটি অসম্ভব কারণ যা কেবলমাত্র একটি স্ট্রিংয়ের সাথে মেলে না এমন কোনও কিছুই নিজের থেকে দীর্ঘতর স্ট্রিংয়ের সাথে মেলে না। অবশ্যই কেউ এখনও এমন কিছু আবিষ্কার করতে পারে \q
যা কেবল মেলে /\q/
, এবং এখনও সেই নিয়মিত সাথে অভিব্যক্তি বলে। তবে দৃশ্যত এর মতো কিছুই বড় বাস্তবায়ন দ্বারা সমর্থিত নয়।