কম্পিউটার

জাভাস্ক্রিপ্টে সংখ্যা 1 এ নামিয়ে আনুন


সমস্যা

আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যেটি সংখ্যা, সংখ্যাকে একমাত্র যুক্তি হিসাবে গ্রহণ করে৷

  • আমাদের ফাংশন num-এ শুধুমাত্র এই দুটি অপারেশন করতে পারে:num জোড় হলে, আমরা num/2 দিয়ে num প্রতিস্থাপন করতে পারি

  • যদি সংখ্যাটি বিজোড় হয়, তাহলে আমরা num + 1 বা num - 1 দিয়ে num প্রতিস্থাপন করতে পারি।

শুধুমাত্র এই দুটি ক্রিয়াকলাপের সংমিশ্রণ ব্যবহার করে আমাদের ফাংশনটি গণনা করতে হবে যে সংখ্যাটি 1 এ নামিয়ে আনতে কতটি ন্যূনতম অপারেশন প্রয়োজন৷

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

const num = 7;

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

হওয়া উচিত
const output = 4;

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

কারণ ক্ষুদ্রতম সম্ভাব্য অপারেশন হল −

7 -> 8 -> 4 -> 2 -> 1
or
7 -> 6 -> 3 -> 2 -> 1

উদাহরণ

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

const num = 7;
const downToOne = (num = 1) => {
   let min = Number.POSITIVE_INFINITY;
   let stack = [{ num: num, step: 0 }];
   let set = new Set();
   let next;
   let item;
   while (stack.length) {
      item = stack.shift();
      if (item.num === 1) {
         if (min > item.step) {
            min = item.step;
         }
         continue;
      }
      if (set.has(item.num) || item.step >= min) {
         continue;
      }
      set.add(item.num);
      next = item.step + 1;
      if (item.num % 2 === 0) {
         item.num /= 2;
         stack.push({ num: item.num, step: next });
      } else {
         stack.push({ num: item.num - 1, step: next });
         stack.push({ num: item.num + 1, step: next });
      }
   }
   return min;
};
console.log(downToOne(num));

আউটপুট

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

4

  1. জাভাস্ক্রিপ্টে বারবার সংখ্যার সংখ্যার যোগফল

  2. জাভাস্ক্রিপ্টে সংখ্যাকে অক্ষরে রূপান্তর করুন

  3. 10 জাভাস্ক্রিপ্টের নিকটতম শক্তিতে বৃত্তাকার সংখ্যা

  4. জাভাস্ক্রিপ্টে একটি সংখ্যা ফ্যাক্টরাইজ করুন