সেরা বেস 10… আসুন এটি পৌঁছে দিন!


40

ইনপুট:

একটি ধনাত্মক পূর্ণসংখ্যা n 0-9 সীমাতে সংখ্যা সমন্বিত ।

চ্যালেঞ্জ:

যদি পূর্ণসংখ্যার মধ্যে d হ'ল সর্বোচ্চ অঙ্ক হয় তবে ধরে নিন যে সংখ্যার ভিত্তি d + 1 হবে । উদাহরণস্বরূপ, যদি পূর্ণসংখ্যা 1256 হয় তবে আপনি এটি বেস -7 এ ধরে নিতে পারেন , যদি এটি 10110 হয় তবে আপনি এটি বেস -2 (বাইনারি) ধরে নিতে পারেন, এবং যদি এটি 159 হয় তবে এটি দশমিক।

এখন আপনি নিম্নলিখিতটি নিম্নলিখিতটি করুন, 1: বেস -10 পূর্ণসংখ্যায় পৌঁছান বা 2: একক অঙ্কের পূর্ণসংখ্যায় পৌঁছান।

  1. পূর্ণসংখ্যাটি বেস- (d + 1) থেকে বেস -10 এ রূপান্তর করুন
  2. এই নতুন পূর্ণসংখ্যার ভিত্তি (আবার, বেস- (d + 1) সন্ধান করুন যেখানে d নতুন সংখ্যায় সর্বোচ্চ সংখ্যা)
  3. পদক্ষেপ 1 এ যান ।

উদাহরণ:

ধরুন ইনপুটটি n = 413574 । সর্বাধিক অঙ্কের ডি = 7 , সুতরাং এটি বেস -8 (অষ্টাল)। এটি দশমিক রূপান্তর করুন এবং 137084 পান । সর্বাধিক অঙ্কের ডি = 8 , সুতরাং এটি বেস -9 । এটি দশমিক রূপান্তর করুন এবং 83911 পান । সর্বোচ্চ অঙ্ক 9 , সুতরাং এটি একটি দশমিক সংখ্যা এবং আমরা থামি। আউটপুট 83911 হবে

ধরুন ইনপুটটি n = 13552 । সর্বোচ্চ অঙ্কটি ডি = 5 , সুতরাং এটি বেস -6 । এটি দশমিক রূপান্তর করুন এবং 2156 পান । সর্বাধিক অঙ্কের ডি = 6 , সুতরাং এটি বেস -7 । এটি দশমিক রূপান্তর করুন এবং 776 পান । সর্বাধিক অঙ্কটি ডি = 7 , সুতরাং এটি বেস -8 । এটি দশমিক রূপান্তর করুন এবং 510 পান । সর্বোচ্চ অঙ্কটি ডি = 5 তাই এটি বেস -6 । এটি দশমিক রূপান্তর করুন এবং 186 পান । সর্বোচ্চ অঙ্ক 8 , সুতরাং এটি বেস -9 । এটি দশমিক রূপান্তর করুন এবং 159 পান। সর্বোচ্চ অঙ্ক 9 , সুতরাং এটি একটি দশমিক সংখ্যা এবং আমরা থামি। আউটপুট হবে 159

ধরুন ইনপুটটি n = 17 । এটি আমাদের 15 , তারপরে 11 , তারপর 3 দেবে , যা আমরা একক অঙ্কের থেকে আউটপুট করব will


পরীক্ষার কেস:

5
5

17
3

999
999

87654321  (base-9 -> 42374116 in decimal -> base-7 -> 90419978 in decimal) 
9041998

41253  (5505 -> 1265 -> 488 -> 404 -> 104 -> 29)
29

নোট:

  • আই / ও, লুফোলস ইত্যাদি সম্পর্কিত স্ট্যান্ডার্ড বিধিগুলি আপনি ইনপুটটিকে স্ট্রিং হিসাবে নিতে পারেন
  • ব্যাখ্যা উত্সাহিত হয়
  • আপনি বিল্টইন বেস-রূপান্তর কমান্ড ব্যবহার করতে পারেন
    • ভাষার অন্তর্নির্মিত বেস-রূপান্তর ফাংশনগুলি (যদি সেগুলি বিদ্যমান থাকে) ব্যবহার না করে এমন সমাধানগুলি স্বাগত, যদিও তারা বিল্টিন ফাংশনগুলি ব্যবহার করে সুস্পষ্ট পদ্ধতির চেয়ে অনেক বেশি দীর্ঘস্থায়ী হয়।

