আমি একটি নতুন ধরণের রেজেক্স গল্ফ চ্যালেঞ্জ চেষ্টা করতে চাই, যা আপনাকে রেজেক্সের প্রতিস্থাপন ছাড়া কিছুই না করে অযৌক্তিক কম্পিউটিং সংক্রান্ত কাজগুলি সমাধান করতে বলে। এটি আরও সম্ভব এবং কম কাজ শুরু করার জন্য, আপনাকে একের পর এক বেশ কয়েকটি বিকল্প প্রয়োগ করার অনুমতি দেওয়া হবে।
চ্যালেঞ্জ
আমরা সহজ শুরু করব: দুটি ধনাত্মক পূর্ণসংখ্যাযুক্ত একটি স্ট্রিং দেওয়া হ'ল দশমিক সংখ্যা হিসাবে একটি দ্বারা পৃথকীকৃত দশমিক সংখ্যা হিসাবে ,
তার যোগফল যুক্ত স্ট্রিং তৈরি করে। সুতরাং, খুব সহজ
47,987
মধ্যে পরিণত করা উচিত
1034
আপনার উত্তরটি ইচ্ছামত ইতিবাচক পূর্ণসংখ্যার জন্য কাজ করা উচিত।
ফর্ম্যাট
প্রতিটি উত্তর প্রতিস্থাপনের পদক্ষেপগুলির ক্রম হওয়া উচিত , প্রতিটি ধাপে একটি রেইজেক্স এবং প্রতিস্থাপনের স্ট্রিং থাকে। Allyচ্ছিকভাবে, ক্রমের এই প্রতিটি পদক্ষেপের জন্য, স্ট্রিং পরিবর্তন হওয়া বন্ধ না হওয়া পর্যন্ত আপনি বিকল্পটি পুনরাবৃত্তি করতে পছন্দ করতে পারেন। এখানে একটি উদাহরণ জমা দেওয়া (যা উপরের সমস্যার সমাধান করে না ):
Regex Modifiers Replacement Repeat?
\b(\d) g |$1 No
|\d <none> 1| Yes
\D g <empty> No
ইনপুট দেওয়া হয়েছে 123,456
, এই জমাটি ইনপুটটি নিম্নরূপে প্রক্রিয়া করবে: প্রথম প্রতিস্থাপন একবার প্রয়োগ করা হয় এবং ফলন হয়:
|123,|456
স্ট্রিং পরিবর্তন বন্ধ না হওয়া পর্যন্ত এখন দ্বিতীয় বিকল্পটি একটি লুপে প্রয়োগ করা হবে:
1|23,|456
11|3,|456
111|,|456
111|,1|56
111|,11|6
111|,111|
এবং সর্বশেষে, তৃতীয় প্রতিস্থাপন একবার প্রয়োগ করা হয়:
111111
নোট করুন লুপগুলির জন্য সমাপ্তির মানদণ্ডটি হ'ল স্ট্রিং পরিবর্তন হয় কিনা, রেজেক্স কোনও মিল খুঁজে পেয়েছিল কিনা। (এটি হ'ল এটি যদি আপনি কোনও ম্যাচ খুঁজে পান তবে এটি সমাপ্ত হতে পারে তবে প্রতিস্থাপনটি ম্যাচের অনুরূপ।)
স্কোরিং
আপনার প্রাথমিক স্কোরটি আপনার জমা দেওয়ার বিকল্প পদক্ষেপের সংখ্যা হবে। প্রতিটি পুনরাবৃত্তি প্রতিস্থাপন 10 টি পদক্ষেপের জন্য গণনা করবে । সুতরাং উপরের উদাহরণ স্কোর হবে 1 + 10 + 1 = 12
।
টাইয়ের (খুব বেশি সম্ভাবনা নেই) ক্ষেত্রে, দ্বিতীয় স্কোর হ'ল সমস্ত পদক্ষেপের আকারের যোগফল। প্রতিটি পদক্ষেপের জন্য রেজেক্স ( সীমানা ছাড়াই ), সংশোধক এবং বিকল্প স্ট্রিং যুক্ত করুন। উপরের উদাহরণের জন্য এটি হবে (6 + 1 + 3) + (3 + 0 + 2) + (2 + 1 + 0) = 18
।
বিবিধ বিধি
আপনি কোনও রেইগেক্স ফ্লেভার ব্যবহার করতে পারেন (যা আপনার নির্দেশ করা উচিত) তবে সমস্ত পদক্ষেপে অবশ্যই একই স্বাদ ব্যবহার করা উচিত। তদ্ব্যতীত, আপনাকে অবশ্যই স্বাদের হোস্ট ভাষার কোনও বৈশিষ্ট্য ব্যবহার করতে হবে না , যেমন প্রতিস্থাপন কলব্যাকস বা পার্লের e
সংশোধক, যা পার্ল কোডকে মূল্যায়ন করে। সমস্ত ম্যানিপুলেশন অবশ্যই একচেটিয়াভাবে regex প্রতিস্থাপনের মাধ্যমে ঘটতে হবে।
মনে রাখবেন যে এটি আপনার স্বাদ এবং সংশোধনকারীগুলির উপর নির্ভর করে যে প্রতিটি একক প্রতিস্থাপন সমস্ত ঘটনাকে প্রতিস্থাপন করে বা কেবল একটি একক। উদাহরণস্বরূপ আপনি যদি ECMAScript স্বাদটি চয়ন করেন তবে একক পদক্ষেপ ডিফল্টরূপে কেবলমাত্র একটি ঘটনাকে প্রতিস্থাপন করবে, যদি না আপনি g
সংশোধক ব্যবহার করেন । অন্যদিকে, আপনি যদি নেট নেট ব্যবহার করছেন তবে প্রতিটি পদক্ষেপ সর্বদা সমস্ত উপস্থিতি প্রতিস্থাপন করবে।
যে ভাষাগুলির একক এবং বৈশ্বিক প্রতিস্থাপনের জন্য পৃথক প্রতিস্থাপনের পদ্ধতি রয়েছে (উদাহরণস্বরূপ রুবির sub
বনাম gsub
), ধরে নিন যে একক প্রতিস্থাপনটি ডিফল্ট এবং কোনও g
সংশোধক হিসাবে বিশ্বব্যাপী প্রতিস্থাপনের আচরণ করে ।
পরীক্ষামূলক
যদি আপনার নির্বাচিত স্বাদটি হয় নেট বা ইসমাএসক্রিপ্ট হয়, আপনি আপনার জমাটি পরীক্ষা করতে রেটিনা ব্যবহার করতে পারেন (আমাকে বলা হচ্ছে, এটি মনোতেও কাজ করে)। অন্যান্য স্বাদের জন্য, আপনাকে সম্ভবত হোস্ট ভাষায় একটি ছোট প্রোগ্রাম লিখতে হবে যা বিকল্পগুলি যথাযথভাবে প্রয়োগ করে। যদি আপনি তা করেন তবে দয়া করে আপনার উত্তরে এই পরীক্ষা প্রোগ্রামটি অন্তর্ভুক্ত করুন।