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