ভূমিকা
আমি এসবিইউর (শর্ট অথচ অনন্য) চ্যালেঞ্জের সত্যিকারের বড় অনুরাগী যে সমস্ত সময় পিপিসিজিতে ফসল কাটায়। সিইউএসআরএস হ'ল রিফেক্টর স্ট্রিংয়ের জন্য ডিজাইন করা একটি সিস্টেম, একটি সিইউএসআরএস ফাংশন 2 প্যারামিটার নেয় এবং 1 স্ট্রিং আউটপুট দেয়।
চ্যালেঞ্জ
নিম্নলিখিতটি করার জন্য একটি প্রোগ্রাম, ফাংশন, ল্যাম্বদা বা গ্রহণযোগ্য বিকল্প উত্পাদন করুন:
প্রদত্ত String inputএবং String refactor(উদাহরণ হিসাবে), রিফ্যাক্টর নীচে inputব্যবহার refactorকরে:
refactorস্ট্রিং বিন্যাস হবে ((\+|\-)\w* *)+(Regex), উদাহরণস্বরূপ:
+Code -Golf -lf +al
প্রতিটি বিভাগটি সম্পাদন করার জন্য একটি রিফ্যাক্টরিং অ্যাকশন input। প্রতিটি প্রোগ্রামের একটি পয়েন্টারও থাকে।
+ স্ট্রিংয়ের পয়েন্টারগুলি বর্তমান অবস্থানে এটি প্রত্যয় (যোগ ব্যতীত) প্রবেশ করিয়ে দেবে এবং তারপরে পয়েন্টারটি 0 এ পুনরায় সেট করবে।
প্রতিটি অপারেশন স্ট্রিংয়ের জন্য প্রয়োগ করা inputউচিত এবং ফলাফলটি ফিরে আসতে হবে।
উদাহরণ:
input:
Golf +Code //pointer location: 0
output:
CodeGolf //pointer location: 0
-স্ট্রিংয়ের মাধ্যমে পয়েন্টারটি প্রত্যয় না পাওয়া পর্যন্ত বৃদ্ধি করবে। প্রত্যয়টি স্ট্রিং থেকে সরানো হবে এবং পয়েন্টারটি মুছে ফেলা পাঠ্যের বাম দিকে ছেড়ে দেওয়া হবে। যদি প্রত্যয় না পাওয়া যায় তবে পয়েন্টারটি কেবল স্ট্রিংয়ের শেষের দিকে অগ্রসর হবে এবং সেখানেই ছেড়ে দেওয়া হবে।
input:
Golf -lf //pointer location 0
output:
Go //pointer location 2
উদাহরণ
input:
"Simple" "-impl +nip -e +er"
output:
"Sniper"
input:
"Function" "-F +Conj"
output:
"Conjunction"
input:
"Goal" "+Code -al +lf"
output:
"CodeGolf"
input:
"Chocolate" "Chocolate"
output:
"Chocolate" //Nothing happens...
input:
"Hello" "-lo+p +Please" //Spaces are irrelevant
output:
"PleaseHelp"
input:
"Mississippi" "-s-s-i-ppi+ng" //Operations can be in any order
output:
"Missing"
input:
"abcb" "-c -b +d"
output:
"abd"
input:
"1+1=2" "-1+22-=2+=23"
outut:
"22+1=23"
উদাহরণ কোড
উদাহরণ জাভা, এটি মোটেই গল্ফ হয় না।
public static String refactor(String input, String swap) {
int pointer = 0;
String[] commands = swap.replace(" ", "").split("(?=[-+])");
for (String s : commands) {
if (s.startsWith("+")) {
input = input.substring(0, pointer) + s.substring(1) + input.substring(pointer, input.length());
pointer = 0;
} else {
if (s.startsWith("-")) {
String remove = s.substring(1);
for (int i = pointer; i < input.length(); i++) {
if (input.substring(i, i + remove.length() > input.length() ? input.length() : i + remove.length()).equals(remove)) {
pointer = i;
input = input.substring(0, i) + input.substring(i + remove.length(), input.length());
break;
}
}
}
}
}
return input;
}
বিধি
- স্ট্যান্ডার্ড লুফোলস প্রয়োগ করুন
- সংক্ষিপ্ততম কোড, বাইটে, জিতল
aaa -a?
|aaপাইপ পয়েন্টার হচ্ছে।
-প্রত্যয়টি না পাওয়া গেলে কী ঘটে ?