বহুগুণীয় অধ্যবসায়


46

বহুগুণীয় অধ্যবসায়

  1. একটি সংখ্যায় সমস্ত অঙ্ককে গুণ করুন
  2. আপনার একক অঙ্ক বাকি না হওয়া পর্যন্ত পুনরাবৃত্তি করুন

নামফাইল দ্বারা ব্যাখ্যা হিসাবে :

উদাহরণ

  1. 277777788888899 → 2x7x7x7x7x7x7x8x8x8x8x8x8x9x9 = 4996238671872
  2. 4996238671872 → 4x9x9x6x2x3x8x6x7x1x8x7x2 = 438939648
  3. 438939648 → 4x3x8x9x3x9x6x4x8 = 4478976
  4. 4478976 → 4x4x7x8x9x7x6 = 338688
  5. 338688 → 3x3x8x6x8x8 = 27648
  6. 27648 → 2x7x6x4x8 = 2688
  7. 2688 → 2x6x8x8 = 768
  8. 768 → 7x6x8 = 336
  9. 336 → 3x3x6 = 54
  10. 54 → 5x4 = 20
  11. 20 → 2x0 = 0

এটি হ'ল বর্তমান রেকর্ড, উপায়: সর্বাধিক সংখ্যক পদক্ষেপের সাথে ক্ষুদ্রতম সংখ্যা।

গলফ

একটি প্রোগ্রাম যা কোনও সম্পূর্ণ সংখ্যা ইনপুট হিসাবে গ্রহণ করে এবং তারপরে প্রতিটি পদক্ষেপের ফলাফলকে আউটপুট দেয়, ইনপুটটি নিজেই শুরু করে, যতক্ষণ না আমরা একক অঙ্কে আঘাত করি। 277777788888899 এর জন্য আউটপুট হওয়া উচিত

277777788888899
4996238671872
438939648
4478976
338688
27648
2688
768
336
54
20
0

(ব্যবহারকারীর অনুশীলন হিসাবে পদক্ষেপের সংখ্যা গণনা করা বাকি)।

আরও উদাহরণ

A003001 থেকে :

25
10
0

A003001 থেকেও:

68889
27648
2688
768
336
54
20
0

নাম্বার ফাইল থেকে :

327
42
8

তাই সেখানে হয়েছে যুত অধ্যবসায় সম্পর্কে একটি প্রশ্ন , কিন্তু এই গুণনশীল অধ্যবসায় নেই। এছাড়াও, এই প্রশ্নটি আউটপুট হিসাবে পদক্ষেপের সংখ্যা জিজ্ঞাসা করে, আমি মধ্যবর্তী ফলাফলগুলি দেখতে আগ্রহী।


বোনাস: একটি নতুন রেকর্ড সন্ধান করুন: সর্বাধিক পদক্ষেপের সংখ্যার সাথে ক্ষুদ্রতম সংখ্যা। গুহাত: অনুমান করা যায় যে 11 সম্ভবত সবচেয়ে বড়।
এসকিউবি

7
আপনার সম্ভবত আরও কয়েকটি পরীক্ষার কেস অন্তর্ভুক্ত করা উচিত যা দিয়ে শেষ হয় না । 0
আর্নৌল্ড

এই পোস্টটি তৈরি করতে এসেছিল, এটি ইতিমধ্যে বিদ্যমান বলে মনে হয়েছে, জিজি
বিড়াল

একক অঙ্কের বৈধ ইনপুট কি?
ডিজাইমা

1
নম্বরফিলি ভিডিওতে, ম্যাট পার্কার বলেছেন যে অনুসন্ধান কয়েকশ ডিজিট করে করা হয়েছে।
হার্ডস্কেল

উত্তর:


7

জেলি , 4 বাইট

DP$Ƭ

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

ব্যাখ্যা

D    | convert to decimal digits
 P   | take the product
  $  | previous two links as a monad
   Ƭ | loop until no change, collecting all intermediate results

বোনাস হিসাবে, এখানে একটি টিআইও রয়েছে যা প্রদত্ত সংখ্যার একটি নির্দিষ্ট পরিসরের জন্য সবচেয়ে বড় পদক্ষেপের সংখ্যার সন্ধান করবে। এটি টিআইওতেও ভাল স্কেল করে।