স্পষ্টতই, এটি OEIS A091047


2
স্পষ্টতই আমি ম্যাট্রিক্স পছন্দ করি , তাই আমি ভেবেছিলাম পরিবর্তে একটি বেস-রূপান্তর চ্যালেঞ্জ করব।
স্টিভি গ্রিফিন

34
"সেরা বেস 10" ... "10" কোন বেসে রচিত?
অলিভিয়ার গ্রাগোয়ার

5
পছন্দ করুন
স্টিভি গ্রিফিন

@ স্টেভিগ্রিফিন কিন্তু আপনি এটি কীভাবে পড়বেন? প্রতিটি বেসে "10" এর আলাদা নাম রয়েছে।
ব্যবহারকারী 11153

10
ঠিক আছে, এটি বেসের উপর নির্ভর করে ... বা মেঘান যেমন এটি বলে যে "এটি সমস্ত ভিত্তি সম্পর্কে, 'তবে সেই বেসটি কোনও সমস্যা নয়" ;-)
স্টিভি গ্রিফিন

উত্তর:


20

গণিত, 56 বাইট

#//.x_/;(b=Max[d=IntegerDigits@x]+1)<11:>d~FromDigits~b&

এটি অনলাইন চেষ্টা করুন! (গণিত ব্যবহার করে।)

আমি ভেবেছিলাম ক্রমটি দেখতে কেমন তা যাচাই করব:

এখানে চিত্র বর্ণনা লিখুন

এবং ফলাফলটি পেতে এটি কতগুলি পদক্ষেপ নেয় তার একটি প্লট এখানে রয়েছে:

এখানে চিত্র বর্ণনা লিখুন

(বৃহত্তর সংস্করণগুলির জন্য ক্লিক করুন only শুধুমাত্র এন = 1000 অবধি প্লটের জন্য সংশোধন ইতিহাস দেখুন ))

বড় আকারের কাঠামো এবং সূক্ষ্ম স্কেল বিশৃঙ্খলার খুব আকর্ষণীয় মিশ্রণের মতো দেখায়। আমি প্রায় 30,000 এবং 60,000 এর বিস্তৃত ফাঁকগুলি নিয়ে কী ঘটছে তা অবাক করি।


4
@ স্টেভিগ্রিফিনটি বাম দিকে থাকা উচিত। ছোট ফাঁকগুলি আছে, কারণ 10 পাওয়ারের একাধিক সংখ্যার দিকে পরিচালিত সংখ্যায় একটি রয়েছে 9, সুতরাং তারা ইতিমধ্যে 10 বেসে রয়েছে তবে 30 কে এবং 60 কে এর জন্য মনে হয় যে এটি 8 বা এমনকি 7 সহ সংখ্যাগুলি আছে ( চেক) 9 এর জায়গায় সর্বদা এক পদক্ষেপের পরে 10 বেস হয়ে যান।
মার্টিন ইন্ডার

@ স্টেভি গ্রিফিন সুনির্দিষ্টভাবে বলতে গেলে, পরিসরের সমস্ত সংখ্যা [২৮০৫১, ২৮৮৮৮] 9 ভিত্তি 9 এবং 19xxx ফর্মের সংখ্যায় অনুবাদ করেছে, ফলে এই ফাঁকটি দ্বিগুণ হবে।
সিমেস্টার

আহ, এটি পেয়েছে ... :) রেকর্ডের জন্য: আমি জানতাম কেন 10 এর দশকের শক্তির বাম দিকে ফাঁক ছিল ... এটি কেবলমাত্র দ্বিগুণ আকারের ফাঁকগুলি ছিল যে আজব ছিল (কেন 30/60, এবং 20 / নয়) 40/50)। আমি এখন দেখতে পাচ্ছি যে এই সংখ্যাগুলি 28xxx -> 19xxx, তবে 38xxx -> 26xxx নয়, 29xxx এর মধ্যে রয়েছে।
স্টিভি গ্রিফিন

