কম্পিউটার

C++ এ গ্রে কোড


যেমন আমরা জানি যে ধূসর কোড হল একটি বাইনারি সংখ্যা পদ্ধতি যেখানে দুটি পরপর মান শুধুমাত্র এক বিটে আলাদা। ধরুন আমাদের একটি নন-নেতিবাচক পূর্ণসংখ্যা 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, ]

  1. C++ এ রেখার প্রতিফলন

  2. C++ এ ডায়াগোনাল ট্রাভার্স II

  3. C++ এ কিল প্রসেস

  4. C++ এ static_cast