আসুন 9 এ রূপান্তর করা যাক!


21

একটি পূর্ণসংখ্যা দেওয়া n> 2 , সবচেয়ে ছোট অ-নেতিবাচক পূর্ণসংখ্যা কে মুদ্রণ করুন বা ফিরে আসুন যেমন একটি (এন, কে) = 9 , যেখানে একটি (এন, কে) দ্বারা সংজ্ঞায়িত করা হয়েছে:

  • a (n, 0) = n
  • a (n, k + 1) =
    • a (n, k) / 2 + 1 যদি a (n, k) হয় তবে
    • একটি (এন, কে) the (বেস 10 এ) এর অঙ্কগুলির যোগফল যদি (এন, কে) বিজোড় হয়

উদাহরণ

জন্য এন = 5 , প্রত্যাশিত আউটপুট ট = 4 :

a(5, 0) = 5
a(5, 1) = 7  (5² = 25 and 2 + 5 = 7)
a(5, 2) = 13 (7² = 49 and 4 + 9 = 13)
a(5, 3) = 16 (13² = 169 and 1 + 6 + 9 = 16)
a(5, 4) = 9  (16 / 2 + 1)

জন্য এন = 40 , প্রত্যাশিত আউটপুট ট = 2 :

a(40, 0) = 40
a(40, 1) = 21 (40 / 2 + 1)
a(40, 2) = 9  (21² = 441 and 4 + 4 + 1 = 9)

ব্যাখ্যা এবং বিধি

  • ইনপুটটি 2 এর বেশি হওয়ার গ্যারান্টিযুক্ত।
  • আপনার প্রোগ্রামটি তাত্ত্বিকভাবে এন এর যে কোনও মানের জন্য কাজ করা উচিত । (অনুশীলনে, এটি আপনার ভাষা দ্বারা সর্বাধিক পূর্ণসংখ্যার আকারের দ্বারা সীমাবদ্ধ হতে পারে))
  • k হয় 0-indexed বা 1-indexed হতে পারে। আপনার উত্তরে এটি বিবরণ করুন।
  • এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর!

প্রথম মান

নীচে থেকে প্রথম মান এন = 3 থেকে এন = 422 সঙ্গে, 0-ইন্ডেক্স। (1-ইনডেক্সিংয়ের জন্য, কেবল 1এই মানগুলিতে যুক্ত করুন ))

 1  2  4  3  3  5  0  4  3  4  2  6  1  1  6  5  5  4  1  5  2  3  3  7  6  2  3  2  2  7
 6  6  5  6  6  5  1  2  2  6  6  3  1  4  3  4  4  8  1  7  6  3  5  4  6  3  2  3  3  8
 7  7  3  7  4  6  6  7  5  7  6  6  6  2  4  3  3  3  6  7  3  7  2  4  7  2  6  5  6  4
 7  5  2  5  6  9  6  2  3  8  2  7  1  4  6  6  6  5  1  7  4  4  3  3  7  4  3  4  2  9
 6  8  6  8  6  4  6  8  2  5  3  7  6  7  3  8  2  6  7  8  6  7  5  7  6  7  4  3  3  5
 6  4  3  4  4  4  6  7  6  8  3  4  6  8  7  3  6  5  6  8  3  3  2  7  6  6  5  7  6  5
 7  8  2  6  3  3  6  6  6  7  4 10  6  7  3  3  6  4  1  9  2  3  3  8  7  2  6  5  2  7
 7  7  6  7  3  6  7  2  4  8  3  5  6  5  6  4  2  4  6  8  3  5  6  4  7  5  2  3  6 10
 7  7  3  9  2  7  1  9  5  7  6  5  6  7  4  9  6  3  6  6  3  4  2  8  7  7  6  8  6  4
 7  9  4  3  3  7  7  8  3  9  4  7  6  8  3  6  6  8  7  7  7  8  6  5  7  4  6  4  2  6
 7  7  6  5  3  4  7  5  4  5  3  5  7  7  6  8  2  7  1  9  6  4  6  5  7  7  2  9  6  8
 7  4  3  7  4  6  6  7  6  9  3  4  6  4  2  3  3  8  1  7  6  7  2  6  7  8  3  7  5  6
 7  8  2  9  3  3  6  7  6  4  4  4  6  7  6  7  6  7  6  8  7  5  6 11  7  7  3  8  4  4
 7  4  6  7  3  5  6  2  2 10  6  3  6  4  3  4  4  9  7  8  3  3  6  7  7  6  4  3  6  8