10

জাভা 8, 172 166 163 152 151 140 138 116 114 99 বাইট

s->{for(Integer b=0;b<10&s.length()>1;s=""+b.valueOf(s,b=s.chars().max().getAsInt()-47));return s;}

এ হিসাবে ইনপুট নেয় String

-64৪ বাইট @ অলিভিগ্রগ্রোয়ারকে ধন্যবাদ । এবং এখানে আমি ভেবেছিলাম আমার প্রাথমিক 172 খুব খারাপ ছিল না ..;)

এখানে চেষ্টা করুন।

ব্যাখ্যা:

s->{                    // Method with String as parameter and return-type
  for(Integer b=0;b<10  //  Loop as long as the largest digit + 1 is not 10
      &s.length()>1;    //  and as long as `s` contains more than 1 digit
    s=""+               //   Replace `s` with the String representation of:
         b.valueOf(s,   //    `s` as a Base-`b` integer
          b=s.chars().max().getAsInt()-47)
                        //     where `b` is the largest digit in the String + 1
  );                    //  End of loop
  return s;             //  Return result-String
}                       // End of method

1
শান্ত থাকার প্রতিশ্রুতি দিচ্ছেন? : P ওকে ... চলো যাই: s->{for(Integer b=0;b<10&s.length()>1;)s=""+b.valueOf(s,b=s.chars().max().getAsInt()-47);return s;}। এছাড়াও আমি আমার বেশিরভাগ মন্তব্য মুছে ফেলেছি কারণ তারা এখন সম্পূর্ণ অপ্রাসঙ্গিক ( bএটি বেস, আপনার a; এবং sআমরা যে সংখ্যাটি নিয়ে কাজ করছি)।
অলিভিয়ার গ্রাগোয়ার

1
আমি এর সাথে কিছু বাইট ছাঁটাই করতে পুনরাবৃত্তি করার চেষ্টা করেছি: Integer b;return(b=s.chars().max().getAsInt()-47)>9|s.length()<2?s:c(""+b.valueOf(s,b));(৮৮), তবে আমি কোড গল্ফে একেবারেই নতুন। এটি একটি স্নিপপেট, তাই না? এটি যুক্ত করার প্রয়োজন ছাড়াই এটিকে কোনও পদ্ধতি হিসাবে ঘোষণা করার কোনও উপায় আছে public String c(String s)?
লর্ড ফারকোয়াড

1
@ লর্ডফারাকোয়াড আপনার প্রয়োজন নেই public, তবে আমি ভয় পাচ্ছি যে আপনি String c(String s){}জাভা ৮- তেও অবশ্যই পুনরাবৃত্তি-কলগুলির জন্য ব্যবহার করতে হবে যখন আপনি একটি ল্যাম্বডা ব্যবহার করে java.util.function.Function<String, String> c=s->{Integer b;return(b=s.chars().max().getAsInt()-47)>9|s.length()<2?s:c‌.apply​(""+b.valueOf(s,b));}বা ইন্টারফেস ব্যবহার করে interface N{String c(String s);}N n = s->{Integer b;return(b=s.chars().max().getAsInt()-47)>9|s.length()<2?s:n.c‌​(""+b.valueOf(s,b));};এটি " আরম্ভকারীতে স্ব-রেফারেন্স দেবেন" ত্রুটি "উভয় ক্ষেত্রে। তবে তবুও খুব সুন্দর পদ্ধতির!
কেভিন ক্রুইজসেন

আহ, আমি অনুমান করেছি যে আমি তখন এটি কয়েক বাইটে অগল্ফড করেছি। কিন্তু সাহায্যের জন্য ধন্যবাদ! আমি এই বিষয়টি সামনে রেখে মনে রাখব।
লর্ড ফারকোয়াড

8

পাইথ, 9 বাইট

ui`GhseS`

পরীক্ষা স্যুট

ব্যাখ্যা:

ui`GhseS`
ui`GhseS`GQ    Implicit variable introduction
u         Q    Repeatedly apply the following function until the value repeats,
               starting with Q, the input.
        `G     Convert the working value to a string.
      eS       Take its maximum.
     s         Convert to an integer.
    h          Add one.
 i`G           Convert the working value to that base

