কম্পিউটার

জাভাস্ক্রিপ্ট - সমস্ত সম্ভাব্য উপায় নির্ধারণ করুন যে মানের একটি গ্রুপ একটি ক্রম থেকে সরানো যেতে পারে


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

উদাহরণস্বরূপ − যদি সিকোয়েন্স অ্যারে −

হয়
const arr = [1, 2, 1, 3, 1, 4, 4];

এবং সরানো অ্যারে হল −

const arr2 = [1, 4, 4];

তারপর উপাদানগুলির ক্রম ব্যাহত না করে এটি করার তিনটি সম্ভাব্য উপায় রয়েছে -

1 --> [2, 1, 3, 1]
2 --> [1, 2, 3, 1]
3 --> [1, 2, 1, 3]

অতএব, আমাদের ফাংশন এই ক্রমগুলির জন্য 3 আউটপুট করা উচিত। এর জন্য কোড হবে −

উদাহরণ

const arr = [1, 2, 1, 3, 1, 4, 4];
const arr2 = [1, 4, 4];
const possibleRemovalCombinations = (original, part) => {
   const sorter = (a, b) => a - b;
   part.sort(sorter);
   let place = [];
   part.forEach(el => {
      place[el] = []
   });
   original.forEach((el, index) => {
      if(place[el]){
         place[el].push(index);
      }
   });
   let connection = part.map(el => place[el].slice());
   for(let i = 1; i < connection.length; i++){
      if (part[i - 1] != part[i]){
         continue;
      }
      let left = connection[i - 1][0];
      while(connection[i][0] <= left){
         connection[i].shift();
      };
   };
   for (let i = connection.length - 2; i >= 0; i--) {
      if(part[i] != part[i + 1]){
         continue;
      }
      let right = connection[i + 1][connection[i + 1].length - 1];
      while(connection[i][connection[i].length - 1] >= right){
         connection[i].pop();
      };
   };
   const combineArray = (step, prev, combination) => {
      for (let i = 0; i < connection[step].length; i++) {
         let curr = connection[step][i];
         if(prev >= curr && original[prev] == original[curr]){
            continue;
         }
         if(step + 1 == connection.length){
            combinations.push(combination.concat([curr]))
         }
         else {
            combineArray(step + 1, curr, combination.concat([curr]));
         };
      };
   };
   let combinations = [], res = [];
   combineArray(0, -1, []);
   for (let i = 0; i < combinations.length; i++) {
      let copy = original.slice();
      combinations[i].forEach(el => copy[el]);
      res[i] = copy.filter(el => el !== undefined);
   };
   return res.length;
};
console.log(possibleRemovalCombinations(arr, arr2));

আউটপুট

এবং কনসোলে আউটপুট হবে −

3

  1. জাভাস্ক্রিপ্ট সহ একটি URL থেকে সমস্ত ডেটা মান কীভাবে পাবেন

  2. কিভাবে জাভাস্ক্রিপ্ট একটি অ্যারে থেকে মিথ্যা মান অপসারণ?

  3. কত উপায়ে আমরা জাভাস্ক্রিপ্টে একটি স্ট্রিং বিভক্ত করতে পারি?

  4. জাভাস্ক্রিপ্টে একটি কনস্ট্রাক্টর থেকে মান ফেরত?