এটা কি মুন্চাউসেন নাম্বার?


30

একজন Munchausen নম্বর বেস , এছাড়াও একটি নামে পরিচিত পারফেক্ট অঙ্ক টু অঙ্ক পরিবর্তিত বা PDDI পূর্ণসংখ্যা ইতিবাচক একটি অদ্ভুত ধরনের যেখানে তার base- এর সমষ্টি নিজেদের উত্থাপিত ডিজিটের সংখ্যা নিজেই সমান। তাদের নামকরণ করা হয়েছে কল্পিত ব্যারন মুনচাউসনের , যিনি স্পষ্টতই নিজেকে ডুবে যাওয়ার হাত থেকে বাঁচানোর জন্য নিজের পনিটেলের মাধ্যমে নিজেকে তুলে নিয়েছিলেন। সম্পর্কিত ধারণা হ'ল নার্সিসিস্টিক সংখ্যা

উদাহরণস্বরূপ, 1 প্রতিটি বেসে তুচ্ছভাবে একটি মুন্চাউসেন নম্বর কারণ । অতিরিক্তভাবে, প্রতিটি ধনাত্মক পূর্ণসংখ্যা সংজ্ঞা অনুসারে একটি বেস -1 মুঞ্চাউসেন নম্বর।11=1

আরও আকর্ষণীয়ভাবে, একটি বেস -10 মুন্চাউসেন সংখ্যা কারণ , এবং প্রকৃতপক্ষে কেবলমাত্র অন্যান্য বেস -10 মুঞ্চাউসেন সংখ্যা343533+44+33+55=3435

প্রতি বেসে মুনচাউসেন সংখ্যাগুলির একটি আংশিক তালিকা 35 পর্যন্ত সিকোয়েন্স A166623 হিসাবে OEIS এ পাওয়া যাবে

ধনাত্মক পূর্ণসংখ্যা দেওয়া হয়েছে তা নির্ধারণ করুন এটি কোনও বেস সংখ্যা ।n>0b2

বিধি

  • ডিফল্ট আই / ও বিধি প্রয়োগ হয়, তাই:
    • সম্পূর্ণ প্রোগ্রাম বা ফাংশন গ্রহণযোগ্য।
    • ফাংশন আর্গুমেন্ট হিসাবে ইনপুট STDIN থেকে হতে পারে এবং ফাংশন রিটার্ন মান ইত্যাদি হিসাবে আউটপুট STDOUT এ যেতে পারে etc.
  • ডিফল্ট লুফোলস প্রয়োগ হয়।
  • আউটপুট অবশ্যই দুটি স্বতন্ত্র, ধারাবাহিক ফলাফলের মধ্যে একটি হতে হবে। সুতরাং TRUEtruthy জন্য ভালো এবং FALSEfalsy জন্য ভালো, কিন্তু এই বা রিটার্ন বিপরীত করতে Nonetruthy এবং 1জন্য falsy বা যাই হোক না কেন। আপনার উত্তরে নির্বাচিত ফলাফলগুলি নির্দিষ্ট করুন।
  • আপনার উত্তরটি কোনও ধনাত্মক পূর্ণসংখ্যার জন্য কমপক্ষে তাত্ত্বিকভাবে কাজ করতে হবে।
  • Munchausen সংখ্যার কনভেনশন ব্যবহার 00=1 , তাই 2 যেমন একটি বেস-2 Munchausen সংখ্যা 11+00=2 । আপনার কোড অবশ্যই এই সম্মেলন অনুসরণ করবে।
  • ব্যাখ্যাগুলি দৃ strongly়ভাবে উত্সাহিত করা হয়, যদিও জমাগুলি সম্ভবত ব্রুট-ফোর্স অনুসন্ধান পদ্ধতিটি ব্যবহার করবে।
  • মূল ভাষাগুলি ব্যবহার করা আপনার ব্রাউনি পয়েন্টগুলি অর্জন করে যেহেতু মুনচাউসেন দৃশ্যত একটি অদ্ভুত ব্যক্তি।

পরীক্ষার মামলা

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

এটি , তাই প্রতিটি ভাষায় সংক্ষিপ্ত উত্তর (বাইটে) জেতে!


আমরা যে সর্বাধিক বেসটি গণনা করতে হবে তা অনুমান করতে পারি 35/36?
বেনজামিন আরউখার্ট

7
@ বেঞ্জামিন উর্খার্ট আপনি নাও পারেন; determine if it's a Munchausen number in any base b≥2.
জিউসেপ

