পার্ল (111 110 122 টি অক্ষর)
use Regexp::Assemble;@ARGV=shift;my$r=new Regexp::Assemble;chomp,add$r "^\Q$_\E\$"while<>;$_=as_string$r;s/\(\?:/(/g;print
এটি Regexp::Assemble
নিয়মিত এক্সপ্রেশনকে অনুকূলিত করতে সিএনএএন মডিউল ব্যবহার করে। কারণ পার্ল নিয়মিত এক্সপ্রেশনগুলির জন্য ভাল ভাষা কী।
এছাড়াও, পাঠযোগ্য সংস্করণ, কেবল মজাদার জন্য (এর সাহায্যে তৈরি -MO=Deparse
)।
use Regexp::Assemble;
my $r = Regexp::Assemble->new;
while (<>) {
chomp($_);
$r->add("^\Q$_\E\$");
}
$_ = $r->as_string;
# Replace wasteful (?:, even if it's technically correct.
s/\(\?:/(/g;
print $_;
নমুনা আউটপুট (আমি পরে CTRL-D করেছি item4
) did
$ perl assemble.pl
item1
atem2
item3
item4
^(item[134]|atem2)$
এছাড়াও, একটি বোনাস হিসাবে, আমি প্রশ্নের প্রতিটি শব্দের জন্য রেজেক্স লিখছি।
^(a((ttemp)?t|llowed\.|rbitrary)?|\/\^item1\|atem2\|item3\|item4\$\/|s(ho(rt,|uld)|imilar)|p((air|lay)s|rogram)|(Writ|mak|Th)e|l(ists\.|east)|o([fr]|utputs)|t(h(at|e)|o)|(jus|no)t|regex|golf|with|is)$
এছাড়াও, রাষ্ট্রপতিদের তালিকা (262 বাইট)।
^(((J(effer|ack|ohn)s|W(ashingt|ils)|Nix)o|Van Bure|Lincol)n|C(l(eveland|inton)|oolidge|arter)|H(a(r(rison|ding)|yes)|oover)|M(cKinley|adison|onroe)|T(a(ylor|ft)|ruman)|R(oosevelt|eagan)|G(arfield|rant)|Bu(chanan|sh)|P(ierce|olk)|Eisenhower|Kennedy|Adams|Obama)$
/^item1|atem2|item3|item4$/
সম্ভবত অনিচ্ছাকৃত অগ্রাধিকার রয়েছে (স্ট্রিংটি দিয়ে শুরু হওয়াitem1
, ধারণ করাatem2
, ধারণ করাitem3
বা শেষ হওয়া উচিতitem4
)।