অ্যাড-মাল্টিপ্লি-অ্যাড সিকোয়েন্স


27

( সম্পর্কিত )

একটি পূর্ণসংখ্যা দেওয়া n > 1,
1) সংখ্যার পরিসর আঁকো n, n-1, n-2, ... 3, 2, 1এবং সমষ্টি নিরূপণ
2) যে সংখ্যা পৃথক সংখ্যা নিন ও পণ্যের নিরূপণ
3) পৃথক সংখ্যা নিন যে সংখ্যা এবং নিরূপণ সমষ্টি
4) একই পদ্ধতি পুনরাবৃত্তি করুন ধাপ 2 এবং 3 যতক্ষণ এক অঙ্কে পৌঁছান। সেই অঙ্কটিই ফলাফল।

ক্রমের প্রথম বিশটি শর্ত নীচে রয়েছে:

3, 6, 0, 5, 2, 7, 9, 2, 7, 9, 1, 9, 0, 0, 9, 6, 7, 0, 0, 6

দ্রষ্টব্য: এই ক্রমটি OEIS তে নেই।

আই / ও এবং বিধি

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

উদাহরণ

n     output
1234   9
3005   3
5007   5
9854   8
75849  8
100000 0

3
ওইআইএস-তে নেই এমন সিকোয়েন্স চ্যালেঞ্জের জন্য +1
জেএডি

2
যখনই এন ≤ 100000 , 2 এবং 3 পদক্ষেপের মাত্র দুটি পুনরাবৃত্তি ফলাফল পেতে যথেষ্ট। আমরা কি এর সুবিধা নিতে পারি বা এন এর বৃহত্তর মানগুলির জন্য কাজটি বেছে নিতে পারি সেই অ্যালগরিদম ?
ডেনিস

2
@ ডেনিস অ্যালগরিদমের কোনও মূল্যের জন্য কাজ করা উচিত n। পোস্ট করা সমাধানটি কেবলমাত্র কাজ করতে হবে n = 100000
অ্যাডমবর্কবার্ক

3
Numbers will get very large quicklyনা এটি হয় না
l4m2

3
@ l4m2 আউটপুট নয়। তবে 100000 + 99999 + ... + 1 = 5000050000 একটি 33-বিট নম্বর, যা আপনার পছন্দের ভাষাটি প্রতিনিধিত্ব করতে সমস্যা হতে পারে বা নাও পারে।
ডেনিস

উত্তর:


10

পাইথন 2 , 77 72 71 62 60 বাইট

lambda n:reduce(lambda x,c:eval(c.join(`x`)),'*+'*n,-n*~n/2)

2x বাইট বন্ধ করে গল্ফ করার জন্য @ এক্সনরকে ধন্যবাদ!

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


আমি কেবল লুপের জন্য স্যুইচ করেছি , তবে ভবিষ্যতের জন্য আমাকে সেই কৌশলটি মনে রাখতে হবে।
ডেনিস

কোথায় repeat until you reach a single digit?
টাইটাস

2
@ টিটাস আমি কেবল 2 এবং 3 পদক্ষেপের এন পুনরাবৃত্তি করি যা সর্বদা যথেষ্ট enough আসলে, এন ≤ 100000 যেহেতু তিনটি পুনরাবৃত্তি যথেষ্ট হবে।
ডেনিস

এখন যেহেতু আপনি এটি উল্লেখ করেছেন: আসলে, সবচেয়ে ছোট ইনপুট যার জন্য তিনটি পুনরাবৃত্তি প্রয়োজন হবে 236172; এবং এটি এক মিলিয়ন এর নিচে একমাত্র।
টাইটাস


8

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

LOΔSPSO

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

Exlpanation

L         # push range [1 ... input]
 O        # sum range
  Δ       # loop until top of stack stops changing
   SP     # product of digits
     SO   # sum of digits

প্রায় ASCII-! : ডি
অ্যাডমবর্কবার্ক

@ অ্যাডমবার্কবার্ক: হ্যাঁ, মারাত্মক সাধারণ নয়: পি
এমিগানা

4

জেলি , 8 বাইট

RSDPDƲÐL

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