কীভাবে কেবল "না" অনুমান করা যায়। অগণিত সংখ্যার পূর্ণসংখ্যার সংখ্যা এবং মুনচাউসেন্সের একটি সীমাবদ্ধ সংখ্যা রয়েছে, তাই মুন্চাউসেন সংখ্যাটি বেছে নেওয়ার সম্ভাবনা হ'ল (এন) / (অনন্ত) = 0। // হাঁস এবং রান
কার্ল উইথথফট

@ কার্লউইথহফট এই পরামর্শটি শুনে আমি হেসেছিলাম, তবে অবশ্যই এটি একটি অবৈধ জমা হবে :-)
জিউসেপে

উত্তর:


13

05 এ বি 1 ই , 7 বাইট

LвDmOQZ

এটি অনলাইন চেষ্টা করুন!

বৃহত্তর পরীক্ষার কেসগুলি টিআইও-তে শেষ হয়ে যাবে।

ব্যাখ্যা

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
এমিগিনা

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..আপনি এবং ইনপুট নিজেই বাম এবং ডান আরোগুলি হিসাবে পাস করেছে ...
  • ^~@(#.inv)"0বাম দিকের আর্গের প্রতিটি বেসে ডান আরগ (ইনপুট) রূপান্তর করুন এবং প্রতিটি ফলাফলকে নিজেই মূল দিকে উত্থাপন করুন ^~@
  • ::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}

এটি অনলাইন চেষ্টা করুন!

TRUEমুন্চাউসেন সংখ্যা এবং FALSEঅন্যথায় আউটপুট ।

x%/%b^(0:log(x,b))%%b)xবেসে রূপান্তরিত হয় bএবং ফর লুপটি বাকী কাজ করে (পুনরায় নির্ধারণ F, যা FALSEপূর্বনির্ধারিত হয়)।

আমাদের কেসটি পরিচালনা bকরার x+1পরিবর্তে বেসটি সমস্ত পথে যেতে দেওয়া দরকার ।xx=1



@ ডিগেম সমস্ত ধন্যবাদ! আমি পূর্ণসংখ্যার পরিবর্তে বুলিয়ান ব্যবহার করে আরও 2 বাইট ছাঁটাই করেছি।
রবিন রাইডার

আমি আমার সাথে 2 টি বাইট সংরক্ষণ করার +সাথে সাথে পরিবর্তন |এবং অপসারণের !পরিবর্তে কী বুঝতে পেরেছিলাম তা বুঝতে চেষ্টা করছিলাম, তখন আমি বুঝতে পেরেছিলাম আমি 71 লিখেছি কিন্তু আমার কোডটি আসলে 70: D
digEmAll

ব্যবহার করে দুর্দান্ত ধারণা | বিটিডব্লিউ!
digEmAll

@ ডিগেম সমস্ত ওহ হ্যাঁ, আমি আপনার বাইট গণনা পরীক্ষা করার জন্য ভাবিও নি! :)
রবিন রাইডার

3

জাপট , 13 বাইট

õ@ìXÄ x_pZ
øN

@ শেগগিকে একটি বাইট সংরক্ষণ করা হয়েছে

চেষ্টা করে দেখুন


@ শেগি একটি বাইটের মূল্যে স্থির করেছেন
অজ্ঞতার

আপনি প্রতিস্থাপন যে বাইট ফিরে পেতে পারেন ÃÃøUসঙ্গে <newline>øN
শেগি

@ শেগি সুন্দর কৌশলটি সহ N, আমি এর আগে কখনও ব্যবহার করিনি!
অজ্ঞতার মূর্ত প্রতীক



3

জাভাস্ক্রিপ্ট (ES7), 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

এটি অনলাইন চেষ্টা করুন!

অ্যাডাম, এনএনজি এবং ডিজাইমাকে ধন্যবাদ, আমরা জাজাইমা / এপিএল ব্যবহার করে এই উত্তরটি বন্ধ করে 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-বাইট প্রচেষ্টা চেষ্টা করে না তবে এটি কাঠকয়লে একটি বাগ হতে পারে, তাই এই স্থানটি দেখুন। আউটপুট -যদি না একটি Munchausen সংখ্যা। ব্যাখ্যা:

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

সি (জিসিসি) -lm , 79 75 বাইট

f(n,b,i,g,c){for(g=b=1;b+++~n;g*=!!c)for(c=i=n;c-=pow(i%b,i%b),i/=b;);n=g;}

এটি অনলাইন চেষ্টা করুন!

0মুন্চাউসেন সংখ্যাগুলি এবং 1অন্যথায় ফেরত দেয় ।


এছাড়াও 75 বাইট

a,b;f(n){for(a=b=1;b+++~n;a*=g(n)!=n);n=a;}g(n){n=n?g(n/b)+pow(n%b,n%b):0;}

এটি অনলাইন চেষ্টা করুন!


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

জাভাস্ক্রিপ্ট (ES6), 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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.