ধরুন আমাদের চারটি সম্ভাব্য অক্ষর "1", "2", "3" এবং "?" সহ একটি স্ট্রিং s আছে। আমরা "?" এর জায়গায় "1", "2" এবং "3" এর যেকোনো একটি বসাতে পারি। আমাদের সম্ভাব্য ক্ষুদ্রতম সংখ্যাটি খুঁজে বের করতে হবে যা আমরা এমন করতে পারি যাতে দুটি সন্নিহিত সংখ্যা একই না হয়।
সুতরাং, ইনপুট যদি s ="2??3?" এর মত হয়, তাহলে আউটপুট হবে 21231
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- i :=0
- s :=s থেকে উপাদানগুলির একটি তালিকা
- যদি s <2 এর আকার হয়, তাহলে
- যদি s[i] "?" এর মত হয়, তাহলে
- রিটার্ন "1"
- যদি s[i] "?" এর মত হয়, তাহলে
- যখন i
- যদি s[i] "?" এর মত হয়, তাহলে
- যদি আমি 0 এর মত হয়, তাহলে
- s[i] :="1" যখন s[i + 1] হয় "1" না হলে "2"
- অন্যথায় যখন i> 0 এবং i <=s - 2 এর আকার, তারপর
- যদি s[i - 1] "1" এর মত হয়, তাহলে
- যদি s[i + 1] "2" এর মত হয়, তাহলে
- s[i] :="3"
- অন্যথায়,
- s[i] :="2"
- যদি s[i + 1] "2" এর মত হয়, তাহলে
- অন্যথায় যখন s[i - 1] "2" এর মত হয়, তখন
- যদি s[i + 1] "2" এর মত হয়, তাহলে
- s[i] :="3"
- অন্যথায়,
- s[i] :="1"
- যদি s[i + 1] "2" এর মত হয়, তাহলে
- অন্যথায় যখন s[i - 1] "3" এর মত হয়, তখন
- যদি s[i + 1] "2" এর মত হয়, তাহলে
- s[i] :="2"
- অন্যথায়,
- s[i] :="1"
- যদি s[i + 1] "2" এর মত হয়, তাহলে
- যদি s[i - 1] "1" এর মত হয়, তাহলে
- অন্যথায়,
- s[i] :="1" যখন s[i - 1] হয় "1" না হলে "2"
- i :=i + 1
- যদি s[i] "?" এর মত হয়, তাহলে
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(s): i = 0 s = list(s) if len(s) < 2: if s[i] == "?": return "1" while i < len(s): if s[i] == "?": if i == 0: s[i] = "1" if s[i + 1] != "1" else "2" elif i > 0 and i <= len(s) - 2: if s[i - 1] == "1": if s[i + 1] == "2": s[i] = "3" else: s[i] = "2" elif s[i - 1] == "2": if s[i + 1] == "1": s[i] = "3" else: s[i] = "1" elif s[i - 1] == "3": if s[i + 1] == "1": s[i] = "2" else: s[i] = "1" else: s[i] = "1" if s[i - 1] != "1" else "2" i += 1 return "".join(s) s = "2??3?" print(solve(s))
ইনপুট
"2??3?"
আউটপুট
21231