সম্পূর্ণ প্রোগ্রাম (এটি ফলাফল সহ একটি সিঙ্গলটন অ্যারে প্রদান করে, কিন্তু বন্ধনীগুলি STDOUT তে দৃশ্যমান নয়)।


এটি এখনও সর্বাধিক "প্রাকৃতিক দেখায়" জেলি উত্তর আমি দেখেছি seen কেবলমাত্র 2-অ-এসসিআইআই অক্ষর রয়েছে
রেডক্লোভার


আহ, আমরা কি দয়া করে এখানে আলোচনা করতে পারি না, ধন্যবাদ। : পি টিএনবি এই বিষয়ে আলোচনার বিকল্প জায়গা হতে পারে, যদি কোনও আওয়াজ না হয়। ;)
এরিক দি আউটগলফার

4

এমএটিএল , 15 13 বাইট

মাসের ভাষার প্রতি শ্রদ্ধা জানাতে :

:`sV!UpV!Utnq

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

আমি মনে করি না যে সংখ্যাকে একটি স্ট্রিংয়ে রূপান্তর করা V, তারপরে স্থানান্তরিত করা !এবং এই উল্লম্ব ভেক্টরটিকে আবার একটি সংখ্যায় রূপান্তরিত করার চেয়ে সংখ্যার অঙ্কগুলি পাওয়ার আরও সহজ উপায় আছে U

সংরক্ষিত 2 সৃষ্টিকর্তা ধন্যবাদ বাইট 1 নিজে! আমি অন্তর্ভুক্ত প্রান্তটি ভুলে গিয়েছিলাম, যার অর্থ আমি মুছে ফেলতে পারি ]এবং এর সাথে উপাদানের সংখ্যার তুলনা না করে 1আমি কেবল সেই মান হ্রাস করতে পারি এবং এটি সরাসরি বুলিয়ান হিসাবে ব্যবহার করতে পারি।

সুতরাং, ব্যাখ্যাটি এরকম হয়:

                 % Grab input n implicitly
:                % Range from 1 ... n inclusive
 `               % Do ... while
  s               % sum the vector
   V!U            % Convert the number to digits
      p           % Take the product of these digits
       V!U        % Convert the product into digits
          t       % Duplicate the result
           n      % Count the number of elements
            q     % Decrement the number of elements
                  % Loop until the number of elements is 1
                 % Implicit end

এমএটিএল 1 , লুইস মেন্ডো।


3

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

f=(n,k=n*++n/2)=>k>9?f(!n,eval([...k+''].join('*+'[+!n]))):k

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

মন্তব্য

f = (                     // f = recursive function taking:
  n,                      //   n = original input
  k = n * ++n / 2         //   k = current value, initialized to sum(i=1..n)(i)
) =>                      //
  k > 9 ?                 // if k has more than 1 digit:
    f(                    //   recursive call to f() with:
      !n,                 //     a logical NOT applied to n
      eval(               //     the result of the expression built by:
        [...k + '']       //       turning k into a list of digits
        .join('*+'[+!n])  //       joining with '*' on even iterations or '+' on odd ones
      )                   //     end of eval()
    )                     //   end of recursive call
  :                       // else:
    k                     //   stop recursion and return the last value

বিকল্প সংস্করণ, 59 বাইট (প্রতিযোগী নয়)

একটি পুনরাবৃত্তিযোগ্য সংস্করণ যা কেবল এন <236172 এর জন্য কাজ করে । (এটি অনুরোধ করা ব্যাপ্তিটি কভার করে তবে একটি বৈধ জেনেরিক অ্যালগরিদম হিসাবে যোগ্যতা অর্জন করে না))

n=>[...'*+*+'].map(o=>n=eval([...n+''].join(o)),n*=++n/2)|n

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


আপনার মূল সংস্করণটি বিভক্ত হয়ে যায় যখন এন> = 77534568790 It এটি কাজ করে যখন এন = 7753456879; ব্রেকআপপয়েন্টটি ঠিক কোথায় তা নিশ্চিত নয়। অবশ্যই, এটি কোনও ব্যাপার নয় কারণ প্রয়োজনীয়তাটি কেবলমাত্র এন = 100,000 পর্যন্ত হ্যান্ডেল করার জন্য, তাই আমি কেন নিশ্চিত তা নিশ্চিত নই ....
রস প্রেসার

