Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

एक मल्टीसेट के सभी विभाजन कैसे खोजें, जहां प्रत्येक भाग में जावास्क्रिप्ट में अलग-अलग तत्व हों

<घंटा/>

मान लें कि हमारे पास ऐसा सरणी है -

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]

स्पष्टीकरण

[ए, बी, सी] [ए, बी, सी] [डी, ई] और [ए, बी, सी] [डी, ई] [ए, बी, सी] एक ही संयोजन हैं। साथ ही, सबसेट के साथ क्रम भी मायने नहीं रखता।

उदाहरण के लिए - [ए, बी, सी] और [बी, ए, सी] समान होना चाहिए।

उदाहरण

इसके लिए कोड होगा -

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. जावास्क्रिप्ट में हैश की कुंजी कैसे खोजें?

    जावास्क्रिप्ट में हैश की कुंजी खोजने के लिए कोड निम्नलिखित है - उदाहरण दस्तावेज़ बॉडी { फॉन्ट-फ़ैमिली:सेगो यूआई, ताहोमा, जिनेवा, वर्दाना, सेन्स-सेरिफ़; } .result { फ़ॉन्ट-आकार:20px; फ़ॉन्ट-वजन:500; }जावास्क्रिप्ट में हैश की कुंजियाँ ढूँढ़ेंDISPLAYहैश कुंजियाँ प्रदर्शित करने के लिए उपरोक्त बटन पर क्ल

  1. एकाधिक मानों द्वारा जावास्क्रिप्ट सरणी के तत्वों को कैसे खोजें?

    जावास्क्रिप्ट सरणी के तत्वों को अनेक मानों द्वारा खोजने के लिए निम्नलिखित कोड है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> &l

  1. पायथन में मैट्रिक्स की सभी पंक्तियों के लिए अलग-अलग तत्व खोजें

    मान लीजिए कि हमारे पास m x m कोटि का एक वर्ग आव्यूह है; हमें दिए गए मैट्रिक्स की सभी पंक्तियों के लिए सभी अलग-अलग तत्वों को समान रूप से खोजना होगा। तो, अगर इनपुट पसंद है 13 2 15 4 17 15 3 2 4 36 15 2 15 4 12 15 26 4 3 2 2 19 4 22 15 तब आउटपुट [2,4,15] . होगा इसे हल करने के लिए, हम इन चरणों