ধরুন আমাদের একটি সংখ্যা n আছে, আমাদের সেই প্রদত্ত সংখ্যার জন্য ধূসর কোডটি খুঁজে বের করতে হবে (অন্য কথায় nth ধূসর কোড)। যেমনটি আমরা জানি ধূসর কোড হল বাইনারি সংখ্যা ক্রম করার একটি উপায় যাতে প্রতিটি পরপর সংখ্যার মান ঠিক এক বিট দ্বারা পৃথক হয়। কিছু ধূসর কোড হল:[0, 1, 11, 10, 110, 111, এবং আরও]
সুতরাং, যদি ইনপুটটি n =12 এর মত হয়, তাহলে আউটপুট হবে 10 যেমন 12টি (1100) বাইনারিতে, অনুরূপ ধূসর কোড হবে (1010) যার দশমিক সমতুল্য 10।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- একটি ফাংশন সংজ্ঞায়িত করুন solve()। এটি n লাগবে
- যদি n 0 এর মত হয়, তাহলে
- রিটার্ন 0
- x :=1
- যখন x * 2 <=n, do
- x :=x * 2
- রিটার্ন x + সমাধান (2 * x - n - 1)
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ
class Solution: def solve(self, n): if n == 0: return 0 x = 1 while x * 2 <= n: x *= 2 return x + self.solve(2 * x - n - 1) ob = Solution() n = 12 print(ob.solve(n))
ইনপুট
12
আউটপুট
10