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

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]

व्याख्या

[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. JavaScript में हैश (ऑब्जेक्ट) की कीज़ (keys) कैसे खोजें? JavaScript में हैश (ऑब्जेक्ट) की कीज़ (keys) कैसे खोजें?

    JavaScript में हैश (ऑब्जेक्ट) की कीज़ खोजने का निम्नलिखिक कोड है:उदाहरण<!DOCTYPE html> <html lang="hi"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Object K

  1. मल्टीपल वैल्यूज द्वारा जावास्क्रिप्ट ऐरे के एलिमेंट्स कैसे खोजें? मल्टीपल वैल्यूज द्वारा जावास्क्रिप्ट ऐरे के एलिमेंट्स कैसे खोजें?

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

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

    मान लीजिए हमारे पास m x m क्रम का एक वर्ग मैट्रिक्स है; हमें दिए गए मैट्रिक्स की सभी पंक्तियों में सामान्य सभी विशिष्ट तत्वों को ढूंढना है।तो, यदि इनपुट इस तरह है:13215417153243615215412152643221942215तो आउटपुट [2, 4, 15] होगा।इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:sortRows() फंक्शन