ফিবোনাচি সিকোয়েন্স:
একটি সিকোয়েন্স X₁, X₂, ..., Xₙ ফিবোনাচি হলে:
- n ≥ 3
- Xᵢ + Xᵢ₊₁ = Xᵢ₊₂ সব i+2 ≤ n এর জন্য
সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি সংখ্যার অ্যারে arr প্রথম ও একমাত্র আর্গুমেন্ট হিসেবে নেবে। ফাংশনটি অ্যারে arr-এ বিদ্যমান সর্বোচ্চ দৈর্ঘ্যের ফিবোনাচি সাবসিকোয়েন্স খুঁজে বের করবে এবং এর দৈর্ঘ্য ফেরত দেবে।
একটি সাবসিকোয়েন্স অন্য একটি সিকোয়েন্স arr- থেকে যেকোনো সংখ্যক উপাদান (কোনোটাও না) মুছে ফেলা থেকে তৈরি হয়, বাকি উপাদানগুলোর ক্রম বদলে না।
উদাহরণস্বরূপ, যদি ইনপুট হয় –
ইনপুট
const arr = [1, 3, 7, 11, 14, 25, 39];
আউটপুট
const output = 5;
আউটপুট ব্যাখ্যা
কারণ সর্বোচ্চ ফিবোনাচি সাবসিকোয়েন্স হল [3, 11, 14, 25, 39]
নিচে কোডটি দেওয়া হল:
উদাহরণ
const arr = [1, 3, 7, 11, 14, 25, 39];
const longestFibonacci = (arr = []) => {
const map = arr.reduce((acc, num, index) => {
acc[num] = index;
return acc;
}, {});
const memo = arr.map(() => arr.map(() => 0));
let max = 0;
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
const a = arr[i];
const b = arr[j];
const index = map[b - a];
if (index < i) {
memo[i][j] = memo[index][i] + 1;
}
max = Math.max(max, memo[i][j]);
}
}
return max > 0 ? max + 2 : 0;
};
console.log(longestFibonacci(arr));
আউটপুট
5