আপনি কীভাবে একটি দ্বি-ভেরিয়েবল ল্যাম্বডা ব্যবহার করে একটি ভেরিয়েবল ব্যবহার করে শেষ করেছেন তা কিছুটা অদ্ভুত it ওহ, দুটি পরিবর্তনশীল Qএবং Qআমি এটি পেয়েছি।
এরিক আউটগল্ফার

পছন্দ করেছেন uতৃতীয় ইনপুট ব্যতীত পুনরাবৃত্তি হওয়া পর্যন্ত প্রয়োগ করা হয়, তৃতীয় ইনপুট সহ এটি একটি নির্দিষ্ট সংখ্যক বার প্রয়োগ করা হয়। uল্যাম্বদা আছে Gএবং Hতবে আপনার ব্যবহারের দরকার নেই H
isaacg

আসলে প্রতিস্থাপন Gসঙ্গে Hহায় করেছি একই ফলাফল ছিল ... BTW অন্তর্নিহিত পরিবর্তনশীল G?
এরিক আউটগলফার

@ এরিকথিউটগল্ফার অন্তর্নিহিত পরিবর্তনশীল Gহ্যাঁ, হ্যাঁ। Hপ্রতিটি পুনরাবৃত্তির সাথে 0 থেকে উপরে গণনা করা হয়, সুতরাং এটি সম্পূর্ণ আলাদা। আপনি কী বলছেন তা আমি সত্যিই নিশ্চিত নই। কী চলছে তা আপনাকে দেখানোর জন্য এখানে একটি উদাহরণ প্রোগ্রাম রয়েছে: pyth.herokuapp.com/…
isaacg

6

জাভাস্ক্রিপ্ট (ES6), 63 57 54 53 বাইট

f=a=>a>9&(b=Math.max(...a+""))<9?f(parseInt(a,b+1)):a

শেগি এবং ডম হেস্টিংসকে 8 বাইট সংরক্ষণ করে

f=a=>a>9&(b=Math.max(...a+""))<9?f(parseInt(a,b+1)):a;

console.log(f("413574"))


আমাকে এটি মারধর। আমি মনে করি আপনি +a>9||b<9টার্নারিটি দিয়ে এবং বিপরীতে কয়েকটি বাইট সংরক্ষণ করতে পারেন ।
শেগি

1
@ শেগি এডিট করুন: আমি বোবা
টম

1
টম নিজের উপর এত কষ্ট করবেন না! আপনি বোবা নন ,,, তবে আপনি অবশ্যই @ শেগির মতো স্মার্ট নন!
স্টিভি গ্রিফিন

1
55 বাইটের বিকল্পf=n=>n>9&&(k=Math.max(...n+"")+1)<10?f(parseInt(n,k)):n
ডোম হেস্টিংস

@ ডোমহাস্টিংস উন্নতির জন্য ধন্যবাদ! :)
টম

5

পাইথন 3 , 91 78 76 75 73 বাইট

@ এমিগনা 5 টি বাইট বন্ধ করে দিয়েছেন @ ফিলিপনার্ডিবাটিস্তা 1 বাইট সংরক্ষণ করেছে @ রোমানগ্রাফ 2 বাইট সংরক্ষণ করেছেন

i=input()
while'9'>max(i)and~-len(i):i=str(int(i,int(max(i))+1))
print(i)

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


ব্যাখ্যা

i=input()                                  - takes input and assigns it to a variable i
while '9'>max(i)and~-len(i):               - repeatedly checks if the number is still base-9 or lower and has a length greater than 1
    i=str(...)                             - assigns i to the string representation of ...
          int(i,int(max(i))+1)             - converts the current number to the real base 10 and loops back again
print(i)                                   - prints the mutated i

5

05 এ বি 1 ই , 10 5 বাইট

5 বাইট সংরক্ষণ করেছেন ম্যাজিক অক্টোপাস উরনের জন্য ধন্যবাদ

F§Z>ö

বড় ইনপুটটির জন্য এটি যেহেতু খুব দ্রুত ধীরে ধীরে বেড়ে যায়, আমি পরীক্ষার জন্য এখানে পুরানো অনেক দ্রুত সংস্করণটি রেখে দিচ্ছি। অ্যালগরিদম একই, কেবল পুনরাবৃত্তির সংখ্যা পৃথক।

