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

জাভাস্ক্রিপ্টে সংখ্যাকে ১ এ নামানো (সর্বোচ্চ একবার +1/-1, অথবা /2)


সমস্যা

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

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

  • যদি বিজোড় হয়, num + 1 বা num - 1 দিয়ে রিপ্লেস করতে পারবে।

এই দুটি অপারেশন কৌশলগতভাবে ব্যবহার করে num-কে ১ পর্যন্ত নামাতে ন্যূনতম কত অপারেশন লাগবে সেটি রিটার্ন করবে।

উদাহরণ:

const num = 7;

আউটপুট হবে:

const output = 4;

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

সর্বোচ্চ ক্ষুদ্র অপারেশন সিকোয়েন্স: 7 -> 8 -> 4 -> 2 -> 1 অথবা 7 -> 6 -> 3 -> 2 -> 1

উদাহরণ

কোডটি নিচের মতো (BFS ভিত্তিক):

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. জাভাস্ক্রিপ্টে সংখ্যাকে নিকটতম ১০-এর ঘাতে রাউন্ড ডাউন করা

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