ধরুন আমাদের একটি ঘরে n বাল্ব আছে, এই বাল্বগুলিকে 0 থেকে n-1 পর্যন্ত সংখ্যা করা হয়েছে। আমরা তাদের বাম থেকে ডানে সারিবদ্ধভাবে সাজাতে হবে। প্রাথমিকভাবে, সমস্ত বাল্ব বন্ধ (0-স্টেট)। আমাদের প্রদত্ত টার্গেট অ্যারে 't' দ্বারা উপস্থাপিত কনফিগারেশন পেতে হবে যেখানে ith বাল্ব চালু থাকলে t[i] '1' হয় এবং বন্ধ থাকলে '0' হয়। আমাদের কাছে বাল্বের অবস্থা উল্টানোর জন্য একটি সুইচও রয়েছে। এবং ফ্লিপিং অপারেশনকে নিম্নরূপ সংজ্ঞায়িত করা হয়েছে -
-
যেকোনো বাল্ব সূচক নির্বাচন করুন i.
-
প্রতিটি বাল্ব সূচী i থেকে সূচক n - 1 এ উল্টান।
লক্ষ্য গঠনের জন্য আমাদের ন্যূনতম সংখ্যক ফ্লিপগুলি খুঁজে বের করতে হবে৷
সুতরাং, যদি ইনপুটটি t ="0101" এর মত হয়, তাহলে আউটপুট হবে 3, যদি আমরা দ্বিতীয় বাল্ব থেকে শুরু করি, তাহলে পরবর্তী কনফিগারেশন হবে "0111", তারপর তৃতীয় থেকে, এটি হবে "0100", তারপর শেষ পর্যন্ত ফ্লিপ করুন। এটি "0101"
তৈরি করতে বাল্বএটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
গণনা :=0
-
x :='0'
-
প্রতিটি i in t, do
এর জন্য-
যদি আমি x এর মতো না হয়, তাহলে
-
গণনা :=গণনা + 1
-
x :=i
-
-
-
ফেরত গণনা
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
def solve(t): count = 0 x = '0' for i in t: if i != x: count += 1 x = i return count t = "0101" print(solve(t))
ইনপুট
"0101"
আউটপুট
3