ফিবোনাচি সিকোয়েন্স:
একটি ক্রম X_1, X_2, ..., X_n হল ফিবোনাচি যদি:
-
n>=3
-
X_i + X_{i+1} =X_{i+2} সমস্ত i + 2 <=n
এর জন্য
সমস্যা
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম এবং একমাত্র আর্গুমেন্ট হিসাবে সংখ্যার একটি অ্যারে নেয়। আমাদের ফাংশনটি অ্যারে অ্যারে বিদ্যমান দীর্ঘতম ফিবোনাচি অনুসৃতির দৈর্ঘ্য খুঁজে বের করে ফেরত দেবে৷
বাকি উপাদানের ক্রম পরিবর্তন না করেই 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