স্টোনকিউটার সম্পর্কে একটি পুরাতন গল্প আছে যিনি কখনই তার থেকে সন্তুষ্ট হননি। তিনি ইচ্ছা করেছিলেন তিনি সূর্য হয়ে উঠতে পারেন, এবং তিনিও ছিলেন। মেঘ দ্বারা অবরুদ্ধ, তিনি হতে চান - এবং হয়ে - মেঘ। যখন বাতাস বইল, তখন সে নিজেকে বাতাস হতে চেয়েছিল। পর্বত দ্বারা থামানো, তিনি একটি পর্বত হতে ইচ্ছুক, এবং এইভাবে এক হয়ে। তবে শীঘ্রই, তাকে একটি স্টোকনসটার দ্বারা কুপিয়ে হত্যা করা হয়েছিল, এবং স্টোকনোটার হওয়ার ইচ্ছা ছিল।
একইভাবে, আপনার কাজটি এমন একটি প্রোগ্রাম লেখা যা এটি যে ভাষাতে থাকে তার সাথে কখনই সন্তুষ্ট হয় না Your আপনার প্রোগ্রামটিকে আলাদা ভাষায় রূপান্তর করতে অবশ্যই রেজেক্স প্রতিস্থাপনের একটি সেট আউটপুট করতে হবে। ইত্যাদি।
বিধি
- আপনার পছন্দসই ভাষায় একটি প্রোগ্রাম লিখুন।
- প্রোগ্রামটি কমপক্ষে দুটি বিভাগের একটি সিরিজ আউটপুট করা উচিত। একটি অংশটি সেমিকোলন দ্বারা পৃথক পৃথক পাঠ্যের একটি গুচ্ছ। যাইহোক, যদি একটি সেমিকোলন কোনও রেইজেক্সের মধ্যে থাকে তবে এটি এখানে ভেঙে ফেলার ফলে অবৈধ বাক্য গঠন হবে, এটি পৃথক বিভাগগুলিকে পৃথক করে না। উদাহরণ দেখুন।
- প্রথম বিভাগটি হ'ল একটি রেজেক্স প্যাটার্ন এবং দ্বিতীয় বিভাগটি প্রতিস্থাপনের ধরণ pattern তৃতীয়টি হ'ল অন্য "ফাইন্ড" প্যাটার্ন এবং চতুর্থটি "প্রতিস্থাপন" প্যাটার্ন এবং আরও অনেক কিছু।
- প্রোগ্রামে রেজেক্স প্যাটার্ন প্রয়োগ করুন। প্রথম বিভাগে প্যাটার্নটি দ্বিতীয়টিতে একটি দিয়ে প্রতিস্থাপন করুন; চতুর্থের সাথে একটি তৃতীয় প্যাটার্ন প্রতিস্থাপন করুন, এবং আরও।
- ফলাফলটি একটি ভিন্ন ভাষায় একটি প্রোগ্রাম হওয়া উচিত, যা নিজেই, নিয়ম 2 থেকে 4 অনুসরণ করে।
- ব্যবহৃত ভাষা অবশ্যই একটি অনন্ত, পুনরাবৃত্তি চক্র গঠন করতে হবে।
- উদাহরণস্বরূপ, পাইথন -> পিএইচপি -> সি ++ -> পাইথন -> পিএইচপি -> সি ++ -> পাইথন -> ...
- আপনার স্কোরটি চক্রের সময়কাল। সংক্ষিপ্ততম প্রাথমিক কোড দৈর্ঘ্যের দ্বারা টাইগুলি ভেঙে যায়।
- উপরের উদাহরণে স্কোর তিনটি।
- চক্রের প্রতিটি পুনরাবৃত্তিতে কোনও ভাষা একাধিকবার ব্যবহৃত হতে পারে না।
- 5 এবং 7 বিধিগুলির জন্য, সামঞ্জস্যপূর্ণ ভাষা (সি এবং সি ++) এবং একই ভাষার বিভিন্ন সংস্করণ (পাইথন 2 এবং পাইথন 3) একই হিসাবে বিবেচিত হয়।
- প্রোগ্রামগুলি তাদের পুনরাবৃত্তি করার প্রয়োজন নেই।
- উপরের উদাহরণে প্রথম এবং চতুর্থ প্রোগ্রামগুলি ভিন্ন হতে পারে।
- রেগেক্সের যে কোনও সংস্করণ গ্রহণযোগ্য, তবে সমস্ত প্রোগ্রামের জন্য একই ব্যবহার করা উচিত।
- প্রতিটি প্রোগ্রামের জন্য মোট আউটপুট 100 টি অক্ষরের বেশি নাও হতে পারে।
- প্রতিটি আউটপুটে অবশ্যই প্রোগ্রামটি পরিবর্তনের জন্য নির্দেশাবলী থাকতে হবে। অর্থাৎ, চক্রের পর পর দুটি কোনও প্রোগ্রাম একই নাও হতে পারে।
উদাহরণ
পাইথন -> রুবি -> পাইথন -> ...
print "uts;Z;rint;uts;Z(?=;Z);rint"
আউটপুট:
uts;Z;rint;uts;Z(?=;Z);rint
বিভাগগুলি হল:
FIND ; REPLACE
uts ; Z
rint ; uts
Z(?=;Z ; rint (breaking the first segment in two would result in invalid syntax)
ক্রমানুসারে রেজেক্স রিপ্লেসমেন্ট প্রয়োগ করা আমাদের দেয়:
print "Z;Z;rint;Z;Z(?=;Z);rint" # replace each "uts" with "Z"
puts "Z;Z;uts;Z;Z(?=;Z);uts" # replace each "rint" with "uts"
puts "rint;Z;uts;rint;Z(?=;Z);uts" # replace each "Z" followed by ";Z" with "rint"
শেষ লাইনটি চালানো আমাদের এটিকে পাইথন কোডে ফিরিয়ে আনার নির্দেশনা দেয়।
\;
;)