1
@ রসপ্রেসার মোটামুটি অনুমান হিসাবে, আমি এটি বরং কাজ করতে চাই Number.MAX_SAFE_INTEGER ** 0.5 ~= 94906265
আর্নৌল্ড


2

স্ট্যাক্স , 14 13 10 বাইট

ñu┌↕a√äJ²┐

এটি চালান এবং এটি ডিবাগ করুন

বানাতে বেশ মজা লাগছিল। আমি ভাবছি শেষে তুলনা করার জন্য আরও সংক্ষিপ্ত উপায় আছে কিনা।

ব্যাখ্যা

|+wE:*E|+c9>                 # Full Program Unpacked
|+                           # Create range and sum it
   wE:*                      # Start loop, digitize number, product of digits
       E|+                   # Digitize number, sum digits
          c9>                # Duplicate, check length is = 1
                             # Otherwise loop back to the 'w' character

-1 বাইট ovs ধন্যবাদ

-3 বাইট স্ক্রোবলকে ধন্যবাদ


2

আর , 152 130 109 বাইট

function(w,x=w*(w+1)/2,y=prod(d(x)),z=sum(d(y)))"if"(z>9,f(,z),z)
d=function(x)x%/%10^(0:max(0,log10(x)))%%10

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

@ জিউজ্পে 21 টি বাইটে বিভিন্ন আর জিনিসগুলি পেয়েছি যা আমি এখনও ব্যবহার করি না, সাথে স্ট্রিং এবং পিছনে জোর না করে সংখ্যার অঙ্কগুলি পাওয়ার উপায় এবং কম বাইট সহ!

# Old
d=function(x)strtoi(el(strsplit(paste(x),"")))
# New
d=function(x)x%/%10^(0:max(0,log10(x)))%%10

options(scipen=9) হয় , পুরাতন ফাংশন জন্য 9854 ক্ষেত্রে জন্য প্রয়োজন ছিল কারণ প্রথম পণ্য পর্যায় 80000, 8E +05 যেমন যা আর কপি করে প্রিন্ট যেমন শেষ পর্যন্ত।


আহ আমি দেখি. বৈজ্ঞানিক স্বরলিপি আউটপুট। ভালো বল ধরা!
অ্যাডমবর্কবার্ক

1
শেষ অবধি scipen: এটি চেষ্টা করুন অনলাইনে ! নোটটি max(0,log10(x))হ'ল কারণ যদি x=0তবে log10(0)=-Infত্রুটি ঘটে।
জিউসেপ 21

1

পাইথ , 11 বাইট

usj*FjGTTsS

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

usj * FjGTTsS - সম্পূর্ণ প্রোগ্রাম। এন = ইনপুট
          এস - ব্যাপ্তি। ফলন [1, N] ⋂ ℤ।
         s - যোগফল।
u - যদিও টানা দু'বার পুনরাবৃত্তি একই ফল দেয় না, তবে (ভ: জি) করুন:
   * FjGT - ডিজিটাল পণ্য।
 sj T - ডিজিটাল যোগফল।

1

কাঠকয়লা , 18 বাইট

≔Σ…·¹NθW›θ⁹≔ΣΠθθIθ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

≔Σ…·¹Nθ

ইনপুট পর্যন্ত পূর্ণসংখ্যাগুলি যোগ করুন।

 W›θ⁹≔ΣΠθθ

ফলাফলটি 9 এর বেশি হওয়ার সাথে সাথে, অঙ্কগুলির গুণকের অঙ্কের যোগফলটি নিন।

Iθ

ফলাফলটি স্ট্রিংয়ে কাস্ট করুন এবং স্পষ্টভাবে মুদ্রণ করুন।


1

গাইয়া , 8 বাইট

┅⟨Σ₸∨Π⟩°

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

পুরানো ব্যাখ্যা (কোনও বাগ ঠিক করার আগে এটি গাইয়ের দোষ আইএমও: পি):

