এই টাস্কে আপনাকে এমন একটি প্রোগ্রাম লিখতে হবে যা নিয়মিত এক্সপ্রেশন পড়ে এবং এমন একটি প্রোগ্রাম উত্পন্ন করে যা কোনও ইনপুট স্ট্রিং সেই নিয়মিত এক্সপ্রেশন দ্বারা গৃহীত হয় কিনা তা আউটপুট করে। আউটপুটটি অবশ্যই আপনার জমা দেওয়ার মতো ভাষায় লিখিত একটি প্রোগ্রাম হতে হবে।
ইনপুট
ইনপুট একটি রেগুলার এক্সপ্রেশন হয় দ নিম্নলিখিত ABNF (প্রাথমিক উৎপাদন নিয়ম মিলে REGEX
):
REGEX = *( STAR / GROUP / LITERAL / ALTERNATIVE )
STAR = REGEX '*'
GROUP = '(' REGEX ')'
LITERAL = ALPHA / DIGIT
ALTERNATIVE = REGEX '|' REGEX
যদি ইনপুটটি এই ব্যাকরণের সাথে মেলে না, তবে আপনার প্রোগ্রামের আচরণটি সংজ্ঞায়িত।
ব্যাখ্যা
নিয়মিত অভিব্যক্তি হিসাবে ইনপুটটির ব্যাখ্যা করুন, যেখানে *
ক্লিন-স্টার (যার অর্থ বাম আর্গুমেন্ট শূন্য বা আরও অনেকবার পুনরাবৃত্তি করা ), |
এটি বিকল্প (
এবং )
গ্রুপ এবং কোনও অপারেটর একেবারে কন্টেনটেটেড নয়। গোষ্ঠীকরণ তারার চেয়ে অগ্রাধিকার গ্রহণ করে, তারকা সংক্ষিপ্তকরণের চেয়ে অগ্রাধিকার গ্রহণ করে, বিকল্পের চেয়ে সংক্ষিপ্তকরণকে প্রাধান্য দেয়।
যদি রেজেক্স পুরো স্ট্রিংয়ের সাথে মেলে তবে একটি স্ট্রিং গ্রহণযোগ্য হবে ।
আউটপুট
প্রোগ্রামের আউটপুট একটি স্ট্রিং সার্চ আপনার জমা হিসাবে একই ভাষায় লেখা অন্য প্রোগ্রাম গুলি রানটাইম এ একটি বাস্তবায়ন সংজ্ঞায়িত ভাবে, আউটপুট কিনা দ গ্রহণ গুলি এবং তারপর বন্ধ। আউটপুটটি ব্যবহারকারী-সংজ্ঞায়িত উপায়ে করা যেতে পারে যদিও স্বীকৃত এবং প্রত্যাখ্যাত প্রোগ্রামগুলির জন্য মাত্র দুটি স্বতন্ত্র আউটপুট থাকতে হবে।
আপনি ধরে নিতে পারেন যে আপনার আউটপুট প্রোগ্রামের ইনপুটটি কখনই 2 16 -1 বাইটের বেশি হয় না ।
বিধিনিষেধ
আপনার জমা বা আপনার জমা দ্বারা উত্পন্ন কোনও প্রোগ্রামই অন্তর্নির্মিত কার্যকারিতা বা লাইব্রেরি ব্যবহার করতে পারে না
- ম্যাচ রেজেক্সেস
- নিয়মিত এক্সপ্রেশন রূপান্তর
- নিয়মিত অভিব্যক্তি সংকলন
- ব্যাকরণ থেকে পার্সার তৈরি করুন
- সমস্যাটি এমনভাবে সহজ করুন যাতে আপনার জমাটি তুচ্ছ হয়ে যায়
স্কোরিং
আপনার জমা দেওয়ার স্কোর এটির অক্ষরের সংখ্যা। সর্বনিম্ন স্কোর সহ জমাটি জয়লাভ করে।
Testcases
সমস্ত টেস্টকেসগুলিতে একটি নিয়মিত প্রকাশ, স্বীকৃত স্ট্রিংগুলির একটি সেট, প্রত্যাখ্যাত স্ট্রিংগুলির একটি সেট এবং সি 99 এর একটি উদাহরণ প্রোগ্রাম রয়েছে যা একটি (হাইপোথেটিক্যাল) সি 99 জমা দেওয়ার বৈধ আউটপুট।
(খালি নিয়মিত প্রকাশ)
স্বীকৃত স্ট্রিং
- (খালি ইনপুট)
প্রত্যাখাত স্ট্রিং
- foo বিন্যাস
- বার
- বায
- quux
উদাহরণ প্রোগ্রাম
#include <stdio.h>
int main() {
char input[65536];
gets(input);
return input[0] != 0;
}
(b|)(ab)*(a|)
( a
এবং b
বিকল্প)
স্বীকৃত স্ট্রিং
a
ba
abababababa
abab
প্রত্যাখাত স্ট্রিং
afba
foo
babba
উদাহরণ প্রোগ্রাম
#include <stdio.h>
int main() {
char input[65536];
int state = 0;
for (;;) switch (state) {
case 0: switch (getchar()) {
case 'a': state = 1; break;
case 'b': state = 2; break;
case EOF: return 0;
default: return 1;
} break;
case 1: switch (getchar()) {
case 'b': state = 2; break;
case EOF: return 0;
default: return 1;
} break;
case 2: switch (getchar()) {
case 'a': state = 1; break;
case EOF: return 0;
default: return 1;
} break;
}
(0|1(0|1)*)(|A(0|1)*1)
(বাইনারি ভাসমান পয়েন্ট সংখ্যা)
স্বীকৃত স্ট্রিং
- 10110100
- 0
- 1A00001
প্রত্যাখাত স্ট্রিং
- ২011
- 10A
- 1A00
- 100A010
return (regex.match(stdin) is not null)
অনুমতি নেই।