সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা দুটি লিটারেল অ্যারে, arr1 এবং arr2, প্রথম ও দ্বিতীয় আর্গুমেন্ট হিসেবে নেয়।
ফাংশনটি arr1 এবং arr2-তে সাধারণ উপাদান খুঁজে বের করবে যেটির লিস্ট ইনডেক্স যোগফল (index sum) ন্যূনতম। যদি একাধিক উত্তর থাকে, তবে সেগুলো কোনো নির্দিষ্ট ক্রম ছাড়াই আউটপুট দেবে।
উদাহরণস্বরূপ, ইনপুট যদি নিচের মতো হয়:
const arr1 = ['a', 'b', 'c', 'd'];
const arr2 = ['d', 'a', 'c'];
তবে আউটপুট হবে:
const output = ['a'];
আউটপুট ব্যাখ্যা
'd' এবং 'a' দুটি অ্যারেতেই সাধারণ। 'd'-র ইনডেক্স যোগফল = 3 + 0 = 3, আর 'a'-র ইনডেক্স যোগফল = 0 + 1 = 1। তাই 'a' হলো প্রয়োজনীয় উপাদান।
উদাহরণ
নিচের কোডটি দেখুন:
const arr1 = ['a', 'b', 'c', 'd'];
const arr2 = ['d', 'a', 'c'];
const findCommon = (arr1 = [], arr2 = []) => {
let sum = Infinity
const map = arr1.reduce((acc, str, index) => {
acc[str] = index
return acc
}, {})
for (let i = 0; i < arr2.length; i++) {
const index1 = map[arr2[i]]
if (index1 >= 0 && index1 + i < sum) {
sum = index1 + i
}
}
const result = []
for (let i = 0; i < arr2.length; i++) {
const index1 = map[arr2[i]]
if (index1 >= 0 && index1 + i === sum) {
result.push(arr2[i])
}
}
return result
}
console.log(findCommon(arr1, arr2));
আউটপুট
['a']