একটি ফাংশন লিখতে হবে যা নম্বরের অ্যারে (প্রথম আর্গুমেন্ট) এবং টার্গেট সম (দ্বিতীয় আর্গুমেন্ট) নেবে। অ্যারে লুপ করে প্রতিটি ভ্যালুকে অন্যদের সাথে যোগ করবে (নিজের সাথে নিজের বাদে)।
যদি দুটি ভ্যালুর যোগফল টার্গেট সমের সমান হয় এবং সেই পেয়ার আগে এনকাউন্টার না হয়, তবে তাদের ইন্ডেক্স মনে রাখবে এবং শেষে সকল মনে থাকা ইন্ডেক্সের সমষ্টি রিটার্ন করবে।
অ্যারে: const arr = [1, 4, 2, 3, 0, 5];
সম: const sum = 7;
আউটপুট: 11 কারণ:
4 + 3 = 7 (index: 1, 3) 5 + 2 = 7 (index: 5, 2) 1 + 2 + 3 + 5 = 11
উদাহরণ
কোডটি নিচে দেওয়া হলো:
const arr = [1, 4, 2, 3, 0, 5];
const findIndexSum = (arr = [], sum = 0) => {
let copy = arr.slice(0);
const used = [];
let index = 0, indexFirst = 0, indexSecond, first, second;
while (indexFirst < copy.length){
indexSecond = indexFirst + 1;
while(indexSecond < copy.length){
first = copy[indexFirst];
second = copy[indexSecond];
if (first + second === sum){
used.push(first, second);
copy = copy.filter(el => first !== el && second !== el );
indexFirst--;
break;
}
indexSecond++;
}
indexFirst++;
};
const indexSum = used.sort().reduce((acc, val, ind) => {
const fromIndex = ind === 0 || val !== used[ind - 1] ? 0 : index + 1
index = arr.indexOf(val, fromIndex);
return acc + index;
}, 0);
return indexSum;
};
console.log(findIndexSum(arr, 7));
আউটপুট
কনসোলে নিচের আউটপুটটি দেখাবে:
11