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

জাভাস্ক্রিপ্টে অ্যাবসোলিউট ভ্যালু সাম মিনিমাইজেশন


মান লিজিয়ে, আমাদের কাছে একটি সর্টেড পূর্ণসংখ্যার অ্যারে আছে, আমরা এটিকে arr বলব। আমাদের এমন একটি পূর্ণসংখ্যা x খুঁজে বের করতে হবে যাতে −

abs(a[0] - x) + abs(a[1] - x) + ... + abs(a[a.length - 1] - x)

মানটি ন্যূনতম হয় (এখানে abs মান tercero আבסোলিউট ভ্যালু বোঝাচ্ছে)। যদি একাধিক সম্ভাব্য উত্তর থাকে, তাহলে সবচেয়ে ছোটটি আউটপুট করুন।

উদাহরণস্বরূপ −

যেহেতু,

arr = [2, 4, 7],

আউটপুট হওয়া উচিত −

absoluteValuesSumMinimization(arr) = 4

কারণ abs(2 - 4) + abs(4 - 4) + abs(7 - 4) = 5 যা যেকোনো সংখ্যা দিয়ে অর্জন করা সম্ভাব্য ন্যূনতম।

আমরা জানি,

arr.length/2

আधी দৈর্ঘ্য ফেরত দেয়।

জোড় দৈর্ঘ্যের অ্যারেতে, এটি মাঝপথের ডানে হবে। বিজোড় দৈর্ঘ্যের অ্যারেতে, এটি মাঝপথে হবে।

  • Math.ceil(arr.length/2) প্রয়োজনে রাউন্ড আপ করে, তাই ৫ এলিমেন্টের অ্যারেতে মাঝপথ ২.৫ → ৩। এটি বিজোড় দৈর্ঘ্যের অ্যারেকে এক অফ বাই করে।

  • Math.ceil(arr.length/2)-1 এক ইনডেক্স নিচে আনে। এটি সব অ্যারেতে অফ-বাই-ওয়ান এরর ঠিক করে।

উদাহরণ

নিচে কোড দেওয়া হল −

const arr = [2, 4, 7]; const absoluteValuesSumMinimization = (arr = []) => {    const res = [];    arr.forEach(num => {       const sum = arr.reduce((accum, next) => {          return accum + Math.abs(next - num);       }, 0);       res.push(sum);    });    const lowest = Math.min(...res);    return arr[res.indexOf(lowest)]; }; console.log(absoluteValuesSumMinimization(arr));

আউটপুট

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

4

  1. জাভাস্ক্রিপ্ট array.values() মেথড

  2. জাভাস্ক্রিপ্ট অ্যারেতে সব ইউনিক ভ্যালু বের করা

  3. জাভাস্ক্রিপ্টে অ্যারেতে নেস্টেড অবজেক্ট মানগুলোর যোগফল

  4. জাভাস্ক্রিপ্টে পার্টিশনের গড়ের সর্বোচ্চ যোগফল