23
শিরোনামে 9! ≠ 9
বাধ্য নাইটপিক

1
কুল ক্রম। আপনি নিজে এটি আবিষ্কার করেছেন?
রবার্ট ফ্রেজার

@ রবার্টফ্রেজার আমি করেছি, তবে আমি নিশ্চিত যে একই ধরণের কোথাও কোথাও অস্তিত্ব রয়েছে (আমি এর সন্ধান পাইনি, তবে আমি অনুসন্ধানে খুব বেশি সময় ব্যয় করিনি।)
আর্নাউল্ড

কোলাটজ অনুমানের পরে, আরনাউল্ডের অনুমান! এরপর কি?
সার্জিওল

@ সার্জিওল lmgtfy.com/?q= ধারণা অনুসারে একটি অনুমান হয়an opinion or conclusion formed on the basis of incomplete information.
রোমান গ্রাফ

উত্তর:


6

হুশ , 13 বাইট

€9¡?o→½ȯΣd□¦2

এটি 1-সূচকযুক্ত। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

এখানে খুব অভিনব কিছু না।

€9¡?o→½ȯΣd□¦2  Implicit input, say n = 5
  ¡            Iterate the following function:
   ?       ¦2   If divisible by 2,
    o→½         then halve and increment,
       ȯΣd□     else square, take digits and get their sum.
               This gives an infinite sequence: [5,7,13,16,9,9,9,9,9..
€9             1-based index of 9; print implicitly.

আমি মনে করি এটি সমাধান করা ভাল হবে ।
এইচ.পি.ভিজ

10

পার্ল 6 , 41 বাইট (40 অক্ষর)

{+($_,{$_%2??[+] $_².comb!!$_/2+1}...9)}

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

এটি কে এর 1-সূচি ব্যবহার করে, সুতরাং এটি ওপিতে উদাহরণগুলির চেয়ে 1 টি উচ্চ উত্তর দেয়। যদি 1-ইনডেক্সিং এর অর্থ এটি না হয় তবে আমাকে আরও 1 বাইট যুক্ত করতে হবে।

ব্যাখ্যা : এটি একটি বেনামে কাজ। আমরা কেবল পুনরাবৃত্তি: using) ব্যবহার করে তালিকা তৈরি করার জন্য পার্ল 6 এর সুবিধাটি ব্যবহার করি। এটা ভালো দেখায়: (first element),(block that takes the previous element and gives the next)...(end condition)। এই ক্ষেত্রে, প্রথম উপাদানটি হ'ল $_(মূল ফাংশনের যুক্তি) এবং শেষ শর্তটি হয় 9(যখন আমরা একটি 9 তৈরি করি তখন পূর্ণ হয়)। মাঝের ব্লকে আমরা $_এর যুক্তি (= ক্রমের পূর্ববর্তী উপাদান) উল্লেখ করতে ব্যবহার করি । এটি ?? !!হ'ল পুরাতন টেরিনারি অপারেটর (আরও পরিচিত হিসাবে পরিচিত ? :)। অবশেষে, আমরা সংখ্যার প্রসঙ্গটি দ্বারা জোর করে এই তালিকার দৈর্ঘ্য নিই +(...)

এখানে শেষ বিচিত্র জিনিসটি হ'ল অঙ্কগুলির যোগফল। সংখ্যা Cool(স্ট্রিং এবং সংখ্যার মত উভয় আচরণ), তাই আমরা একটি স্ট্রিং পদ্ধতি ব্যবহার .combউপর $_²(অক্ষর = ডিজিটের দিতে তালিকা), তারপর অক্ষর আপ যোগ (যে ধর্মান্তরিত তাদের ফিরিয়ে নম্বরে)।


হ্যাঁ, 1-ইনডেক্সিং এর অর্থ এটি।
আর্নল্ড

7

জেলি , 17 বাইট

²DSµH‘$Ḃ?ßµ-n9$?‘

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

সোজা-এগিয়ে পদ্ধতির। 0-ভিত্তিক সূচক ব্যবহার করে।

ব্যাখ্যা

²DSµH‘$Ḃ?ßµ-n9$?‘  Input: n
               ?   If
            n9$      n != 9
          µ        Then
        ?            If
       Ḃ               n % 2 == 1
   µ                 Then
