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

JavaScript में N को पार्टीशन करना जहां भागों की संख्या और प्रत्येक भाग 2 की घात हों, और भाग का आकार और संख्या प्रतिबंधित हों


हमें एक JavaScript फ़ंक्शन लिखना है जो एक संख्या लेता है। फ़ंक्शन को निम्नलिखित नियमों के अनुसार संख्या को खंडों में विभाजित करना चाहिए -

  • खंडों की संख्या 2 की घात होनी चाहिए,

  • प्रत्येक खंड में भी 2 की घात की संख्या में आइटम होने चाहिए (जहां आकार अधिकतम 2 की घात तक जाता है, इसलिए 1, 2, 4, 8, 16, 32, 32 अधिकतम है)

इसलिए, उदाहरण के लिए, 8 को 1 बकेट में विभाजित किया जा सकता है -

[8]

9 हो सकता है -

[8, 1]

यह काम करता है क्योंकि दोनों संख्याएं 2 की घात हैं, और सरणी का आकार 2 है (भी 2 की घात)।

आइए 11 आज़माएं -

[8, 2, 1]

नहीं, यह काम नहीं करता।

क्योंकि सरणी का आकार 3 है जो 2 की घात नहीं है, भले ही यह 11 तक जुड़ता है।

[4, 4, 2, 1]

यह काम करता है! यह 4 तत्व हैं जो 2 की घात है।

उदाहरण

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

function permuteCombinations(n, maximum){
    const maxPowerOf2 = 1 << maximum;
    const m = ~~(n / maxPowerOf2);
    const A = new Array(maximum + 1).fill(0);
    A[maximum] = m;
    let num = n - m * maxPowerOf2;
    let p = 0;
    let bitCount = 0;
    while (num){
        if (num & 1){
            bitCount += 1;
            A[p] = 1;
        }
        num >>= 1;
        p += 1;
    }
    const min = m + bitCount;
    let target = 1;
    while (target < min)
        target *= 2;
    if (target > n)
        return -1;
    if (target == min)
        return A.map((c, p) => [1 << Number(p), c]);
    if (target == n)
        return [n];
    target = target - min;
    let i = m ? maximum : p;
    while (target && i > 0){
        if (!A[i]){
            i -= 1;
            continue;
        }
        const max = Math.min(target, A[i]);
        A[i] -= max;
        A[i-1] += 2*max;
        target -= max;
        i -= 1;
    }
    return target ? -1 : A.map((c, p) => [1 << Number(p), c]);
};
console.log(permuteCombinations(11, 5));

आउटपुट

कंसोल में आउटपुट होगा -

[ [ 1, 1 ], [ 2, 1 ], [ 4, 2 ], [ 8, 0 ], [ 16, 0 ], [ 32, 0 ] ]
  1. - JavaScript में हेक्स में बदलकर संख्यात्मक भाग जोड़ना

    समस्या हमें एक JavaScript फ़ंक्शन लिखना है जो एक स्ट्रिंग लेता है। हमारे फ़ंक्शन को स्ट्रिंग के प्रत्येक वर्ण को उसके ASCII कोड के हेक्स मान में बदलना चाहिए, फिर परिणाम हेक्स स्ट्रिंग्स में मौजूद अक्षरों को अनदेखा करके संख्याओं का योग होना चाहिए। उदाहरण कोड निम्न है - a + b, 0); }; console.log(

  1. - जावास्क्रिप्ट में चौड़ाई और स्क्रीन आकार अनुपात (चौड़ाई:ऊंचाई) के आधार पर ऊंचाई ढूंढना

    समस्याहमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो स्क्रीन की चौड़ाई को पहले तर्क के रूप में और पहलू अनुपात (w:h) को दूसरे तर्क के रूप में लेता है। इन दो इनपुट के आधार पर हमारा फ़ंक्शन स्क्रीन की ऊंचाई लौटाएगा।उदाहरणनिम्न कोड देखें:const ratio = 18:11; const width = 2417; const findHeight = (ratio = ,

  1. - जावास्क्रिप्ट में संख्या को अभाज्य संख्याओं की घात और गुणनफल के रूप में दर्शाना

    समस्याहमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो एक धनात्मक पूर्णांक लेता है। हमारा फ़ंक्शन इस संख्या को कुछ अभाज्य संख्याओं की घातों के योग के रूप में दर्शाएगा।इसलिए, संख्या n के लिए, हमारा फ़ंक्शन निम्न जैसी स्ट्रिंग लौटाएगा:n = (p1**n1)(p2**n2)...(pk**nk)जहां p1, p2, p3..pk अभाज्य संख्याएं हैं और