যেমন আমরা জানি যে ধূসর কোড হল একটি বাইনারি সংখ্যা পদ্ধতি যেখানে দুটি পরপর মান শুধুমাত্র এক বিটে আলাদা। ধরুন আমাদের একটি নন-নেতিবাচক পূর্ণসংখ্যা n আছে যা কোডের মোট বিটের সংখ্যাকে প্রতিনিধিত্ব করে। আমাদের গ্রে কোডের সিকোয়েন্স প্রিন্ট করতে হবে। একটি ধূসর কোড সিকোয়েন্স অবশ্যই 0 দিয়ে শুরু হবে। সুতরাং ইনপুট 2 হলে ফলাফল হবে [0,1,3,2], এর কারণ হল 0-এর ধূসর 00, 1-এর ধূসর হল 01, 2-এর ধূসর 11, এবং 3-এর ধূসর হল 10৷
৷এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি অ্যারে উত্তর তৈরি করুন
- প্রতিটি সংখ্যার জন্য ধূসর কোড খুঁজুন এবং তাদের ans অ্যারেতে যোগ করুন।
- ধূসরে রূপান্তর করতে, আমরা নম্বরটি নেব এবং 1 বিট ডানে স্থানান্তর করার পরে XOR সম্পাদন করব।
উদাহরণ
আসুন আরও ভালোভাবে বোঝার জন্য নিচের বাস্তবায়ন দেখি −
#include <bits/stdc++.h> using namespace std; void print_vector(vector<int> v){ cout << "["; for(int i = 0; i<v.size(); i++){ cout << v[i] << ", "; } cout << "]"<<endl; } class Solution { public: vector<int> grayCode(int n) { vector <int> ans; for(int i =0; i<1<<n; i++){ ans.push_back(i^(i>>1)); } return ans; } }; main(){ Solution ob; print_vector(ob.grayCode(4)); }
ইনপুট
4
আউটপুট
[0, 1, 3, 2, 6, 7, 5, 4, 12, 13, 15, 14, 10, 11, 9, 8, ]