15

টিআই-বেসিক (টিআই -৪৪), 30 32 31 বাইট

-১ বাইট @ সলোমনউকোকে ধন্যবাদ!

While Ans>9:Disp Ans:prod(int(10fPart(Ans10^(seq(-X-1,X,0,log(Ans:End:Ans

ইনপুট রয়েছে Ans
আউটপুট চ্যালেঞ্জ অনুরোধ হিসাবে প্রদর্শিত হবে। Ansশেষ ধাপটি মুদ্রণের জন্য পিছনের প্রয়োজন।

আমি স্বীকার করব, আমি এই সূত্রটি নিজেই ভাবিনি, বরং আমি এখানে পেয়েছি এবং চ্যালেঞ্জের আরও ভালভাবে ফিট করার জন্য এটি এটি সংশোধন করেছি।

সম্পাদনা: চ্যালেঞ্জটি পুনরায় পড়ার পরে, আমি বুঝতে পেরেছিলাম যে পণ্যটি যদি এক অঙ্ক হয় তবে প্রোগ্রামটি শেষ করতে হবে। সুতরাং, এটির জন্য অ্যাকাউন্টে 2 বাইট যুক্ত করতে হবে।

উদাহরণ:

24456756
        24456756
prgmCDGF8
        24456756
          201600
               0
11112
           11112
prgmCDGF8
           11112
               2

ব্যাখ্যা:

While Ans>9               ;loop until the product is one digit
Disp Ans                  ;display the current product
prod(                     ;get the product of...
 int(                     ; the integer part of...
  10fPart(                ; ten times the fractional part of...
  Ans                     ; each element in the following list times the
                          ;  current product
  10^(                    ; multiplied by the list generated by using each
                          ;  element of the following list as an exponent
                          ;  for 10^n
   seq(-X-1),X,0,log(Ans  ; generate a list of exponents from -1 to -L where
                          ;  L = the length of the current product
End
Ans                       ;leave the final product in "Ans" and implicitly
                          ; print it

ভিজ্যুয়াল মডেল:
Ans হিসাবে শুরু হয় 125673
এই মডেলটি কেবল অঙ্কগুলি বাড়ানোর পিছনে যুক্তিটিকে আবৃত করে; অন্য সব কিছুই বোঝা সহজ।

seq(-X-1,X,0,log(Ans  =>  seq(-X-1,X,0,5.0992
   {-1 -2 -3 -4 -5 -6}
10^(...
   {.1 .01 .001 1E-4 1E-5 1E-6}
Ans...
   {12567.3 1256.73 125.673 12.5673 1.25673 .125673}
fPart(...
   {.3 .73 .673 .5673 .25673 .125673}
10...
   {3 7.3 6.73 5.673 2.5673 1.25673}
int(...
   {3 7 6 5 2 1}
   (the digits of the number, reversed)
prod(...
   1260
   (process is repeated again)

seq(-X-1,X,0,log(Ans  =>  seq(-X-1,X,0,3.1004
   {-1 -2 -3 -4}
10^(...
   {.1 .01 .001 1E-4}
Ans...
   {126 12.6 1.26 .126}
fPart(...
   {0 .6 .26 .126}
10...
   {0 6 2.6 1.26}
int(...
   {0 6 2 1}
prod(...
   0
   (product is less than 10.  loop ends)

নোট:

টিআই-বেসিক একটি টোকেনাইজড ভাষা। অক্ষর গণনা বাইট গণনা সমান হয় না

10^(এটি কি এক বাইট টোকেন ?

এই প্রোগ্রামটি টিআই ক্যালকুলেটরগুলিতে দশমিক নির্ভুলতার সীমাবদ্ধতার কারণে দীর্ঘ 14 ডিজিটের বেশি সংখ্যক পূর্ণসংখ্য সহ পণ্যগুলির সঠিক ক্রম সরবরাহ করবে না।


আপনি 10^(বাইরে গিয়ে seq(এবং বন্ধকৃত বন্ধনী বাদ দিয়ে একটি বাইট সংরক্ষণ করতে পারেন ?
সলোমন উকো

হ্যাঁ, আমিও তাই বিশ্বাস করি!
তাউ

11

কে (এনএনজি / কে) , 9 বাইট

{*/.'$x}\

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

{ }\ ক্রমটি রূপান্তরিত না হওয়া অবধি ফাংশনটি কোঁকড়ানো ধনুর্বন্ধনীগুলিতে প্রয়োগ করতে থাকুন

$x যুক্তিটিকে স্ট্রিং হিসাবে ফর্ম্যাট করুন (অক্ষরের তালিকা)

.'প্রতিটি মূল্যায়ন করুন (কে এর অন্যান্য উপভাষাগুলি একটি কোলন প্রয়োজন, .:')

*/ বার বার, অর্থাত্ পণ্য



8

আর , 59 বাইট

n=scan();while(print(n)>9)n=prod(n%/%10^(nchar(n):1-1)%%10)

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

যেহেতু print invisiblyএর ইনপুটটি ফেরত দেয়, আমরা একটি লুপ অনুকরণ print(n)করতে whileলুপের ভিতরে ব্যবহার করতে পারি do-while। এটি আর-তে গল্ফ করার জন্য আমার টিপসের একটি দ্বারা অনুপ্রাণিত ।

শিরোনাম বৈজ্ঞানিক স্বরলিপি মুদ্রিত থেকে বিপুল সংখ্যক প্রতিরোধ সাহায্য করে।


8

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

Δ=SP

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

Δ     # Loop until the number no longer changes:
 =    #  Print the number with trailing newline (without popping the number itself)
      #  (which will be the implicit input in the first iteration)
  SP  #  Convert the number to a list of digits, and calculate its product




7

পাইথন 2 ,  46  43 বাইট

-3 xnor ধন্যবাদ (শৃঙ্খলাবদ্ধ তুলনা)

def f(n):print n;n>9>f(eval('*'.join(`n`)))

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


আপনি >জায়গায় করতে পারেন and
xnor

@ এক্সনোর ধন্যবাদ, ভুলে যাওয়া সহজ যে কাজ করবে।
জোনাথন অ্যালান

5

পাওয়ারশেল , 54 বাইট

for($a=$args;$a-gt9){$a;$a=("$a"|% t*y)-join"*"|iex}$a

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


Iterative পদ্ধতি যা প্রথমে ইনপুট আর্গুমেন্ট লেখেন, তারপরে এটিকে একটি স্ট্রিংয়ে রূপান্তর করে এবং অক্ষর অ্যারেতে পাইপ করে। এই অ্যারেটি একটি একক নক্ষত্রের সাথে যুক্ত হয়, এবং আহ্বান অভিব্যক্তি ওরফে কমান্ড হিসাবে কার্যকর হয় uted যেহেতু এটি শুরুর সংখ্যাটি 0 এর চেয়ে শেষের সংখ্যায় নীচে লিখে (20, প্রদত্ত পরীক্ষার দৃশ্যে), তাই আমি $aআউটপুটটির শেষের দিকে একটি ফাইনাল যুক্ত করি ।


5

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 79 74 68 বাইট tes

void f(int a){Print(a);if(a>9)f((a+"").Aggregate(1,(j,k)=>k%48*j));}

পদ্ধতি ঘোষণার সময় কত দীর্ঘ থাকায় আমি সি # তে পুনরাবৃত্তি থেকে দূরে থাকার চেষ্টা করি, তবে এই ক্ষেত্রে এটি একটি লুপের তুলনায় সংরক্ষণ করে।

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


5

পিএইচপি , 63 বাইট

<?=$n=$argn;while($n>9)echo"
",$n=array_product(str_split($n));

Iterative সংস্করণ, php -nFথেকে ইনপুট সহ কল STDIN

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

পিএইচপি ,72 71 বাইট

function h($n){echo"$n
",($n=array_product(str_split($n)))>9?h($n):$n;}

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

পুনরাবৃত্ত সংস্করণ, ফাংশন হিসাবে।

ইনপুট: 277777788888899

277777788888899
4996238671872
438939648
4478976
338688
27648
2688
768
336
54
20
0

ইনপুট: 23

23
6

5

পাইথন 2 , 61 62 59 বাইট

def f(n):print n;n>9and f(reduce(int.__mul__,map(int,`n`)))

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

-৩ বাইটস, জোনাথন অ্যালানকে ধন্যবাদ


তাদের শেষ পুনরাবৃত্তিতে 0 দিয়ে শেষ হয় না এমন ইনপুটগুলির জন্য কাজ করে না, উদাহরণস্বরূপ 23
অবজ্ঞানের রূপ

int.__mul__এর চেয়ে তিনটি বাইট কমlambda a,b:a*b
জোনাথন অ্যালান

@ জোনাথান অ্যালান ধন্যবাদ! আমি জানতাম যে এরকম কিছু হওয়া দরকার
টিফিল্ড

13 বাইট সংরক্ষণ f(reduce(int.__mul__,map(int,`n`)))করতে পরিবর্তন করুন f(eval('*'.join(`n`)))
mypetlion

@ মাইপেটলিয়ন ... আমি ইতিমধ্যে অন্য পোস্টে এটি করেছি।
জোনাথন অ্যালান

5

পার্ল 5 ( -n -M5.01), 32 30 25 বাইট

say$_=eval;s/\B/*/g&&redo

25 বাইট

30 বাইট

32 বাইট


আপনার উল্লেখ করা উচিত যে এটি ব্যবহার করে-lpF//
গ্রিমি

1
@ গ্রিমি আমি ব্যবহার না করে -lpF//আপডেট না করে 2 বাইট বাঁচাতে পারতাম
নাহুয়েল ফুইলুল

5

ম্যাথগল্ফ , 9 10 বাইট

h(ôo▒ε*h(→

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

এখন এটি সঠিকভাবে ইনপুটগুলি পরিচালনা করে যা একক অঙ্ক। নিখুঁত নয়, তবে কমপক্ষে এটি সঠিক।

ব্যাখ্যা

h(            check length of input number and decrease by 1
  ö       →   while true with pop using the next 6 operators
   p          print with newline
    ▒         split to list of chars/digits
     ε*       reduce list by multiplication
       h(     length of TOS without popping, subtracted by 1 (exits when len(TOS) == 1)


@ ডিজাইমা আমি এটি সন্ধান করব, এবং
সমাধানটি মিলিত




4

এপিএল (এনএআরএস), 19 টি চর, 38 বাইট

{⍵≤9:⍵⋄∇×/⍎¨⍕⍵⊣⎕←⍵}

পরীক্ষা:

   f←{⍵≤9:⍵⋄∇×/⍎¨⍕⍵⊣⎕←⍵}
   f 23     
23
6
   f 27648     
27648
2688
768
336
54
20
0




4

জাপট -R , 9 বাইট

মারাত্মকভাবে অদক্ষ - এমনকি প্রথম পরীক্ষার কেস চালানোর চেষ্টাও করবেন না !

_ì ×}hN â

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

_ì ×}hN â     :Implicit input of integer U
      N       :Starting with the array of inputs (i.e., [U])
     h        :Do the following U times, pushing the result to N each time
_             :Take the last element in N and pass it through the following function
 ì            :  Convert to digit array
   ×          :  Reduce by multiplication
    }         :End function
        â     :Deduplicate N
              :Implicitly join with newlines and output

3

ব্র্যাচল্যাগ , 7 বাইট

ẉ?Ḋ|ẹ×↰

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

ব্যাখ্যা

ẉ          Write the input followed by a linebreak
 ?Ḋ        If the input is a single digit, then it's over
   |       Otherwise
    ẹ      Split the input into a list of digits
     ×     Multiply them together
      ↰    Recursive call with the result of the multiplication as input

আমি নিজে চেষ্টা করেছিলাম। ভুলে গেছি Ḋ বাকিটা আমারও ছিল।
ক্রপ্পেব

3

জাভাস্ক্রিপ্ট (বাবেল নোড) , 46 বাইট

f=a=>a>9?[a,...f(eval([...a+''].join`*`))]:[a]

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


জাভাস্ক্রিপ্ট (বাবেল নোড) , 44 বাইট

ইনপুটটি স্ট্রিং হিসাবে নেওয়া যেতে পারে

f=a=>a>9?[a,...f(''+eval([...a].join`*`))]:a

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


@ আরনাউল্ড হ্যাঁ, আমি স্রেফ ভুল কোডটি সম্পাদনা করে যুক্ত করেছি। আমি এখনও তার পরিবর্তে অ্যারেগুলি ব্যবহার করে কেবল কিছু স্ট্রিং ব্যবহার করছি
লুইস ফিলিপ দে জেসুস মুনোজ

3

পাওয়ারশেল , 64 59 বাইট

for($a="$args";9-lt$a){$a;$a="$(($a|% t*y)-join'*'|iex)"}$a

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

Iterative পদ্ধতি। ইনপুট নেয় এবং এতে সংরক্ষণ করে $a, forএর দৈর্ঘ্য $aদুই বা ততোধিক হওয়ার পরে একটি লুপে প্রবেশ করে (যেমন এটি এর চেয়ে বড় 9)। লুপের অভ্যন্তরে আমরা আউটপুট দেব $aএবং তারপরে একে tচর্চা করে রূপান্তর করে পুনরায় গণনা করব y, joinএটির সাথে একত্রে ইন্জিন করব *এবং তারপরে iex(এর জন্য সংক্ষিপ্ত Invoke-Expressionএবং অনুরূপ eval)। লুপটি শেষ হয়ে গেলে, আমাদের মুদ্রণের জন্য একটি একক সংখ্যা বাকী রয়েছে, তাই আমরা $aআবার পাইপলাইনে রাখি ।

কে-গ্ল্যাসিয়ারকে ধন্যবাদ 5-বাইট।


আপনি 5 বাইট সংরক্ষণ করার 9-lt$aপরিবর্তে তুলনাটি ব্যবহার করতে পারেন $a.length-1। এবং আপনি যদি পুরো সময়ের উপর ভিত্তি করে স্ট্রিং না যান তবে আপনি একটি শালীন অংশ কেটে ফেলতে পারেন। আপনি চাইলে আমার পাওয়ার শেল প্রয়াসটি পরীক্ষা করে দেখুন !
কেগ্লাসিয়ার

3

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

θW⊖Lθ«≔IΠθθ⸿θ

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

θ

প্রথমবারের জন্য ইনপুটটি মুদ্রণ করুন।

W⊖Lθ«

ইনপুটটির দৈর্ঘ্য 1 না হলেও পুনরাবৃত্তি করুন।

≔IΠθθ

ইনপুটটিকে তার ডিজিটাল পণ্য কাস্টের সাথে স্ট্রিংয়ে প্রতিস্থাপন করুন।

⸿θ

একটি নতুন লাইনে ইনপুট প্রিন্ট করুন।


3

রেটিনা , 24 বাইট

.+~(\`

.
$&$*
^
.+¶$$.(

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

.+~(\`

প্রতিটি লুপের শুরুতে বর্তমান মানটিকে তার নিজস্ব লাইনে মুদ্রণ করুন যতক্ষণ না এটি পরিবর্তন হওয়া বন্ধ করে দেয় এবং অপরিবর্তিত মানটি দু'বার মুদ্রণ না করে। প্রতিটি লুপের শেষে বর্তমান মানটি মূল্যায়ন করুন।

.
$&$*

*প্রতিটি অঙ্কের পরে একটি যুক্ত করুন ।

^
.+¶$$.(

ডিজিটাল পণ্যটির মূল্যায়ন করে এমন একটি অভিব্যক্তিতে ইনপুটটি রূপান্তরকরণ শেষ করুন।

কেবল রেকর্ডের জন্য, রেটিনা এক লাইনে এটি করতে পারে (25 বাইট):

.+"¶"<~[".+¶$.("|'*]'*L`.

3

সি (জিসিসি) , 58 বাইট

f(n,t){for(;n=printf("%d\n",t=n)>2;)for(;n*=t%10,t/=10;);}

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

Iterative পদ্ধতির 1 বাইট সংক্ষিপ্ত হতে দেখা যাচ্ছে।

f(n,t){
    for(;n=printf("%d\n",t=n)   //print and update current number
            >2;)                //until only one digit is printed
        for(;n*=t%10,t/=10;);   //n*= product of digits of t (step)
}

সি (জিসিসি) , 61 59 বাইট (পুনরাবৃত্ত)

f(n){printf("%d\n",n)>2&&f(p(n));}p(n){n=n?n%10*p(n/10):1;}

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

পুনরাবৃত্তি মুদ্রণ এবং পদক্ষেপ উভয়ের জন্য পুনরাবৃত্তির চেয়ে কম বলে মনে হচ্ছে ...

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