আমাদের কাছে n এন্ট্রির একটি অ্যারে দেওয়া আছে, যেটিতে শুধু ২টি নাম্বার রয়েছে, বাকি সব এন্ট্রি null। কিছু এইভাবে -
const arr = [null, null, -1, null, null, null, -3, null, null, null];
আমাদের একটি ফাংশন লিখতে হবে যা এই অ্যারেটি নিবে এবং যে আর্থমেটিক সিরিজের অংশ এই দুটি নাম্বার, সেটি পূর্ণ করবে। এই সমস্যাটি আরও স্পষ্টভাবে বোঝার জন্য আমরা এই null ভ্যালুগুলোকে খালি জায়গা বলে চিন্তে পারি যেখানে নাম্বার বসিয়ে পুরো অ্যারেটিকে একটি আর্থমেটিক প্রগ্রেশন বানাতে হবে।
আর্থমেটিক প্রগ্রেশন সম্পর্কে
একটি সিরিজ বা নাম্বারের অ্যারেকে আর্থমেটিক প্রগ্রেশন বলা হয় যদি সেটি থেকে যেকোনো র্যান্ডম নাম্বার n কে (n-1) তম নাম্বারের সাথে একটি কনস্ট্যান্ট d যোগ করে পাওয়া যায়।
উদাহরণ -
1, 2, 3, 4, 5, 6, 7, 8
এখানে, প্রতিটি পরবর্তী নাম্বার আগের নাম্বারের সাথে একটি কনস্ট্যান্ট (এই কেসে ১) যোগ করে প্রাপ্ত হয়েছে।
অন্যান্য উদাহরণ -
1, 1, 1, 1, 1, 1, 1, 1, 1 10, 8, 6, 4, 2, 0, -2
এমন কোনো সিরিজের প্রথম এলিমেন্টকে সাধারণত a দিয়ে এবং প্রতিটি নাম্বারের সঠিক পার্থক্য, অর্থাৎ কমন ডিফারেন্স কে d দিয়ে বোঝানো হয়।
তাই, যদি যেকোনো এমন সিরিজের nth এলিমেন্টকে Tn দিয়ে বোঝাই, তবে -
Tn = a + (n -1)d
যেখানে, n হলো সেই নাম্বারের ১-ভিত্তিক ইনডেক্স।
এই বিষয়গুলো স্পষ্ট হলে, আমরা আমাদের সমস্যার জন্য কোড লিখি। প্রথমে আমরা অ্যারেতে প্রথম এলিমেন্ট (a) এবং কমন ডিফারেন্স (d) বের করার চেষ্টা করব। একবার পেয়ে গেলে, আমরা মূল অ্যারেতে লুপ চালিয়ে সিরিজটি জেনারেট করব।
উদাহরণ
const arr = [null, null, -1, null, null, null, -3, null, null, null]; const arr2 = [null, null, -1, null, null, null, 12, null, null, null, null, null, null]; const constructSeries = (arr) => { const map = { first: undefined, last: undefined }; arr.forEach((el, ind) => { if(el !== null){ if(map['first']){ map['last'] = [el, ind]; }else{ map['first'] = [el, ind]; } }; }); const { first, last } = map; const commonDifference = (last[0] - first[0])/(last[1] - first[1]); const firstElement = (first[0]) - ((first[1])*commonDifference); return arr.map((item, index) => { return firstElement + (index * commonDifference); }); }; console.log(constructSeries(arr)); console.log(constructSeries(arr2));আউটপুট
কনসোলে আউটপুট হবে -
[ 0, -0.5, -1, -1.5, -2, -2.5, -3, -3.5, -4, -4.5 ] [ -7.5, -4.25, -1, 2.25, 5.5, 8.75, 12, 15.25, 18.5, 21.75, 25, 28.25, 31.5 ]