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

জাভাস্ক্রিপ্টে n আর্গুমেন্টের সব সম্ভাব্য প্লাস/মাইনাস সমষ্টি বের করা


সমস্যা বিবরণ

যেকোনো সংখ্যক নম্বর আর্গুমেন্ট হিসেবে দেওয়া আছে। এডিশন এবং সাবট্র্যাকশনের সব সম্ভাব্য কম্বিনেশনের সমষ্টি বের করে, শূন্যের সবচেয়ে নিকটবর্তী সমষ্টি রিটার্ন করতে হবে।

উদাহরণ: 1, 2, 3 → কম্বিনেশন: 1+2+3, 1-2-3, 1+2-3, 1-2+3 → সবচেয়ে নিকট শূন্য = 0

সমাধান

const findSmallestPositive = (...arr) => {
  let set = new Set([Math.abs(arr[0])]);
  for (let i = 1; i < arr.length; i++) {
    const secondSet = new Set;
    for (let d of Array.from(set)) {
      secondSet.add(Math.abs(d + arr[i]));
      secondSet.add(Math.abs(d - arr[i]));
    }
    set = secondSet;
  }
  return Math.min(...Array.from(set));
};

console.log(findSmallestPositive(5, 3));       // 2
console.log(findSmallestPositive(1, 2, 3));    // 0
console.log(findSmallestPositive(1, 2, 3, 5)); // 1

আউটপুট

2 0 1

অ্যালগরিদম ব্যাখ্যা

  • ডাইনামিক প্রোগ্রামিং অ্যাপ্রোচ: প্রতিটি ধাপে সম্ভাব্য সমষ্টি সেটে রাখা হয়।
  • Set ব্যবহার করে ডুপ্লিকেট এড়ানো হয়।
  • প্রতিটি নতুন নম্বরের জন্য পূর্বের সমষ্টিগুলোর সাথে যোগ এবং বিয়োগ করা হয়।
  • এবসোলিউট ভ্যালু নেওয়া হয়েছে যাতে নেগেটিভ সমষ্টিও পজেটিভ হিসেবে ট্র্যাক হয়।
  1. জাভাস্ক্রিপ্টে স্ট্রিং-এর সব সম্ভাব্য ইউনিক পারমুটেশন তৈরি করা

  2. জাভাস্ক্রিপ্টে নির্দিষ্ট যোগফল দিয়ে প্রাইম নম্বর জোড়া খুঁজে বের করা

  3. জাভাস্ক্রিপ্টে অ্যারেতে সব শীর্ষবিন্দু ও তাদের অবস্থান খুঁজে বের করা

  4. জাভাস্ক্রিপ্টে সব সংঘর্ষের পর অবস্থা নির্ণয়