কম্পিউটার

জাভাস্ক্রিপ্টে সংখ্যার বাইনারি উপস্থাপনায় 1s গণনা করা হচ্ছে


সমস্যা

আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি একক পূর্ণসংখ্যা, সংখ্যা, প্রথম এবং একমাত্র যুক্তি হিসাবে নেয়। আমাদের ফাংশনটি 0 এবং সংখ্যার মধ্যে প্রতিটি সংখ্যার জন্য একটি অ্যারে প্রস্তুত করা উচিত (উভয়টি সহ), প্রতিটি সংখ্যার জন্য, সংশ্লিষ্ট উপাদানটি সেই সংখ্যার বাইনারি উপস্থাপনায় থাকা 1s সংখ্যা হওয়া উচিত।

উদাহরণস্বরূপ, যদি ফাংশনে ইনপুট হয় −

const num = 4;

তারপর আউটপুট −

হওয়া উচিত
const output = [0, 1, 1, 2, 1];

আউটপুট ব্যাখ্যা:

কারণ 0 এর বাইনারি আকারে 0 1s রয়েছে 1 এর মধ্যে 1 আছে, এবং তাই।

উদাহরণ

এর জন্য কোড হবে −

const num = 4;
const mapBinary = (num = 0) => {
   if (num === 0){
      return [0];
   };
   const res = [0];
   for (let i = 1; i <= num; i++) {
      const n = i % 2 === 0 ? res[i/2] : res[Math.floor(i/2)] + 1;
      res.push(n);
   };
   return res;
};

কোড ব্যাখ্যা:

বিটগুলি গণনা করার সময়, কিছু জিনিস আমরা মনে রাখতে পারি যাতে বিষয়গুলিকে সহজতর করা যায়৷

  • numberOfBits(n) ===numberOfBits(2*n), দ্বিতীয় ফলাফল প্রথম ফলাফলের তুলনায় আরও 0 বিট পায়।

  • যদি n একটি জোড় সংখ্যা হয়, n এর শেষ বিট হবে 0।

  • যদি n একটি বিজোড় সংখ্যা হয়, তাহলে ফলাফল গণনা করা শেষ বিটফ (n-1)/2 কে 1 দিয়ে প্রতিস্থাপন হিসাবে বিবেচনা করা যেতে পারে, তাই আমরা সংখ্যার সমীকরণ নম্বরOfBits(n) ===numberOfBits(Math.floor(n / 2)) পাই + 1।

আউটপুট

এবং কনসোলে আউটপুট হবে −

[ 0, 1, 1, 2, 1 ]

  1. জাভাস্ক্রিপ্টে বাইনারি ট্রি

  2. জাভাস্ক্রিপ্ট নম্বর উদাহরণ

  3. জাভাস্ক্রিপ্টে একটি অ্যারের মধ্যমা গণনা করা হচ্ছে

  4. C++ এ বাইনারি উপস্থাপনায় কাউন্ট সংখ্যার সবগুলো 1s একসাথে থাকে