কম্পিউটার

মাল্টিসেটের সমস্ত পার্টিশন কীভাবে খুঁজে পাবেন, যেখানে জাভাস্ক্রিপ্টে প্রতিটি অংশে আলাদা উপাদান রয়েছে


ধরা যাক আমাদের এরকম একটি অ্যারে আছে −

const arr = [A, A, B, B, C, C, D, E];

আমাদের একটি অ্যালগরিদম তৈরি করতে হবে যাতে এটি সমস্ত সংমিশ্রণ খুঁজে পাবে যা পুরো অ্যারেতে যোগ করে, যেখানে কোনো উপাদানের পুনরাবৃত্তি হয় না।

উদাহরণ সমন্বয় −

[A, B, C, D, E] [A, B, C]
[A, B, C, D] [A, B, C, E]
[A, B, C] [A, B, C] [D, E]

ব্যাখ্যা

[A, B, C] [A, B, C] [D, E] এবং [A, B, C] [D, E] [A, B, C] একই সংমিশ্রণ। এছাড়াও, উপসেটগুলির সাথে অর্ডার করাও গুরুত্বপূর্ণ নয়৷

যেমন − [A,B,C] এবং [B,A,C] একই হওয়া উচিত।

উদাহরণ

এর জন্য কোড হবে −

const arr = [['A', 1], ['B', 2], ['C', 3]];
const spread = (arr, ind, combination) => {
   if (arr[1] === 0)
   return [combination];
   if (ind === −1)
   return [combination.concat([arr])];
   let result = [];
   for (let c=1; c<=Math.min(combination[ind][1], arr[1]); c++){
      let comb = combination.map(x => x.slice());
      if (c == comb[ind][1]){
         comb[ind][0] += arr[0];
      } else {
         comb[ind][1] −= c;
         comb.push([comb[ind][0] + arr[0], c]);
      }
      result = result.concat(spread([arr[0], arr[1] − c], ind − 1, comb));
   }
   let comb = combination.map(x => x.slice());
   return result.concat(spread(arr, ind − 1, comb));
};
const helper = arr => {
   function inner(ind){
      if (ind === 0)
      return [[arr[0]]];
      const combs = inner(ind − 1);
      let result = [];
      for (let comb of combs)
      result = result.concat(
      spread(arr[ind], comb.length − 1, comb));
      return result;
   }
   return inner(arr.length − 1);
};
const returnPattern = (arr = []) => {
   const rs = helper(arr);
   const set = new Set();
   for (let r of rs){
      const _r = JSON.stringify(r);
      if (set.has(_r))
      console.log('Duplicate: ' + _r);
      set.add(_r);
   }
   let str = '';
   for (let r of set)
   str += '\n' + r
   str += '\n\n';
   return str;
};
console.log(returnPattern(arr));

আউটপুট

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

[["ABC",1],["BC",1],["C",1]]
[["AB",1],["BC",1],["C",2]]
[["ABC",1],["B",1],["C",2]]
[["AB",1],["B",1],["C",3]]
[["AC",1],["B",1],["BC",1],["C",1]]
[["A",1],["B",1],["BC",1],["C",2]]
[["AC",1],["BC",2]]
[["A",1],["BC",2],["C",1]]
[["AC",1],["B",2],["C",2]]
[["A",1],["B",2],["C",3]]

  1. জাভাস্ক্রিপ্টে হ্যাশের কীগুলি কীভাবে খুঁজে পাবেন?

  2. একাধিক মান দ্বারা জাভাস্ক্রিপ্ট অ্যারের উপাদানগুলি কীভাবে খুঁজে পাবেন?

  3. প্রতিটি কে-আকারের উইন্ডোতে পাইথনে অনন্য উপাদান রয়েছে এমন সংখ্যার একটি তালিকা খুঁজে বের করার জন্য প্রোগ্রাম

  4. পাইথনে একটি ম্যাট্রিক্সের সমস্ত সারিতে সাধারণ স্বতন্ত্র উপাদানগুলি খুঁজুন