কম্পিউটার

জাভাস্ক্রিপ্টে উপাদানের ক্রমবর্ধমান ফ্রিকোয়েন্সির উপর ভিত্তি করে সাজানো অ্যারে


সমস্যা

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

অ্যারে অ্যারে, কিছু সদৃশ থাকতে পারে। আমাদের ফাংশনটি এমনভাবে অ্যারেকে সাজাতে বলে মনে করা হয় যাতে যে উপাদানগুলি কমপক্ষে সংখ্যক বার প্রদর্শিত হয় সেগুলি প্রথমে ক্রমবর্ধমান ফ্রিকোয়েন্সিতে উপাদানগুলির দ্বারা অনুসরণ করা হয়৷

যদি অ্যারেতে একই সংখ্যার জন্য দুটি উপাদান উপস্থিত হয় তবে তাদের ক্রমবর্ধমান ক্রমে স্থাপন করা উচিত।

উদাহরণস্বরূপ, যদি ফাংশনে ইনপুট হয়

ইনপুট

const arr = [5, 4, 5, 4, 2, 1, 12];

আউটপুট

const output = [1, 2, 12, 4, 4, 5, 5];

আউটপুট ব্যাখ্যা

সংখ্যা 1, 2 এবং 12 সবগুলি একবার প্রদর্শিত হয় তাই ক্রমবর্ধমান ক্রমে সাজানো হয় এবং তারপর 4 এবং 5 উভয়ই দুবার প্রদর্শিত হয়৷

উদাহরণ

নিম্নলিখিত কোড -

const arr = [5, 4, 5, 4, 2, 1, 12];
const sortByAppearance = (arr = []) => {
   arr.sort((a, b) => a - b);
   const res = [];
   const searched = {};
   const countAppearance = (list, target) => {
      searched[target] = true;
      let count = 0;
      let index = list.indexOf(target);
      while(index !== -1){
         count++;
         list.splice(index, 1);
         index = list.indexOf(target);
      };
      return count;
   };

   const map = [];
   arr.forEach(el => {
      if(!searched.hasOwnProperty(el)){
         map.push([el, countAppearance(arr.slice(), el)]);
      };
   });
   map.sort((a, b) => a[1] - b[1]);

   map.forEach(([num, freq]) => {
      while(freq){
         res.push(num);
         freq--;
      }
   });
   return res;
};
console.log(sortByAppearance(arr));

আউটপুট

[1, 2, 12, 4, 4, 5, 5]

  1. জাভাস্ক্রিপ্টে উপাদানের ক্রমবর্ধমান ফ্রিকোয়েন্সি অনুযায়ী অ্যারে সাজানো

  2. জাভাস্ক্রিপ্টে অ্যারের অসম বাছাই

  3. জাভাস্ক্রিপ্টে অ্যারে উপাদানের সদৃশ সহ কমন

  4. জাভাস্ক্রিপ্টে অ্যারেকে ক্রমবর্ধমান অনুক্রমে রূপান্তর করা হচ্ছে