┅⟨ΣΠ⟩ Full - সম্পূর্ণ প্রোগ্রাম। এন = ইনপুট
┅ - ব্যাপ্তি। [1, N] ⋂ ℤ স্ট্যাকের দিকে চাপ দিন।
 ⟨⟩ ° - টানা দুটি পুনরাবৃত্তির একই ফলাফল পাওয়া যায় না, তবে করুন:
  । - যোগফল (বা ডিজিটাল যোগফল, যখন কোনও পূর্ণসংখ্যার সাথে প্রয়োগ করা হয়)।
   Π - ডিজিটাল পণ্য।

সংরক্ষণ 1 বাইট ধন্যবাদ ডেনিস


┅⟨ΣΠ⟩°একটি বাইট সংরক্ষণ করে।
ডেনিস

ডিজিটাল যোগফল 0 হলে এই মানগুলির পক্ষে কাজ করে না4
জো কিং

@ জোকিং ফিক্সড, এটি সন্ধানের জন্য ধন্যবাদ। দুর্ভাগ্যক্রমে, 0[]
গাইয়ায়,

1

এফ #, 175 বাইট

let d n=seq{for i in(string n).ToCharArray() do yield string i|>uint64}
let c n=
 let mutable r=Seq.sum{1UL..n}
 while r>9UL do r<-d r|>Seq.reduce(fun a x->x*a)|>d|>Seq.sum
 r

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

ফাংশনটির একমাত্র সতর্কতা হ'ল ইনপুট মানটি টাইপ হওয়া উচিত uint64

অসম্পূর্ণ এটি কিছুটা এরকম:

let d n=seq{for i in(string n).ToCharArray() do yield string i|>uint64}

let c n =
 let mutable r = Seq.sum {1UL..n}
 while r > 9UL do
  r<-d r
  |> Seq.reduce(fun a x->x*a)
  |> d
  |> Seq.sum
 r

ফাংশনটি সংখ্যাটিকে তার উপাদান অঙ্কগুলিতে d nরূপান্তর করে n। এটি প্রথমে একটি স্ট্রিংয়ে রূপান্তর করে, তারপরে স্ট্রিংয়ের প্রতিটি অক্ষর পায়। প্রতিটি অক্ষরকে অবশ্যই একটি স্ট্রিংয়ে ফিরে রূপান্তর করতে হবে, অন্যথায় অক্ষরগুলিকে তাদের "আসল" মানের পরিবর্তে তাদের ASCII মানগুলিতে রূপান্তর করা হবে।

c nফাংশন, প্রধান ফাংশন nপ্রাথমিক মান হিসাবে। এই ফাংশনে rআমাদের চলমান মান। whileলুপ নিম্নলিখিত আছে:

  • rএর উপাদান সংখ্যায় রূপান্তর করুন ( d r)।
  • এই সমস্ত সংখ্যার পণ্য পান। এটি ব্যবহার করে Seq.reduceযা সঞ্চিত মান ( a) এবং সিকোয়েন্সের পরবর্তী মান সহ x) এবং এই ক্ষেত্রে পণ্যটি ফেরত দেয়। প্রাথমিক মানটি ক্রমের প্রথম উপাদান।
  • এই পণ্যের মানটিকে এর উপাদান সংখ্যায় ( d) রূপান্তর করুন ।
  • আগে থেকে অঙ্কগুলি যোগ করুন এবং এটিকে নির্ধারণ করুন r

1

বেফুঞ্জ, 136 বাইট

101p&::*+2/>:82+%01g*01p82+/:#v_$01gv
X      v_v# #:/+82p10+g10%+82: <p100<
v:g10$ >#<#^                 #<^
>82+/#v_.@
      >101p^

আপনি এটি এখানে চেষ্টা করতে পারেন ।

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


1

গোল> <> , 35 33 বাইট

