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

বাম ও ডান সাব-অ্যারের যোগফলের গুণফল - JavaScript

সম দৈর্ঘ্যের অ্যারেকে দুটি সমান পার্টে ভাগ করে প্রতিটির যোগফল গুণ করা।

উদাহরণ

arr = [1, 2, 3, 4]
Left:  [1, 2] → sum = 3
Right: [3, 4] → sum = 7
Product: 3 × 7 = 21

সমাধান

const subArrayProduct = (arr) => {
  const len = arr.length;
  
  // ভ্যালিডেশন: সম দৈর্ঘ্য
  if (len % 2 !== 0) {
    throw new Error('Array length must be even');
  }
  
  const mid = len / 2;
  let leftSum = 0, rightSum = 0;
  
  for (let i = 0; i < mid; i++) leftSum += arr[i];
  for (let i = mid; i < len; i++) rightSum += arr[i];
  
  return leftSum * rightSum;
};

// reduce ব্যবহার করে
const subArrayProductReduce = (arr) => {
  const mid = arr.length / 2;
  const leftSum = arr.slice(0, mid).reduce((a, b) => a + b, 0);
  const rightSum = arr.slice(mid).reduce((a, b) => a + b, 0);
  return leftSum * rightSum;
};

// একই লুপে (দ্রুত)
const subArrayProductSingleLoop = (arr) => {
  const mid = arr.length / 2;
  let left = 0, right = 0;
  
  for (let i = 0; i < arr.length; i++) {
    if (i < mid) left += arr[i];
    else right += arr[i];
  }
  
  return left * right;
};

// টেস্ট
console.log(subArrayProduct([1, 2, 3, 4]));              // 21
console.log(subArrayProductReduce([1, 2, 3, 4]));        // 21
console.log(subArrayProductSingleLoop([1, 2, 3, 4]));    // 21

ব্যাখ্যা

  • সম দৈর্ঘ্য চেক: অড দৈর্ঘ্য হলে মাঝপথি উপাদান কোন সাইডে যাবে?
  • স্লাইস + রিডিউস: পড়া সহজ, কিন্তু অতিরিক্ত অ্যারে তৈরি হয়
  • সিংল লুপ: সবচেয়ে মেমরি-এফিশিয়েন্ট

উৎপাদন

21
  1. জাভাস্ক্রিপ্টে সংখ্যার অঙ্কগুলোর যোগফল ও গুণফলের পার্থক্য বের করা

  2. জাভাস্ক্রিপ্টে ক্যাডেন-এর অ্যালগরিদম দিয়ে সর্বোচ্চ সাবঅ্যারে যোগফল

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

  4. জাভাস্ক্রিপ্টে টার্গেট থেকে কম প্রোডাক্ট वाले সাবঅ্যারে গণনা করা