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

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

<घंटा/>

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

  • विखंडू की संख्या एक घात−दो−दो होनी चाहिए,

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

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

[8]

9 हो सकता है -

[8, 1]

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

आइए 11 कोशिश करें -

[8, 2, 1]

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

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

[4, 4, 2, 1]

यह काम करता है! यह 4 तत्व हैं जो दो की शक्ति है।

उदाहरण

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

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. हेक्स में कनवर्ट करना और जावास्क्रिप्ट में अंक भाग को जोड़ना

    समस्या हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो एक स्ट्रिंग लेता है। हमारे फ़ंक्शन को स्ट्रिंग के प्रत्येक वर्ण को उसके एएससीआई कोड के हेक्स मान में परिवर्तित करना चाहिए, फिर परिणाम हेक्स में मौजूद अक्षरों को अनदेखा करते हुए हेक्स स्ट्रिंग्स में संख्याओं का योग होना चाहिए। उदाहरण निम्नलिखित कोड ह

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

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

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

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