संख्या, विभाजक संस्करण की गणना करें


11

मैथ पर इस सवाल से प्रेरित ।

एक नंबर के प्रधानमंत्री गुणन करते हैं, n , के रूप में प्रतिनिधित्व किया जा पी (एन) = 2 एक x 3 x 5 x ...
(का उपयोग करते हुए एक्स गुणा प्रतीक के रूप में।)
फिर से divisors की संख्या n के रूप में प्रतिनिधित्व किया जा सकता है डी (एन) = (अ + 1) एक्स (ख +1) एक्स (ग + 1) ...
इस प्रकार, हम आसानी से कह सकते हैं कि के divisors की संख्या 2n है डी (2n) = (अ + 2) एक्स (ख +1) एक्स (ग + 1) ... ,
के divisors की संख्या 3n है डी (3n ) = (ए + 1) एक्स (बी + २) एक्स (सी + १) ... ,
और इसी तरह।

चुनौती:

एक प्रोग्राम या फ़ंक्शन लिखिए जो इन गुणों का उपयोग करते हुए एन की गणना करता है , कुछ विशेष भाजक इनपुट।

इनपुट:

पूर्णांक का एक सेट, चलो उन्हें निम्नलिखित परिभाषाओं के साथ w, x, y, z , कहते हैं:

  • सभी इनपुट 1 से अधिक हैं - w, x, y, z > 1
  • x और z अलग हैं -x<>z
  • एक्स और जेड प्रधानमंत्री कर रहे हैं - P(x)=x, D(x)=2और P(z)=z,D(z)=2
  • w , xn के विभाजकों की संख्या है -D(xn)=w
  • y zn के दिव्यांगों की संख्या है -D(zn)=y

लिंक किए गए प्रश्न में दी गई समस्या के लिए, एक इनपुट उदाहरण हो सकता है (28, 2, 30, 3)। यह करने के लिए अनुवाद D(2n)=28और D(3n)=30, साथ n=864

आउटपुट:

एक एकल पूर्णांक, एन , जो उपरोक्त परिभाषाओं और इनपुट प्रतिबंधों को संतुष्ट करता है। यदि कई संख्याएँ परिभाषाएँ फिट बैठती हैं, तो सबसे छोटा आउटपुट। यदि ऐसा कोई पूर्णांक संभव नहीं है, तो एक गलत मान का उत्पादन करें ।

उदाहरण:

(w, x, y, z) => output

(28, 2, 30, 3) => 864
(4, 2, 4, 5) => 3
(12, 5, 12, 23) => 12
(14, 3, 20, 7) => 0 (or some other falsey value)
(45, 13, 60, 11) => 1872
(45, 29, 60, 53) => 4176

नियम:

  • मानक कोड-गोल्फ नियम और लूपहोल प्रतिबंध लागू होते हैं।
  • मानक इनपुट / आउटपुट नियम लागू होते हैं।
  • इनपुट नंबर किसी भी क्रम में हो सकते हैं - कृपया अपने उत्तर में निर्दिष्ट करें कि आप किस क्रम का उपयोग कर रहे हैं।
  • इनपुट नंबर किसी भी उपयुक्त प्रारूप में हो सकते हैं: अंतरिक्ष-अलग, एक सरणी, अलग फ़ंक्शन या कमांड-लाइन तर्क इत्यादि - आपकी पसंद।
  • इसी प्रकार, अगर STDOUT, आसपास के व्हाट्सएप, ट्रेलिंग न्यूलाइन, आदि के लिए आउटपुट सभी वैकल्पिक हैं।
  • इनपुट पार्सिंग और आउटपुट स्वरूपण इस चुनौती की दिलचस्प विशेषताएं नहीं हैं।
  • केन जटिलता और पूर्णांक के ओवरफ्लो के हितों में, चुनौती संख्या n में इस तरह के प्रतिबंध होंगे 1 < n < 100000- अर्थात, आपको इस सीमा के बाहर संभावित उत्तरों के बारे में चिंता करने की आवश्यकता नहीं है।

सम्बंधित


इसलिए, यदि सबसे छोटा समाधान 100,000 से बड़ा है, तो मैं या तो समाधान या शून्य वापस चुन सकता हूं?
डेनिस

@ डेनिस यदि यह आपके कोड को छोटा बनाता है, तो सुनिश्चित करें। या तो स्वीकार्य होगा।
AdmBorkBork

जवाबों:


3

जेली , 17 16 बाइट्स

×€ȷ5R¤ÆDL€€Z=Ḅi3

यह एक क्रूर बल समाधान है जो 100,000 तक सभी संभावित मूल्यों की कोशिश करता है। इसे ऑनलाइन आज़माएं!

गैर-प्रतिस्पर्धात्मक संस्करण

जेली के नवीनतम संस्करण में एक बग फिक्स है जो उपरोक्त कोड को 15 बाइट्स तक नीचे करने की अनुमति देता है ।

ȷ5R×€³ÆDL€€=Ḅi3

इसे ऑनलाइन आज़माएं!

यह काम किस प्रकार करता है

×€ȷ5R¤ÆDL€€Z=Ḅi3  Main link. Left input: x,z. Right input: w,y

     ¤            Combine the two atoms to the left into a niladic chain.
  ȷ5              Yield 100,000 (1e5).
    R             Apply range. Yields [1, ..., 100,000].
x€                Multiply each r in the range by x and z.
                  This yields [[x, ..., 100,000x], [z, ..., 100,000z]].
      ÆD          Compute the divisors of each resulting integer.
        L€€       Apply length to each list of divisors.
                  This counts the divisors of each integer in the 2D array.
           Z      Zip; group the divisors of kx and kz in pairs.
            =     Compare each [divisors(kx), divisors(kz)] with [w, y].
                  This yields a pair of Booleans.
             Ḅ    Convert each Boolean pair from binary to integer.
              i3  Find the first index of 3. Yields 0 for not found.

बधाई हो, आप डिफ़ॉल्ट रूप से जीत जाते हैं! : D
AdmBorkBork
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.