²                      Square
 D                     Decimal digits
  S                    Sum
      $              Else
    H                  Halve
     ‘                 Increment
         ß           Call recursively
                   Else
           -         The constant -1
                ‘  Increment

1
@Arnauld ধন্যবাদ, শর্তাধীন একটি ছিল do-while n != 9একটি পরিবর্তেwhile n!= 9
মাইল

7

পাইথন 2 , 129 126 76 68 67 64 54 53 বাইট

-3 বাইট জনাথন ফ্রেচের জন্য ধন্যবাদ। -8 বাইট মাল্টেসেনকে ধন্যবাদ। -7 বাইট জনাথন অ্যালান ধন্যবাদ। -১ বাইট মিঃ এক্সকোডারকে ধন্যবাদ।

f=lambda n:n-9and-~f(n%2*sum(map(int,`n*n`))or 1+n/2)

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

এমন কারও কাছ থেকে যারা সম্ভবত যথেষ্ট পরিমাণে গণিত জানেন না, এটি সম্পূর্ণ স্বেচ্ছাচারী বলে মনে হচ্ছে seems : P: P


1
আপনি তিনটি বাইট সংরক্ষণ করে এর )%2and sumসাথে প্রতিস্থাপন করতে সক্ষম হতে পারেন )%2*sum
জোনাথন ফ্রেচ

1
অজগর 3 জন্য কোন কারণ আছে? অন্যথায় আপনি str টি ব্যবহার করতে পারবেন স্ট্র
রিপ্রের

1
আপনি kসম্পূর্ণরূপে পরিত্রাণ পেতে এবং আরও সাতটি বাইট সংরক্ষণ
জোনাথন অ্যালান

8
আমি স্বীকার করব, কয়েক মিনিট আগে এটি কীভাবে কাজ করে তা আমি পুরোপুরি হারিয়ে ফেলেছি। > _ <
সম্পূর্ণরূপে


6

গণিত, 58 বাইট

1-ইন্ডেক্স

