আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি পূর্ণসংখ্যার অ্যারে একমাত্র আর্গুমেন্ট হিসেবে গ্রহণ করবে।
ফাংশনটি নির্ধারণ করবে কি অ্যারেটিকে দুটি সাবঅ্যারে ভাগ করা সম্ভব যাতে দুটি সাবঅ্যারের উপাদানগুলোর যোগফল সমান হয়। ভাগ করার সময় মূল অ্যারের কোনো উপাদান বাদ দেয়া যাবে না।
উদাহরণস্বরূপ —
ইনপুট অ্যারে যদি হয় —
const arr = [5, 3, 7, 4, 1, 8, 2, 6];
তাহলে আউটপুট হবে —
const output = true;
কারণ চাওয়া সাবঅ্যারেগুলো হলো: [5, 3, 4, 6] এবং [7, 1, 8, 2] যাদের যোগফল উভয়ই ১৮।
উদাহরণ
নিচের কোডটি দেখুন:
const arr = [5, 3, 7, 4, 1, 8, 2, 6];
const canPartition = (arr = []) => {
const sum = arr.reduce((acc, val) => acc + val);
if (sum % 2 !== 0){
return false;
};
const target = sum / 2;
const array = new Array(target + 1).fill(false);
array[0] = true;
for (const num of arr) {
if (array[target - num]){
return true
};
for (let i = target; i >= num; i--) {
array[i] = array[i - num];
}
}
return false;
};
console.log(canPartition(arr));
আউটপুট
কনসোল আউটপুট:
true