কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে সংখ্যাগুলোর বাইনারি রিপ্রেজেন্টেশনে ১-এর সংখ্যা গণনা


সমস্যা

আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি একক ইন্টিজার (num) নেবে। ফাংশনটি ০ থেকে num পর্যন্ত (উভয় অন্তর্ভুক্ত) প্রতিটি সংখ্যার জন্য একটি অ্যারে তৈরি করবে, যেখানে প্রতিটি এলিমেন্ট হবে সেই সংখ্যার বাইনারি রিপ্রেজেন্টেশনে ১-এর সংখ্যা।

উদাহরণস্বরূপ, ইনপুট যদি হয় –

const num = 4;

তবে আউটপুট হবে –

const output = [0, 1, 1, 2, 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), দ্বিতীয় ফলাফলে একটা বেশি ০ বিট থাকে।
• যদি n জোড় হয়, তবে n-এর শেষ বিট ০ হবে।
• যদি n বিজোড় হয়, তবে ফলাফল হবে numberOfBits(Math.floor(n / 2)) + 1।

আউটপুট

কনসোলে আউটপুট হবে –

[ 0, 1, 1, 2, 1 ]
  1. জাভাস্ক্রিপ্টে বাইনারি ট্রি

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

  3. জাভাস্ক্রিপ্টে অ্যারেতে মেডিয়ান গণনা

  4. বাইনারি রিপ্রেজেন্টেশনে সব ১ থাকা সংখ্যাগুলি গণনা C++-এ