If[#!=9,#0@If[OddQ@#,Total@IntegerDigits[#^2],#/2+1]+1,0]&

এটি অনলাইন চেষ্টা করুন! (ম্যাথিক্সে কাজ করার জন্য, এর Trসাথে প্রতিস্থাপন করা হয়েছে Total)

এখানে -1 বং সংস্করণ @ জাংওয়ওয়ানমিন দ্বারা প্রকাশ করা হয়েছে (তবে এটি গাণিতিকের উপর কাজ করে না তাই আমি উভয়ই রেখেছি)

গণিত, 57 বাইট

If[#!=9,#0@If[2∣#,#/2+1,Total@IntegerDigits[#^2]]+1,0]&

1
-1 বাইট: এর 2∣#পরিবর্তে ব্যবহার করুন OddQ@#এবং এর দুটি এক্সপ্রেশনটি অদলবদল করুন If
জংহওয়ান মিন

6

জাভাস্ক্রিপ্ট (ES6), 59 50 বাইট

0-ইন্ডেক্স।

f=n=>n-9&&f(n%2?eval([...""+n*n].join`+`):n/2+1)+1

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

o.innerText=(
f=n=>n-9&&f(n%2?eval([...""+n*n].join`+`):n/2+1)+1
)(i.value=5);oninput=_=>o.innerText=f(+i.value)
<input id=i min=3 type=number><pre id=o>


ব্যাখ্যা

প্রথম জিনিসটি আমরা গণনা করি n-9। যদি n==9তা হয় তবে স্পষ্টতই, দেয় 0এবং জিনিসগুলি সেখানে থামে। তাহলে n!=9তারপর n-9একটি অ শূন্য মান যা, truthy হচ্ছে, মানে আমরা লজিক্যাল এবং মাধ্যমে উপর চালিয়ে যেতে পারেন দেব। আমরা ফাংশনটি আবার কল nকরি, এটিতে একটি নতুন পাস করে, নিম্নরূপে গণনা করা:

n%2?

যদি nমডুলো 2সত্য হয় - অর্থাত্ nবিজোড়।

[...""+n*n]

গুন nনিজে একটি স্ট্রিং এবং destructure তা রূপান্তর পৃথক অক্ষর (সংখ্যা) এর একটি অ্যারের স্ট্রিং যে।

 .join`+`

+আমাদের গাণিতিক এক্সপ্রেশন দিয়ে , অক্ষরে অক্ষরে পুনরায় যোগদান করুন ।

eval(                   )

আমাদেরকে অঙ্কের যোগফল যোগ করে সেই অভিব্যক্তিটি মূল্যায়ন করুন n*n

:n/2+1

যদি n%2মিথ্যা হয় (অর্থাত্ সমান nহয়) তবে আমরা কেবল ভাগ nকরে 2যোগ করব 1

ফাংশনটি আবার কল করার ফলাফলের জন্য আমরা তারপরে যুক্ত করব 1। সুতরাং, এর প্রাথমিক ইনপুট ব্যবহার 5করে প্রক্রিয়াটি নীচে চলে:

f(5)
= -4&&f(7)+1
= -2&&(f(13)+1)+1
=  4&&((f(16)+1)+1)+1
=  7&&(((f(9)+1)+1)+1)+1
=     (((0+1)+1)+1)+1
= 4

4

জেলি ,  16  15 বাইট

-1 থেকে বাইট ধন্যবাদ মাইল (তিন এর ব্যবহার করে থাকেন)

²DSµH‘µḂ?_9$пL

একটি মোনাডিক লিংক নেওয়া এবং প্রত্যাবর্তনের নম্বর।
1-ইন্ডেক্স

এটি অনলাইন চেষ্টা করুন! অথবা একটি পরীক্ষা-স্যুট (কোয়ার্স ফলাফলগুলি 0-সূচিযুক্ত হতে পারে এবং ওপি কোড-ব্লকের মতো ফর্ম্যাটগুলি) দেখুন

কিভাবে?

²DSµH‘µḂ?_9$пL - Link: number, n
            п  - collect results in a list while:
           $    -   last two links as a monad:
         _9     -     subtract nine
        ?       -   if:
       Ḃ        -     bit - current loop input modulo by 2 (1 if odd, 0 if even)
   µ            -   ...then:
²               -     square the current loop input
 D              -     cast to a list of its decimal digits
  S             -     sum
      µ         -   ...else:
    H           -     halve current loop input
     ‘          -     increment
              L - length (get the number of results collected
                -         - this includes the 9, so is 1-indexed w.r.t. k)

আমি বিশ্বাস করি যে আপনার উইল লুপের সাথে আমি ব্যবহৃত আইফেট-স্টেটমেন্টের সমন্বয় করে একটি বাইট সংরক্ষণ করতে পারি। ²DSµH‘$Ḃ?n9$пL
মাইল




1

VB.NET (.NET 4.5.2), 107 + 20 (আমদানি) = 117 বাইট

প্রয়োজন Imports System.Linq

Function A(n)
While n<>9
n=If(n Mod 2=0,n/2+1,CStr(n^2).Sum(Function(c)Val(c)))
A+=1
End While
End Function

ক্রিয়া যা nপূর্ণসংখ্যার ইনপুট হিসাবে গ্রহণ করে এবং 0-ভিত্তিক প্রদান করে k

Ungolfed:

Function A(n) ' input/output types are Object, but we will be casting to integer
    'A = 0 ' VB will create an implicit variable with the same name as the function

    ' loop until a(n, k) = 9
    ' using n as the variable to store a(n, k)
    While n <> 9

        n = If(n Mod 2 = 0, ' equivalent to c# ternary ?: operator

            n / 2 + 1, ' even case

            CStr(n ^ 2).Sum(Function(c) Val(c)))
            ' odd case
            ' cast number to string
            ' then convert each char to the number it represents
            ' and do a linq sum

        A += 1 ' Object + Integer will coerce to an integer
    End While

    ' Where's the return?
    ' That implicit variable with the matching name will get returned if there's no explicit return
End Function


1

পাইথ ,  23  22 বাইট

আপাতত, এটি একটি পুনরাবৃত্ত ফাংশন তবে এর .Wপরিবর্তে বাইটগুলি সংরক্ষণ করতে আমি (কার্যকরী) স্যুইচ করার চেষ্টা করব

L&-b9hy|*%b2sj^b2Th/b2

এখানে চেষ্টা করুন! (ফাংশনটিতে কল করার জন্য অতিরিক্ত কোড সহ- ফাঁকা ছাড়াইব্যবহার করুন)y<your_number>


1

জাভা 8, 110 98 বাইট

n->{int k=0,s;for(;n!=9;k++){s=0;for(int c:(n*n+"").getBytes())s+=c-48;n=n%2<1?n/2+1:s;}return k;}

0-ইন্ডেক্স

ব্যাখ্যা:

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

 n->             // Method with integer as both input and return-type
   int k=0,      //  Result-integer `k` starting at 0
       s;        //  Sum-integer
   for(;n!=9;    //  Loop (1) as long as `n` is not 9
        k++){    //    And increase `k` by 1 after every iteration
     s=0;        //   Reset sum `s` to 0
     for(int c:(n*n+"").getBytes())
                 //   Do `n*n` and inner loop (2) over the digits as characters
       s+=c-48;  //    And increase the sum `s` with these digits
                 //   End of inner loop (2) (implicit / single-line body)
     n=n%2<1?    //   If `n` is even:
        n/2+1    //    Change `n` to `n/2+1`
       :         //   Else:
        s;       //    Change `n` to sum `s`
  }              //  End of loop (1)
  return k;      //  Return the result `k`
}                // End of separated method (2)

1

ক্লোজার ভি 1.8, 124 113 112 বাইট

0-ইন্ডেক্স

(fn[n](loop[a n k 0](if(= a 9)k(recur(if(even? a)(+(/ a 2)1)(apply +(map #(-(int %)48)(str(* a a)))))(inc k)))))

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

ব্যাখ্যা

(loop[a n k 0](if(= a 9)...))  Loop until a=9
(if(even? a)(+(/ a 2)1)...)    If even, a(n, k) / 2 + 1 if a(n, k)
(if(even? a)...(apply +(map #(-(int %)48)(str(* a a)))))  If odd, calculate the sum of digits of a(n, k)²
#(-(int %)48)                  Convert character to number

1

পাইথ, 18 বাইট

tl.u?%N2sj*NNTh/N2

অনলাইনে চেষ্টা করুন: বিক্ষোভ

ব্যাখ্যা:

tl.u?%N2sj*NNTh/N2
  .u                 apply the following function to the input, 
                     until it runs into a fixed point
    ?%N2                if value % 2 == 1:
          *NN               value * value
         j   T              convert to digits
        s                   sum
                        else:
               /N2          value / 2
              h              + 1
 l                   get the length of all visited values
t                     - 1

1

জাপট, 22 21 বাইট

0-ইন্ডেক্স।

NcUÆ=v ?U/2Ä:U²ìxà b9

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


ব্যাখ্যা

পূর্ণসংখ্যার অন্তর্নিহিত ইনপুট U

UÆ             Ã

থেকে পূর্ণসংখ্যার একটি অ্যারের জেনারেট করুন 0থেকে U-1এবং একটি ফাংশন মাধ্যমে একে পাস।

=

এর মান নির্ধারণ করুন U

v ?

যদি U2 দ্বারা বিভাজ্য হয়।

U/2Ä

U2, এবং 1 ( Ä) দ্বারা বিভক্ত ।

:U²ìx

অন্য: U2 ( ²) এর শক্তিতে , অঙ্কগুলির অ্যারেতে বিভক্ত করুন ( ì) এবং সংযোজন ( x) দ্বারা হ্রাস ।

Nc

ফলাফলের অ্যারে ইনপুটগুলির অ্যারেতে যুক্ত করুন।

b9

9অ্যারেতে প্রথম উপস্থিতির সূচকটি সন্ধান করুন। সুস্পষ্টভাবে ফলাফল আউটপুট।


Dang। আমি একটি ফাংশন পদ্ধতি ব্যবহার করার অনুভূতিটি আরও অনেক ভাল হতে পেরেছিলাম তবে আমি এটি কেবল 23 বাইটে নামিয়েছিলাম: @¥9}a@=u ?U²ìx :U/2Ä;°Tকেবল যদি এমন কোনও পদ্ধতি ছিল যা কোনও মান পরিবর্তন না হওয়া অবধি পুনরাবৃত্তির সংখ্যা ফেরত ...
ETH প্রোডাকশনগুলি

@ ইথ প্রডাকশন: এটি 0 এর পরিবর্তে 9 এর জন্য 1 আউটপুট দেয়, তবে এখানে একটি 22 বাইট সংস্করণ রয়েছে (যা এখনও 9 এর জন্য ব্যর্থ হয়)।
শেগি

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