সমস্যাটি
আমার কিছু সংখ্যক নিয়মিত এক্সপ্রেশন রয়েছে যা আমার কিছু কোডে ব্যবহার করা দরকার তবে আমি এমন একটি প্রোগ্রামিং ভাষা ব্যবহার করছি যা রেজেক্সকে সমর্থন করে না! ভাগ্যক্রমে, আমি জানি যে পরীক্ষার স্ট্রিংয়ের সর্বাধিক দৈর্ঘ্য হবে এবং এটি কেবল মুদ্রণযোগ্য এএসসিআইআই দ্বারা গঠিত।
চ্যালেঞ্জ
আপনি ইনপুট করা আবশ্যক একটি Regex এবং একটি সংখ্যা n
, এবং আউটপুট মুদ্রণযোগ্য হওয়া ASCII (ASCII কোড 32 126 সমেত চাই, গঠিত যে স্ট্রিং থেকে
~
কম বা সমান দৈর্ঘ্যের, কোন ট্যাব বা নতুন লাইন) n
যে মিলগুলি Regex। আপনি নিজের কোডে বিল্ট-ইন নিয়মিত এক্সপ্রেশন বা রেজেক্স ম্যাচিং ফাংশনগুলি ব্যবহার করতে পারেন না । নিয়মিত প্রকাশগুলি নিম্নলিখিতগুলির মধ্যে সীমাবদ্ধ থাকবে:
- আক্ষরিক অক্ষর (এবং পলায়ন, যা একটি চরিত্রকে আক্ষরিক হতে বাধ্য করে, তেমনি
\.
একটি আক্ষরিক.
,\n
আক্ষরিকn
(ন্যায়বিচারের সমতুল্যn
), এবং\w
এর সমতুল্যw
। আপনাকে পালানোর ক্রমগুলি সমর্থন করার দরকার নেই।) .
- ওয়াইল্ডকার্ড (যে কোনও চরিত্র)- চরিত্রের ক্লাস,
[abc]
অর্থ "এ বা বি বা সি" এবং এর[d-f]
অর্থ ডি থেকে এফ (তাই, ডি বা ই বা এফ) এর কোনও কিছুই। অক্ষর শ্রেণীর একমাত্র অক্ষর যার বিশেষ অর্থ রয়েছে[
এবং]
(যা সর্বদা পালিয়ে যাবে, সুতরাং সেগুলি সম্পর্কে চিন্তা করবেন না),\
(পালানোর চরিত্রটি অবশ্যই)^
অক্ষর শ্রেণীর শুরুতে (যা একটি প্রত্যাখ্যান ), এবং-
(যা একটি ব্যাপ্তি) |
- ওআর অপারেটর, বিকল্প।foo|bar
এর অর্থ হয় হয়foo
বাbar
, এবং(ab|cd)e
মেলেabe
বা হয়cde
।*
- পূর্বের টোকেনটি পুনরাবৃত্তি শূন্য বা তার বেশি বার মিলিয়ে, লোভী (এটি যতবার সম্ভব পুনরাবৃত্তি করার চেষ্টা করে)+
- এক বা একাধিকবার পুনরাবৃত্তি, লোভী?
- শূন্য বা এক বার- জন্য প্রথম গ্রুপে টোকেন করা
|
, প্রথম বন্ধনীর সাথে গ্রুপিং*
।+
, বা?
ইনপুট Regex সবসময় কার্যকর থাকবে (অর্থাত, তোমার মত ইনপুট হ্যান্ডেল করতে হবে না ?abc
বা (foo
বা কোন অবৈধ ইনপুট)। আপনি যে কোনও ক্রমে স্ট্রিংগুলি আউটপুট দিতে পারেন, তবে প্রতিটি স্ট্রিং অবশ্যই একবার উপস্থিত হবে (কোনও ডুপ্লিকেট আউটপুট করবেন না)।
টেস্ট কেস
ইনপুট: .*
, 1
আউটপুট: (খালি স্ট্রিং), ,
!
, "
, ..., }
,~
ইনপুট: w\w+
, 3
আউটপুট: ww
,www
ইনপুট: [abx-z][^ -}][\\]
, 3
আউটপুট: a~\
, b~\
, x~\
, y~\
,z~\
ইনপুট: ab*a|c[de]*
, 3
আউটপুট: c
, cd
, ce
, aa
, cde
, ced
, cdd
, cee
,aba
ইনপুট: (foo)+(bar)?!?
, 6
আউটপুট: foo
, foo!
, foofoo
,foobar
ইনপুট: (a+|b*c)d
, 4
আউটপুট: ad
, cd
, aad
, bcd
, aaad
,bbcd
ইনপুট: p+cg
, 4
আউটপুট: pcg
,ppcg
ইনপুট: a{3}
, 4
আউটপুট:a{3}
বিজয়ী
এটি কোড-গল্ফ , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জিতবে!
|
খুব সামান্যই বোঝায়। এটি নেস্টেড গ্রুপগুলি বা পরিচালনা করার জন্য বলে মনে হচ্ছে না a|b|c
। স্ট্যান্ডার্ড ব্যাখ্যাগুলি কীভাবে দৃaten়ভাবে সংমিশ্রণ এবং বিকল্প বাঁধাইয়ের ক্ষেত্রে ব্যবহার করে ভুল হয়েছে? (এবং আপনার স্যান্ডবক্সটি ব্যবহার না করার কোনও অজুহাত নেই)