1AY:P*2,TYMR*YR+:a(?Bt
:a(qlBaSD$

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

জো কিং দ্বারা -2 বাইট।

ফাংশন এবং অন্তর্নিহিত অসীম লুপগুলির ব্যাপক ব্যবহার।

সম্পূর্ণ প্রোগ্রাম এবং এটি কীভাবে কাজ করে তার উদাহরণ

1AGIE;GN
2AY:P*2,YlMR*YlR+:a(?B8R!
:a(?BaSD$

<main program>
1AG       Register row 1 as function G
   IE;    Take number input; halt on EOF
      GN  Call G and print the result as number
          Repeat indefinitely

<function G>
2AY            Register row 2 as function Y
   :P*2,       Sum of 1 to n
        Y      Call Y (break into digits)
         lMR*  Product
Y              Call Y
 lR+           Sum (an implicit zero is used)
    :a(?B      Return if the result is less than 10
         8R!   Skip initial 8 commands
               Repeat indefinitely

<function Y>
:a(?B      Return if the top is less than 10
     aSD   Divmod by 10; [... n] => [... n/10 n%10]
        $  Swap top two, so the "div" goes to the top


1

জাপট, 16 14 13 বাইট

_ì ×ìx}gN®õ x

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


ব্যাখ্যা

                  :Implicit input of integer U
         ®        :Map
        N         :The array of inputs (which just contains U)
          õ       :  Range [1,U]
            x     :  Reduce by addition
_     }g          :Take the last element of N, run it through the following function and push the result to N
                  : Repeat U times and then return the last element of N
 ì                :  Split to an array of digits
   ×              :  Reduce by multiplication
    ìx            :  Split to an array of digits and reduce by addition

ঝরঝরে, আমি এটিকে নিজে সমাধান করার চেষ্টা করেছি তবে ভাল সমাধান খুঁজে পেলাম না তাই এটি আপনার কাছে আকর্ষণীয়।
নিট

ধন্যবাদ, @ নিট যদিও একটি ছোট উপায় হতে হবে।
শেজি

@ নীট, বুঝেছি! তবুও নিশ্চিত যে আরও ছোট একটি উপায় থাকতে হবে, যদিও।
শেজি


0

পিএইচপি 7, 89 বাইট

for($a=$argn*-~+$argn/2;$a>9;)$a=array_sum(($s=str_split)(array_product($s($a))));echo$a;

পাইপ হিসাবে চালান -rবা এটি অনলাইনে চেষ্টা করুন

  • পিএইচপি সর্বদা স্ট্রিং হিসাবে ইনপুট নেয়, তাই আমাকে যেমনটি চেয়েছিল তেমন কাজ +করতে ইনটকে কাস্ট ~করতে হবে।
  • প্রাক-বর্ধন কাজ করবে না: আমি যেখানেই রাখি না কেন, এটি উভয় ক্রিয়াকলাপকে প্রভাবিত করবে।
  • তবে: একক অঙ্ক পুনরাবৃত্তির আগে বা পরে স্থান গ্রহণ করে তা বিবেচ্য নয় (অতিরিক্ত পুনরাবৃত্তি কোনও জিনিসকে পরিবর্তন করতে পারে না); সুতরাং আমি for()পরিবর্তে ব্যবহার করতে পারেন do ... while()
  • পিএইচপি 7 বা তার পরে ফাংশনটির নামের ইনলাইন অ্যাসাইনমেন্টের জন্য প্রয়োজনীয়।
    পুরানো পিএইচপি-র জন্য আরও একটি বাইট দরকার: for($s=str_split,$a=...;$a>9;)$a=array_sum($s(...));
    (কোনও str_splitভেরিয়েবলকে বরাদ্দ দেওয়া মোটেই অন্য বাইট নষ্ট করবে না))



0

পাওয়ারশেল কোর , 91 101 93 বাইট

Function F($a){$o=$a*($a+1)/2;1,2|%{$o=[char[]]"$([char[]]"$o"-join'*'|iex)"-join'+'|iex};$o}

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

কিছুটা অবহেলিত ...

Function F ($a)
{
    $o=$a*($a+1)/2;
    1..2 | % {
        $o = [char[]]"$o"-join '*' | iex;
        $o = [char[]]"$o"-join '+' | iex;
    }
    $o | Write-Output
}

প্রথম পদক্ষেপগুলি হ'ল সংখ্যাকে অঙ্কগুলিতে বিভক্ত করা - এটি পূর্ণসংখ্যাকে স্ট্রিং অক্ষরের অ্যারেতে বিভক্ত করে । এরপরে অপারেন্ডটি sertোকান এবং তারপরে কমান্ড হিসাবে স্ট্রিংটি মূল্যায়ন করুন। তারপরে, ইনপুটটি এক অঙ্ক না হওয়া পর্যন্ত একাধিক-যোগ চক্রটি করার বিষয়টি।

iexএমন একটি উপাধি Invoke-Commandযার জন্য প্রথম প্যারাম পজিশনে পাস হওয়া স্ট্রিংকে মূল্যায়ন করে।

সম্পাদনা: @ অ্যাডমবর্কবার্কের অনুরোধ অনুসারে , আমি বাইট গণনায় একটি ফাংশন শিরোনাম যুক্ত করেছি। এছাড়াও, আমি একটি সামান্য গণিত করেছি এবং বুঝতে পেরেছি যে পুনরাবৃত্তির সংখ্যার উপরের একটি উপরের আবদ্ধ < log log 10^6 < log 6 < 2, যাতে আরও ছয়টি বাইট সংরক্ষণ করা হয়।

এক্স 2 সম্পাদনা করুন: @ অ্যাডমবর্কবর্ক পূর্ণসংখ্যাকে গণিতের অভিব্যক্তিতে রূপান্তরিত করার আরও নিখুঁত উপায় খুঁজে পেয়েছিল এবং তারপরে এটিকে পাইপ করার পরামর্শ দেয় iex। এটি 8 বাইট সংরক্ষণ করেছে। ধন্যবাদ!


চারপাশে আরেকটি পাওয়ারশেলার দেখে ভাল লাগল! তবে আমি মনে করি Function F($a){ }আপনার বাইট গণনায় ফাংশন সংজ্ঞাটি অন্তর্ভুক্ত করা দরকার । তবে, আপনার [char[]]পরিবর্তে কিছু ব্যবহার করে সঞ্চয় করা উচিত -split''-ne'', আমি মনে করি।
অ্যাডমবর্কবার্ক

[char[]]1234=Ӓ, যা অবৈধ; আমি এটি কাজ করতে সক্ষম হতে পারে, তবে এটি সম্ভবত এখনই সুস্পষ্ট নাও হতে পারে। পরামর্শের জন্য ধন্যবাদ!
জেফ ফ্রিম্যান

দুঃখিত আমি পরিষ্কার ছিল না - [char[]]"$o"এবং একটি |iexচেয়ে iex( )
অ্যাডমবর্কবার্ক

এই টিপটি আমার কোডের 8% কেটে দিয়েছে। অসাধারণ. ধন্যবাদ!
জেফ ফ্রিম্যান



0

জাভা 8, 129 বাইট

n->{long r=1,i=n;for(;i>1;r+=i--);for(;r>9;r=(i+"").chars().map(p->p-48).sum(),i=1)for(int s:(r+"").getBytes())i*=s-48;return r;}

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

ব্যাখ্যা:

n->{            // Method with integer parameter and long return-type
  long r=1,     //  Result-long, starting at 1
       i=n;     //  Temp integer, starting at the input `n`
  for(;i>1;     //  Loop as long as `i` is not 1 yet
      r+=i--);  //   And increase `r` by `i`
  for(;r>9      //  Loop as long as `r` is not a single digit yet
      ;         //    After every iteration:
       r=(i+"").chars().map(p->p-48).sum(),
                //     Set `r` to the sum of digits of `i`
       i=1)     //     And reset `i` to 1
    for(int s:(r+"").getBytes())i*=s-48;
                //    Set `i` to the product of the digits of `r`
  return r;}    //  Return `r` as result

0

জুলিয়া 0.6 , 56 বাইট

f(n,k=(n+1)n÷2)=k>9?f(0,sum(digits(prod(digits(k))))):k

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

খুব সোজা: (n+1)n÷2১.n থেকে যোগফলের জন্য গণনা করুন , এটি কোনও একক সংখ্যা ( >9) না থাকলে যাচাই করুন , যদি তা না হয় তবে কে এর অঙ্কগুলির অঙ্কের সংখ্যার যোগফলকে সেট করে আবার চেষ্টা করুন, অন্যথায় কে ফিরে আসুন।

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