কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে অ্যারেতে সব শীর্ষবিন্দু ও তাদের অবস্থান খুঁজে বের করা


বিল্ড আপ

ধরি জাভাস্ক্রিপ্টে নিচের অ্যারেটি আছে –

const arr = [4, 3, 4, 7, 5, 2, 3, 4, 3, 2, 3, 4];

যদি আমরা এই অ্যারের পয়েন্টগুলো y-অক্ষে প্লট করি যেখানে প্রতিটি সংলগ্ন পয়েন্ট x-অক্ষে এক ইউনিট দূরত্বে থাকে, তবে গ্রাফটি হবে নিচের মতো –

জাভাস্ক্রিপ্টে অ্যারেতে সব শীর্ষবিন্দু ও তাদের অবস্থান খুঁজে বের করা

এই গ্রাফ স্পষ্টভাবে দেখায় যে এই অ্যারেতে দুটি লোকাল ম্যাক্সিমা (শীর্ষবিন্দু) আছে: সূচক ৩ এবং ৭-এ, মান যথাক্রমে ৭ এবং ৪।

সমস্যা

আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি পূর্ণসংখ্যার অ্যারে arr প্রথম ও একমাত্র আর্গুমেন্ট হিসেবে নেবে।

ফাংশনটি একটি অবজেক্ট ফেরত দেবে যাতে দুটি প্রপার্টি থাকবে: maximas এবং positions।

এই দুটি প্রপার্টিও অ্যারে হবে। maximas অ্যারেতে লোকাল ম্যাক্সিমাগুলোর মান থাকবে এবং positions অ্যারেতে তাদের সংশ্লিষ্ট সূচক থাকবে।

উদাহরণস্বরূপ, যদি ইনপুট হয় –

তাহলে উপরের অ্যারেতে আউটপুট হবে –

const output = { maximas: [7, 4], positions: [3, 7] };

উদাহরণ

নিচে কোডটি দেওয়া হল –

const arr = [4, 3, 4, 7, 5, 2, 3, 4, 3, 2, 3, 4]; 
const findMaxima = (arr = []) => { 
  let positions = []; 
  let maximas = []; 
  for (let i = 1; i < arr.length - 1; i++) { 
    if (arr[i] > arr[i - 1]) { 
      if (arr[i] > arr[i + 1]) { 
        positions.push(i); 
        maximas.push(arr[i]); 
      } else if (arr[i] === arr[i + 1]) { 
        let temp = i; 
        while (arr[i] === arr[temp]) i++; 
        if (arr[temp] > arr[i]) { 
          positions.push(temp); 
          maximas.push(arr[temp]); 
        } 
      } 
    } 
  } 
  return { maximas, positions }; 
}; 
console.log(findMaxima(arr));

আউটপুট

তাহলে আউটপুট হবে –

{ maximas: [ 7, 4 ], positions: [ 3, 7 ] }

  1. জাভাস্ক্রিপ্টে অ্যারেতে সব সম্ভাব্য সাবসেট বের করা

  2. জাভাস্ক্রিপ্টে অ্যারেতে একটি সংখ্যা ও এর n-গুণিতক খুঁজে বের করা

  3. জাভাস্ক্রিপ্টে অ্যারেতে উপাদানের পূর্ববর্তী ও পরবর্তী মান উপস্থিত কিনা যাচাই করা

  4. জাভাস্ক্রিপ্টে অ্যারে ইন্টারসেকশন (রিপিটিং এলিমেন্ট সহ) বের করা