क्या यह एक मुनचूसन नंबर है?


30

एक Munchausen संख्या आधार में , यह भी एक के रूप में जाना बिल्कुल सही अंकों करने वाली अंकों अपरिवर्तनीय या PDDI पूर्णांक सकारात्मक की एक अजीब प्रकार जहां इसकी base- का योग है खुद को उठाया अंक संख्या ही के बराबर है। वे काल्पनिक बैरन मुनचौसेन के नाम पर हैं , जिन्होंने खुद को डूबने से बचाने के लिए अपनी खुद की पोनीटेल के माध्यम से खुद को फहराया। एक संबंधित अवधारणा Narcissistic नंबर हैbबीb

उदाहरण के लिए, तुच्छ रूप से प्रत्येक आधार में एक मुनचूसन संख्या है क्योंकि । इसके अतिरिक्त, प्रत्येक सकारात्मक पूर्णांक एक आधार -1 मुनचूसन संख्या है।111=1

अधिक दिलचस्प बात यह है कि एक बेस -10 मुनचूसेन संख्या है क्योंकि , और वास्तव में केवल अन्य आधार -10 मुनचूसेन संख्या है343533+44+33+55=3435

35 तक हर बेस में मुनचूसन नंबरों की एक आंशिक सूची अनुक्रम A166623 के रूप में OEIS पर पाई जा सकती है ।

एक सकारात्मक पूर्णांक को देखते हुए , यह निर्धारित करें कि क्या यह किसी आधार ।n>0b2

नियम

  • डिफ़ॉल्ट I / O नियम लागू होते हैं, इसलिए:
    • पूर्ण कार्यक्रम या कार्य स्वीकार्य हैं।
    • इनपुट STDIN से हो सकता है, एक फ़ंक्शन तर्क के रूप में, और आउटपुट STDOUT में हो सकता है, फ़ंक्शन रिटर्न मान के रूप में, आदि।
  • डिफ़ॉल्ट कमियां लागू होती हैं।
  • आउटपुट दो अलग, सुसंगत परिणामों में से एक होना चाहिए। तो TRUEसत्य के लिए ठीक है और FALSEमिथ्या के लिए ठीक है, लेकिन आप इसे उल्टा कर सकते हैं या Noneसच्चाई के लिए और 1मिथ्या या जो भी हो के लिए वापस आ सकते हैं । कृपया अपने उत्तर में चयनित परिणामों को निर्दिष्ट करें।
  • आपके उत्तर को किसी भी सकारात्मक पूर्णांक के लिए कम से कम सैद्धांतिक रूप से काम करना होगा।
  • मुंचुसेन संख्याएँ कन्वेंशन उपयोग करती हैं , इसलिए बेस -2 मुनक्युसेन नंबर । आपके कोड को इस सम्मेलन का पालन करना चाहिए।00=1211+00=2
  • स्पष्टीकरण दृढ़ता से प्रोत्साहित किया जाता है, भले ही प्रस्तुतियाँ सबसे अधिक संभावना बल-बल खोज विधि का उपयोग करें।
  • गूढ़ भाषाओं का उपयोग करने से आपको ब्राउनी अंक मिलते हैं क्योंकि मुनचूसन स्पष्ट रूप से एक अजीब व्यक्ति था।

परीक्षण के मामलों

Truthy
1 (all bases)
2 (base 2)
5 (base 3)
28 (base 9 and base 25)
29 (base 4)
55 (base 4)
3435 (base 10)
923362 (base 9)
260 (base 128)
257 (base 64 and base 253)

Falsy
3
4
591912
3163
17

यह , इसलिए प्रत्येक भाषा में सबसे कम उत्तर (बाइट्स में) जीतता है!


क्या हम मान सकते हैं कि अधिकतम आधार जो हमें गणना करने की आवश्यकता है वह ३५/३६ है?
बेंजामिन यूरेखर्ट

7
@BenjaminUrquhart नहीं तुम नहीं हो सकते; determine if it's a Munchausen number in any base b≥2.
गिउसेप्पे

कैसे के बारे में सिर्फ अनुमान लगा "नहीं।" एक पूर्णतः अनंत संख्या में पूर्णांक और एक निश्चित रूप से परिमित संख्या में मुंचुसेन हैं, इसलिए मुंचुसेन संख्या को चुनने की संभावना (n) / (Infinity) = 0 है। // बतख और रन
कार्ल विटथॉफ्ट

@CarlWitthoft मैं इस सुझाव पर हँसा, लेकिन निश्चित रूप से यह एक अमान्य सबमिशन होगा :-)
Giuseppe

जवाबों:


13

05AB1E , 7 बाइट्स

LвDmOQZ

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

बड़े परीक्षण मामलों का समय TIO पर निकलेगा।

व्याख्या

L         # push range [1 ... input]
 в        # convert input to a digit list in each of these bases
  Dm      # raise each digit to the power of itself
    O     # sum each
     Q    # check each for equality with input
      Z   # max

3
परिणामों से यह फ़िल्टरिंग बेस -1 कैसे है?
झबरा

1
@Shaggy: इस आधार रूपांतरण के साथ, सभी नंबर दिए गए हैं 1 आधार -1 में। केवल वही संख्या जो सही लौटेगी 1^1वह 1 है
Emigna

5

जेली , 8 बाइट्स

bŻ*`§ċ⁸Ị

मुनचूसन के 0लिए पैदावार और 1अन्यथा।

इसे ऑनलाइन आज़माएं!
या पहले पांच सौ धनात्मक पूर्णांक विभाजित देखने के रूप में[[Munchausen], [non-Munchausen]]

कैसे?

bŻ*`§ċ⁸Ị - Link: integer, n
 Ż       - zero-range -> [0,1,2,3,4,...,n]
b        - (n) to base (vectorises)
   `     - with left as both arguments:
  *      -   exponentiation (vectorises)
    §    - sums
     ċ   - count occurrences of:
      ⁸  -   n
       Ị - is insignificant (abs(x) <= 1)

मुनचौसेन के 1लिए वैकल्पिक और 0अन्यथा:

bŻ*`§ċ>1

उम ... मुझे क्यों लगता है कि आपका पिछला संस्करण वैध था और यह अमान्य है?
एरिक आउटोलॉफ़र

मुझे लगता है कि मेरा पिछला संस्करण अमान्य था क्योंकि यह नहीं कहता 1था कि मुनचूसन था।
जोनाथन एलन

5

जे , 33 28 27 बाइट्स

e.1#.i.@>:^~@(#.inv ::1)"0]

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

  • e. इनपुट का एक तत्व है ...
  • 1#. प्रत्येक पंक्ति का योग ...
  • i.@>: ... ] 0..input और खुद इनपुट, बाएं और दाएं के रूप में पारित ...
  • ^~@(#.inv)"0बाएं आर्ग में प्रत्येक बेस पर दायाँ arg (इनपुट) परिवर्तित करें और प्रत्येक परिणाम को अपने आप में बढ़ाएँ ^~@
  • ::1अंत में इसकी आवश्यकता है क्योंकि आप विशिष्ट रूप से आधार 1 में परिवर्तित नहीं कर सकते हैं, इसलिए यह त्रुटि है। इस स्थिति में, हम केवल 1 लौटाते हैं, जो 1 को छोड़कर किसी भी संख्या के लिए मेल नहीं खाता , जो कि हम चाहते हैं

4

आर , 72 69 बाइट्स

-1 बाइट को digEmAll के लिए धन्यवाद

function(x){for(b in 1+1:x)F=F|!sum((a=x%/%b^(0:log(x,b))%%b)^a)-x;F}

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

TRUEMunchausen संख्या और FALSEअन्यथा के लिए आउटपुट ।

x%/%b^(0:log(x,b))%%b)xआधार में कनवर्ट करता है b, और लूप के लिए बाकी काम करता है (पुन: असाइन करना F, जो FALSEडिफ़ॉल्ट रूप से होता है)।

हमें मामले को संभालने के बजाय आधार bको सभी तरह से जाने की अनुमति देने की आवश्यकता है ।x+1xx=1



@digEmAll धन्यवाद! मैंने पूर्णांक के बजाय बूलियन का उपयोग करके एक और 2 बाइट्स का मुंडन किया।
रॉबिन राइडर

मैं समझता हूँ कि आप क्या बदल रहा है के अलावा खदान से 2 बाइट्स को बचाने के लिए बदल कोशिश कर रहा था +के साथ |और हटाने !, तो मुझे एहसास हुआ कि मैं 71 में लिखा था, लेकिन मेरे कोड वास्तव में 70 था: डी
digEmAll

महान विचार का उपयोग करना | BTW!
digEmAll

@digEmAll ओह हाँ, मैंने भी आपकी बाइट गिनती की जाँच करने के लिए नहीं सोचा था! :)
रॉबिन राइडर

3

जाप , 13 बाइट्स

õ@ìXÄ x_pZ
øN

@ बग्घी के लिए एक बाइट धन्यवाद दिया

कोशिश करो


@ शगेट एक बाइट की कीमत पर फिक्स्ड
अज्ञानता का प्रतीक