[©Z>öD®Q#§

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

ব্যাখ্যা

[             # start a loop
 ©            # store a copy of the current value in the register
  Z>          # get the maximum (digit) and increment
    ö         # convert the current value to base-10 from this base
     D        # duplicate
      ®Q#     # break loop if the new value is the same as the stored value
         §    # convert to string (to prevent Z from taking the maximum int on the stack)

এছাড়াও, আপনি কি শুধু ব্যবহার করতে পারবেন না тFZ>ö§? পুনরাবৃত্তির সংখ্যা হিসাবে দেখা ( এখানে দেখা যায় ) মালভূমি বলে মনে হচ্ছে? আপনি যদি প্রযুক্তিগত পেতে চান, যে হারে পুনরাবৃত্তিগুলি বৃদ্ধি পায় সম্ভবত লোগারিথমিক ... সুতরাং আপনি কেবল এর মতো কিছু ব্যবহার করতে পারেন: DFZ>ö§এবং বলুন যে এটি বড় আকারে চলবে না n। অথবা হতে পারে এমনকি: T.n>FZ>ö§পুনরাবৃত্তির সংখ্যা হিসাবে সরাসরি গণনা করতে log_10(n)
ম্যাজিক অক্টোপাস উরন

@ ম্যাজিক অ্যাক্টোপাস উর্ন: হ্যাঁ, এখন আপনি এটি উল্লেখ করেছেন, কারণ ক্রমটি অবশ্যই লিনিয়ারের চেয়ে ধীর বলে মনে হচ্ছে, F§Z>öকৌশলটি করা উচিত।
এমিগিনা

আমি মনে করি আপনি এটি মুছে ফেলতে পারেন §
এরিক দ্য আউটগল্ফার

@ এরিকথ আউটগল্ফার: দুর্ভাগ্যক্রমে না। আমরা যদি অপসারণ §, Zস্ট্যাক পরিবর্তে স্ট্যাকের উপর সংখ্যা সর্বোচ্চ অঙ্ক সর্বোচ্চ সংখ্যা নিতে হবে।
Emigna


3

এপিএল (ডায়ালগ) , 20 16 বাইট

একটি স্ট্রিং নেয় এবং ফেরত দেয়

((⍕⊢⊥⍨1+⌈/)⍎¨)⍣≡

()⍣≡ পর পর দুটি পদ অভিন্ন না হওয়া পর্যন্ত নিম্নলিখিত ফাংশনটি প্রয়োগ করুন:

⍎¨ প্রতিটি অক্ষর সম্পাদন করুন (স্ট্রিংটিকে সংখ্যার তালিকায় পরিণত করে)

() এটিতে নিম্নলিখিত সূক্ষ্ম ফাংশন প্রয়োগ করুন:

  ⌈/ যুক্তির সর্বাধিক সন্ধান করুন

  1+ এক যোগ কর

  ⊢⊥⍨ সেই ভিত্তিতে যুক্তিটি মূল্যায়ন করুন

   ফর্ম্যাট (বাহ্যিক ক্রিয়াকলাপের অন্য অ্যাপ্লিকেশনের প্রস্তুতিতে স্ট্রিংফাই)

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



3

গণিত, 52 বাইট

FromDigits[s=IntegerDigits@#,Max@s+1]&~FixedPoint~#&

খাঁটি ফাংশন ইনপুট হিসাবে একটি nonnegative পূর্ণসংখ্যা গ্রহণ এবং একটি nonnegative পূর্ণসংখ্যা ফিরে। জেনি_ম্যাথির উত্তরেরFromDigits[s=IntegerDigits@#,Max@s+1] মতো একই কোর মেকানিক ব্যবহার করে তবে পুনরাবৃত্তিটি করতে কাজে লাগায় ।FixedPoint


3

পার্ল 6 , 49 বাইট

{($_,{.Str.parse-base(1+.comb.max)}...*==*).tail}

এটা পরীক্ষা করো

সম্প্রসারিত:

{
  (

    $_,                 # seed the sequence with the input

    {
      .Str
      .parse-base(      # parse in base:
        1 + .comb.max   # largest digit + 1
      )
    }

    ...                 # keep generating values until

    * == *              # two of them match (should only be in base 10)

  ).tail                # get the last value from the sequence
}


2

পিপ , 17 বাইট

Wa>9>YMXaaFB:1+ya

কমান্ড-লাইন আর্গুমেন্ট হিসাবে ইনপুট নেয়। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

এটি মজাদার ছিল - আমি চেইনিং তুলনা অপারেটরদের খুঁজে বের করতে পেরেছি।

সংখ্যাটি একক অঙ্ক না হওয়া পর্যন্ত বা লুপ করতে চাই অথবা একটি সংখ্যা 9 থাকে তবে সমানভাবে, সংখ্যাটি একাধিক অঙ্কের থাকা অবস্থায় আমরা লুপ করতে চাই এবং 9টি সমান নয়, লুপটি যখন 9 এর চেয়ে বেশি হয় এবং সর্বোচ্চ সংখ্যা হয় 9 কম: a>9>MXa

Wa>9>YMXaaFB:1+ya
                   a is 1st cmdline arg (implicit)
     YMXa          Yank a's maximum digit into the y variable
Wa>9>              While a is greater than 9 and 9 is greater than a's max digit:
         aFB:1+y    Convert a from base 1+y to decimal and assign back to a
                a  At the end of the program, print a

2

পাইথন 2 , 60 59 56 53 বাইট

সংরক্ষণ 4 বাইট ধন্যবাদ ফেলিপে Nardi বাতিস্তা
সংরক্ষিত 3 ধন্যবাদ বাইট ovs

f=lambda x,y=0:x*(x==y)or f(`int(x,int(max(x))+1)`,x)

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

পূর্ববর্তী পুনরাবৃত্তির সাথে বেস রূপান্তরের ফলাফলের তুলনা করে একটি পুনরাবৃত্ত ল্যাম্বদা ব্যবহার করা।


কেন ব্যবহার করবেন x==y and x or ...যেমন xহতে হবে না 0(বেস 1)। বা এমনকি(x==y)*x or ...
ফিলিপ নারদী বাটিস্তা

@ ফিলিপনার্দিবাটিস্তা: ধন্যবাদ! আমি চেষ্টা করেছি x and x==y or ...যা কার্যকর হয়নি, তবে আমি এই কৌশলগুলি নিয়ে খুব বেশি দক্ষ নই তাই আমি বুঝতে পারি না যে আমি এটির বিপরীত হতে পারি :)
এমিগানা

@ ওভস: ঠিক আপনি আছেন ধন্যবাদ!
এমিগনা

@ ফিলিপনার্দিবাটিস্টা "ইনপুট: 0-9 সীমাতে সংখ্যার সমন্বয়ে একটি ধনাত্মক পূর্ণসংখ্যা n" " 0 এখনও বৈধ ইনপুট, এবং এখন কোড এটিকে প্রত্যাখ্যান করে।
মাস্তে

@ বিস্তৃত: সৌভাগ্যক্রমে আমাদের জন্য, 0 ইতিবাচক পূর্ণসংখ্যার নয় তাই এটি ইনপুট হিসাবে দেওয়া হবে না।
Emigna

2

সি #, 257 244 243 244 233 222 বাইট

using System.Linq;z=m=>{int b=int.Parse(m.OrderBy(s=>int.Parse(s+"")).Last()+""),n=0,p=0;if(b<9&m.Length>1){for(int i=m.Length-1;i>=0;i--)n+=int.Parse(m[i]+"")*(int)System.Math.Pow(b+1,p++);return z(n+"");}else return m;};

ঠিক আছে, সি # সর্বদা প্রচুর বাইট নেয় তবে এটি কেবল হাস্যকর। বিল্ট-ইনগুলির কেউই একটি স্বেচ্ছাচারী বেস পরিচালনা করতে পারে না, তাই আমাকে নিজেই রূপান্তর গণনা করতে হয়েছিল। Ungolfed:

using System.Linq;
z = m => {
int b = int.Parse(m.OrderBy(s => int.Parse(s + "")).Last()+""), n = 0, p = 0; //Get the max digit in the string
if (b < 9 & m.Length > 1) //if conditions not satisfied, process and recurse
{
    for (int i = m.Length - 1; i >= 0; i--)
        n += int.Parse(m[i] + "") * (int)System.Math.Pow(b+1, p++); //convert each base-b+1 representation to base-10
    return z(n + ""); //recurse
}
else return m; };

1

গণিত, 92 বাইট

f[x_]:=FromDigits[s=IntegerDigits@x,d=Max@s+1];(z=f@#;While[d!=10&&Length@s>1,h=f@z;z=h];z)&

1

জাভাস্ক্রিপ্ট (ES6) 0 টি তীর ফাংশন, 74 বাইট সহ

function f(a){a>9&&b=Math.max(...a)<9&&f(parseInt(a,b+1));alert(a)}f('11')

3
পিপিসিজিতে আপনাকে স্বাগতম! :) এটি সম্ভবত খুব সুন্দর উত্তর, তবে আমি কোনও ব্যাখ্যা ছাড়াই বলতে পারি না। আমি (এবং সম্ভবত অন্যরা) এর উত্তরগুলিকে কখনই উচ্চারণ করি না যার ব্যাখ্যা নেই।
স্টিভি গ্রিফিন

1
আপনি কেন f('11')অনুষ্ঠানের পরে ফোন করছেন ? আমি যদি এমন কিছু মিস করছি যা কেবলমাত্র ব্যবহার হিসাবে দেখা যাচ্ছে তবে তা আসলে জমা দেওয়ার অংশ নয়। যদি তাই হয়, আপনি এটি কোড ধারা গ্রহণ করা উচিত এবং 67. আপনার ব্যাখ্যা রাখা (আপনি এক যোগ যখন) এবং আপনার বাইট গণনা আপডেট
PunPun1000

1

K4 , 19 বাইট

সমাধান:

{(1+|/x)/:x:10\:x}/

উদাহরণ:

q)\
  {(1+|/x)/:x:10\:x}/413574
83911
  {(1+|/x)/:x:10\:x}/13552
159
  {(1+|/x)/:x:10\:x}/17
3
  {(1+|/x)/:x:10\:x}/41253
29    

ব্যাখ্যা:

/:বেস রূপান্তর করতে অন্তর্নির্মিত ব্যবহার করুন ।

{(1+|/x)/:x:10\:x}/ / the solution
{                }/ / converge lambda, repeat until same result returned
            10\:x   / convert input x to base 10 (.:'$x would do the same)
          x:        / store in variable x
 (     )/:          / convert to base given by the result of the brackets
    |/x             / max (|) over (/) input, ie return largest
  1+                / add 1 to this

1

কোটলিন , 97 বাইট

fun String.f():String=if(length==1||contains("9"))this else "${toInt(map{it-'0'}.max()!!+1)}".f()

শোভিত

fun String.f(): String = if (length == 1 || contains("9")) this else "${toInt(map { it - '0' }.max()!! + 1)}".f()

পরীক্ষা

fun String.f():String=if(length==1||contains("9"))this else "${toInt(map{it-'0'}.max()!!+1)}".f()
val tests = listOf(
        5 to 5,
        17 to 3,
        999 to 999,
        87654321 to 9041998,
        41253 to 29
)

fun main(args: Array<String>) {
    tests.forEach { (input, output) ->
        val answer = input.toString().f()
        if (answer != output.toString()) {
            throw AssertionError()
        }
    }
}

Tio

TryItOnline





0

স্কালা , 119 বাইট

if(x.max==57|x.length==1)x else{val l=x.length-1
f((0 to l).map(k=>(((x(k)-48)*math.pow(x.max-47,l-k))) toInt).sum+"")}

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

স্কালা , 119 বাইট

if(x.max==57|x.length==1)x else f((0 to x.length-1).map(k=>(((x(k)-48)*math.pow(x.max-47,x.length-1-k))) toInt).sum+"")

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

উভয় পদ্ধতি একই পদ্ধতিতে কাজ করে তবে প্রথমটিতে আমি x.length-1একটি পরিবর্তনশীল রেখেছি এবং দ্বিতীয়টিতে আমি করি না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.