आप की जगह है कि बाइट वापस प्राप्त कर सकते ÃÃøUके साथ <newline>øN
झबरा

@ शिग्गी अच्छी चाल के साथ N, मैंने इसे पहले कभी इस्तेमाल नहीं किया!
अज्ञानता का प्रतीक



3

जावास्क्रिप्ट (ईएस 7), 60 बाइट्स

एक बूलियन मान लौटाता है।

n=>(F=b=>(g=n=>n&&g(n/b|0)+(n%=b)**n)(n)==n||b<n&&F(b+1))(2)

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

टिप्पणी की गई

n =>                   // n = input
  ( F = b =>           // F = recursive function taking a base b
    ( g = n =>         //   g = recursive function taking an integer n
      n &&             //     if n is not equal to 0:
        g(n / b | 0) + //       do a recursive call with floor(n / b)
        (n %= b) ** n  //       and add (n mod b) ** (n mod b)
    )(n)               //   initial call to g with the original value of n
    == n ||            //   return true if the result is equal to n
    b < n &&           //   otherwise, if b is less than n:
      F(b + 1)         //     try with b + 1
  )(2)                 // initial call to F with b = 2

3

एपीएल (डीज़िमा / एपीएल) , 23 13 बाइट्स

⊢∊⊂+.*⍨⍤⊤⍨¨2

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

Adám, ngn और dzaima के लिए धन्यवाद, हम dzaima / APL का उपयोग करके इस जवाब से 10 बाइट्स दाढ़ी बनाने में कामयाब रहे।

उपसर्ग tacit फ़ंक्शन। मुनचूसन नंबर 1, और 0 वापस करते हैं।

किस तरह

⊢∊⊂+.*⍨⍤⊤⍨¨2  Prefix tacit function, argument will be called 

             2  Generate the integer sequence [2..⍵]
          ⊤⍨¨   Convert  to each base in the vector
     +.*⍨⍤       Raise each digit of each element in the vector to itself, then sum
⊢∊⊂             Check if  is in the resulting vector.


2

चारकोल , 17 बाइट्स

Nθ¬Φθ⁼θΣE↨θ⁺²ιXλλ

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। मेरा 16-बाइट का प्रयास काम नहीं आया लेकिन चारकोल में एक बग हो सकता है, इसलिए इस स्थान को देखें। आउटपुट -जब तक संख्या एक मुनचूसन संख्या है। स्पष्टीकरण:

Nθ                  Input `n` as a number
   Φθ               Try bases `2` .. `n+1`
       Σ            Sum of
         ↨θ         `n` converted to base
           ⁺²ι      Next trial base
        E           Each digit
              Xλλ   Raised to its own power
     ⁼              Equals
      θ             `n`
  ¬                 Logical Not




2

पायथन 2 , 83 81 बाइट्स

def f(n,b=2):
 s=0;m=n
 while m:k=m%b;s+=k**k;m/=b
 return s==n or b<n>0<f(n,b+1)

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

रिटर्न 1truthy के लिए और 0falsey के लिए। पुनरावृत्ति के कारण, व्यावहारिक रूप से नहीं निपट सकते हैं 591912, लेकिन यह सार में काम करता है।



1

जावास्क्रिप्ट (ईएस 6), 88 बाइट्स

f=n=>{for(b=2;n-b++;){for(c=0,r=n;r;r=(r-a)/b)c+=(a=(r%b))**a;if(n==c)return 1}return 0}

1

आइकन , 109 बाइट्स

procedure m(n)
every k:=2to n&{i:=n;s:=0
while{a:=i%k;a<:=1;s+:=a^a;0<(i/:=k)}
n=s&return 1}
return n=1|0
end

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

के लिए टाइम आउट 591912चिह्न0^0 एक अतिप्रवाह के रूप में व्यवहार करता है और इसीलिए मुझे शून्य के लिए अतिरिक्त जांच की आवश्यकता होती है।


1

स्टैक्स , 15 बाइट्स

╡!←!║╝âñoêû►╦ä▓

इसे चलाएं और डीबग करें

बड़े परीक्षण मामलों के लिए बहुत लंबा समय लगता है।

स्पष्टीकरण:

{^xs|E{c|*m|+x=m|a Full program, unpacked
                   Implicitly input x
{              m   Map over bases [1 .. x]
 ^                   Increment base (effectively mapping over [2 .. x+1])
  xs                 Tuck x below base
    |E               Get digits of x in base
      {   m          Map over digits:
       c|*             copy and power
           |+        Sum
             x=      sum = x?
                |a Check if any element in array is true
                   Implicit output
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.