আইট্রেটেড ফাই সিকোয়েন্স


13

সম্পর্কিত: আইট্রেটেড ফাই (এন) ফাংশন

আপনার চ্যালেঞ্জটি পুনরাবৃত্তিযুক্ত ফাই ফাংশনটি গণনা করা:

f(n) = number of iterations of φ for n to reach 1.

কোথায় φহয় ইউলার totient ফাংশন

সম্পর্কিত OEIS

এটির গ্রাফটি এখানে:

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


নিয়মাবলী:

আপনার লক্ষ্য আউটপুট হয় f(n)থেকে n=2থেকে n=100

এটি কোড-গল্ফ, তাই সংক্ষিপ্ততম কোড জয়ী।

আপনি যে মানগুলির বিরুদ্ধে পরীক্ষা করতে পারেন তা এখানে:

1, 2, 2, 3, 2, 3, 3, 3, 3, 4, 3, 4, 3, 4, 4, 5, 3, 4, 4, 4, 4, 5, 4, 5, 4, 4, 4, 5, 4, 5, 5, 5, 5, 5, 4, 5, 4, 5, 5, 6, 4, 5, 5, 5, 5, 6, 5, 5, 5, 6, 5, 6, 4, 6, 5, 5, 5, 6, 5, 6, 5, 5, 6, 6, 5, 6, 6, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 5, 6, 7, 5, 7, 5, 6, 6, 7, 5, 6, 6, 6, 6, 6, 6, 7, 5, 6, 6

@ লুইসমেডো স্থির হয়েছে, এবং এর বিরুদ্ধে চেক করার জন্য গ্রাফ + মান যুক্ত করেছে। :-)
কেবল সুন্দর আর্ট

1
আমি কলমোগোরভ-জটিলতা ট্যাগটিতে সম্পাদনা করেছি , কারণ এটি মূলত একটি নির্দিষ্ট মান আউটপুট করে
চলেছে

1
@ সিম্প্লি বিউটিফুলআর্ট প্রথমে প্রমাণ করুন যে চূড়ান্তভাবে অনেকগুলি মান xরয়েছে যা phi(x)একটি নির্দিষ্ট নির্দিষ্ট সংখ্যা।
ব্যবহারকারী 202729 16

2
এটি একটি দুর্দান্ত চ্যালেঞ্জ, তবে আমি মনে করি যে এটি f(n)নির্দিষ্ট সংখ্যক পরিসরে চালানোর পরিবর্তে কেবল প্রয়োগের জন্য সমাধান চেয়ে নেওয়া ভাল হবে। এটি কম বাইটস (আংশিক গিরগিটি চ্যালেঞ্জ?) সহ রেঞ্জগুলিতে ফাংশন প্রয়োগ করার ক্ষমতা সহ ভাষার মধ্যেও পার্থক্য তৈরি করে
উরিয়েল

1
: পি আপনি কি বোঝাচ্ছেন আমার কোনও সুবিধা দেওয়ার চ্যালেঞ্জটি আমার পরিবর্তন করা উচিত? এই নিয়মগুলি কীভাবে বর্ণিত হোক না কেন, কিছু ভাষার একটি সুবিধা থাকবে এবং কিছুতে হবে না। @ ইউরিয়েল
সুন্দর আর্ট

উত্তর:


10

হাস্কেল , 53 52 বাইট

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

f<$>[2..100]
f 1=0
f n=1+f(sum[1|1<-gcd n<$>[1..n]])

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

sum[1|1<-gcd n<$>[1..n]]দেয় φ(n)( ত্রুটি থেকে নেওয়া , ধন্যবাদ!)

fএকটি পুনরাবৃত্ত ফাংশন যা 1+φ(n)এন না হলে গণনা করে 1এবং 0যদি nহয় তবে আউটপুটগুলি হয় 1, কারণ সেখানে পৌঁছানোর জন্য আর কোনও পুনরাবৃত্তি নেওয়া হবে না1

অবশেষে এর প্রতিটি উপাদানের প্রয়োগের f<$>[2..100]একটি তালিকা তৈরি করেf[2..100]


7

হাস্কেল , 70 69 68 বাইট

ফাংশনটি (\n->sum[1|1<-gcd n<$>[1..n]])টোটেন্ট ফাংশন, যা আমরা বারবার বেনামে ফাংশনে প্রয়োগ করি। @ লাইকোনি -২ বাইটের জন্য ধন্যবাদ!

সম্পাদনা: আমি সন্ধান পেয়েছি @ xnor একটি পূর্ববর্তী চ্যালেঞ্জের মধ্যে এই সঠিক টোটিনেন্ট ফাংশনটি ব্যবহার করেছে ।

length.fst.span(>1).iterate(\n->sum[1|1<-gcd n<$>[1..n]])<$>[2..100]

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


1
মোটামুটি বিল্টিন না থাকার জন্য এটি বেশ সংক্ষিপ্ত!
লুইস মেন্ডো 16

1
@LuisMendo H.PWiz একটি সমাধান যে খুঁজে পাওয়া যায় নি এমনকি খাটো !
flawr

7

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

99:Q"@`_Zptq}x@

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

ব্যাখ্যা

99:       % Push [1 2 ... 99]
Q         % Add 1 element-wise: gives [2 3 ... 100]
"         % For each k in that array
  @       %   Push k
  `       %   Do...while
    _Zp   %     Euler's totient function
     tq   %     Duplicate, subtract 1. This is the loop condition
  }       %   Finally (execute on loop exit)
  x       %     Delete
  @       %     Push latest k
          %   End (implicit)
          % End (implicit)
          % Display stack (implicit)

পুরানো সংস্করণ, 16 বাইট

99:Qt"t_Zp]v&X<q

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

ব্যাখ্যা

99:       % Push [1 2 ... 99]
Q         % Add 1 element-wise: gives [1 2 ... 100]
t"        % Duplicate. For each (i.e. do the following 100 times)
  t       %   Duplicate
  _Zp     %   Euler's totient function, element-wise
]         % End
v         % Concatenate vertically. Gives a 100×100 matrix
&X<       % Row index of the first minimizing entry for each column.
          % The minimum is guaranteed to be 1, because the number of
          % iterations is more than sufficient.
q         % Subtract 1. Display stack (implicit)

1
প্রাপ্ত মানগুলি একের পর এক বন্ধ হয়ে যায়, আমার মনে হয় এটি অনলাইনে চেষ্টা করে দেখুন! এটি সংশোধন করে (তবে এর আগে আমি এমএটিএল ব্যবহার করি নি ...)
কায়ারড কোইনারিংহিংহ

আমার পোস্টের শেষ পরীক্ষা করুন। এটি প্রত্যাশিত আউটপুট সরবরাহ করে, যার প্রতিটিতে আপনি একে একে বন্ধ হয়ে যান।
সুন্দর আর্ট 16

আপনার বর্তমান উত্তরের দ্বারা 2 3 3 4 31 2 2 3 2
আউটপুট

@Cairdcoinheringaahing এবং সিম্প্লি বিউটিফুলআর্ট আহ, আমি দেখছি। ধন্যবাদ! এখনই সংশোধন করা হয়েছে
লুইস মেন্ডো 16

6

জেলি , 12 11 10 9 বাইট

³ḊÆṪÐĿ>1S

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

হাইপারনিট্রিনো -1 বাইট ধন্যবাদ!

-১ বাইট মিঃ এক্সকোডারকে ধন্যবাদ!

-1 বাইট ধন্যবাদ ডেনিসকে

কিভাবে এটা কাজ করে

³ḊÆṪÐĿ>1S - Main link. No arguments
³         - Yield 100
 Ḋ        - Dequeue. Creates the list [2, 3 ... 99, 100]
    ÐĿ    - For each element, while the results of the next function
          - aren't unique, collect the results...
  ÆṪ      -   Next function: Totient
      >1  - Greater than one?
        S - Sum the columns

যেহেতু এটি ডেনিস তৈরি করেছিলেন, আমার (বোধগম্য) কেন এটি কাজ করে, ঠিক তেমনটি করে না সে সম্পর্কে আমার কোনও ধারণা নেই।


1
সমস্ত তিনটি উত্তর আউটপুট তালিকা @dylnan f(n)থেকে 2থেকে 100, এবং প্রশ্ন ইনপুট উল্লেখ করে না, তাই আমি মনে করি এটা সঠিক সংস্করণ
caird coinheringaahing

@ অল্লানন এই চ্যালেঞ্জটি কেবল একটি মান নয়, তার fজন্য আউটপুট n=2দিতে বলে n=100
কেবল সুন্দর আর্ট 16

আপনি ঠিক বলেছেন, আমি চ্যালেঞ্জের
শুরুটি

এবং কোড সম্পর্কিত, #এই ক্ষেত্রে ব্যবহার করা সম্ভব হবে ? ভালো কিছু এই (যা পরিষ্কারভাবে কাজ করে না কিন্তু কেউ সিনট্যাক্স পরিষ্কারভাবে বুঝতে পারে দ্বারা লিখিত!)
dylnan

@ অল্ডান সম্ভবত, তবে আমরা প্রতিটি উপাদানকে প্রয়োগ করার জন্য একটি নির্দিষ্ট তালিকা তৈরি করছি, সাধারণত তার চেয়ে ভাল #
16

6

এপিএল (ডায়ালগ) , 50 29 25 বাইট

মা 'দেখুন, বিল্ট-ইন মোটামুটি নেই!

4 বাইট সংরক্ষণ করেছেন @ এইচ.পি.উইজকে ধন্যবাদ thanks

{⍵=1:01+∇+/1=⍵∨⍳⍵}¨1+⍳99

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

কিভাবে?

স্পষ্টতই আমি প্রথমে দীর্ঘতর (এবং আরও শক্ত) মোট সূত্রের জন্য গিয়েছিলাম। পুনর্বিবেচনার ইতিহাস দেখুন।

⍳⍵- 1থেকেn

⍵∨ - সাথে জিসিডি n

1= - 1 এর সমান?

+/ - সব মিলিয়ে

এটি মোটামুটি বাকি সমস্তগুলি গণনা ( 1+∇) এবং রেঞ্জ 2..100( ¨1+⍳99) এ প্রয়োগের জন্য মোড়ক ।



4

জে রিপিএল, 23 বাইট

<:#@(5&p:^:a:)"0|2+i.99

আমি চেক করিনি, তবে এটি সম্ভবত নিয়মিত জে তে কাজ করে যদি আপনি এটি একটি বিশেষ্য হিসাবে সংজ্ঞায়িত করেন (আমি এটি আমার ফোনে রিফিলটিতে গল্ফ করেছি)।

বিল্ট-ইনস, ইও।

আমি বলব যে শেভ করার জন্য কমপক্ষে ২-৩ টি বাইট রয়েছে ( উপায়টি a:কাজ করার |কারণে, নুপ হিসাবে ব্যবহার করা ইত্যাদি))



ভবিষ্যতের রেফারেন্সের জন্য, আপনি এর "+পরিবর্তে পাশাপাশি ব্যবহার করতে পারেন "0, তাই এটি সমান হয়ে উঠতে পারে<:#@(5&p:^:a:)"+i.99
কনার ও'ব্রায়েন

2
16 বাইট+/1<a:5&p:2+i.99
মাইল

1
@ মাইল: আপনি কি a:আপনার কোড ব্যবহারের ব্যাখ্যা দিতে পারেন ? এটি পরিবর্তে কিভাবে কাজ করে ^:?
গ্যালেন ইভানভ

1
@GalenIvanov (5&p:)^:a: mযেমন কাজ করা যেতে পারে a: 5&p: mঅন্য সংজ্ঞা ব্যবহার &যখন একটি যুগল একটি বিশেষ্য সঙ্গে জোড়া এবং তারপর dyadically বলা হয়।
মাইল

4

জাভাস্ক্রিপ্ট (ES6), 115 ... 104 99 বাইট

হার্ড-কোডিং সংক্ষিপ্ত হতে পারে তবে খালি গাণিতিক পদ্ধতির চেষ্টা করা যাক।

f=n=>n>97?6:(P=(n,s=0)=>k--?P(n,s+(C=(a,b)=>b?C(b,a%b):a<2)(n,k)):s>1?1+P(k=s):1)(k=n+2)+' '+f(-~n)

console.log(f())


হার্ড-কোডিং 90 বাইট ( পেস্টবিন লিঙ্ক )
হারমান এল

পুনঃটুইট করেছেন
আর্নৌল্ড


3

পাইথন 2 , 82 বাইট

l=0,1
exec"n=len(l);p=2\nwhile n%p:p+=1\nl+=l[p-1]+l[n/p]-n%4%3/2,;print l[n];"*99

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

এটি পর্যবেক্ষণগুলি ব্যবহার করে যে:

  • f(a*b) = f(a) + f(b) - 1ছাড়া -1বাদ দেওয়া হয় যদি aএবং bউভয় এমনকি
  • f(p) = f(p-1) + 1যখন pপ্রধান হয়, সঙ্গেf(2)=1

এগুলি সূচিত করে যে যদি nপ্রধান ফ্যাক্টরিয়েশন থাকে n = 2**a * 3**b * 5**c * 7**d * 11**e * ..., তবে f(n) = max(a,1) + b + 2*c + 2*d + 3*e + ..., যেখানে প্রতিটি p>2ফ্যাক্টরাইজেশন অংশ নেয় f(p-1)

এগুলি অতীত ধরে রাখা অব্যাহত রাখে কিনা তা আমি নিশ্চিত নই n=100তবে তারা যদি তা করে তবে তারা fব্যবহার না করে সংজ্ঞায়নের এবং গণনার একটি উপায় দেয় φ



2

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

$a=,0*101;2..100|%{$i=$_;for($z=$j=0;++$j-lt$i;$z+=$k-eq1){for($k=$j;$j%$k-or$i%$k;$k--){}};($a[$i]=$a[$z]+1)}

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

গাণিতিক পদ্ধতির।

প্রকৃতপক্ষে, এটি দেখে, সি উত্তরের সাথে খুব মিল , তবে স্বাধীনভাবে বিকশিত হয়েছিল। এর একটি অ্যারে তৈরি করে 0, থেকে লুপ 2করে 100, তারপরে সূত্রটি phiব্যবহার করে গণনা করে gcd। শেষে পেরেন্সের অংশ উভয়ই ফলাফলটিকে পরবর্তী সময়ে যাওয়ার $aজন্য সংরক্ষণ করে এবং পাইপলাইনে একটি অনুলিপি রাখে, যা ফলস্বরূপ আউটপুট দেয়।


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

"122323333434344534444545444545555545455645555655565646555656556656665656565656656757566756666667566"-split'(.)'

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

হার্ড কোডেড। হো-গুন্ গুন্। আমি তার চেয়ে কম 10-15 বাইট দ্বারা একটি গাণিতিক পদ্ধতির পেতে পারি।


আমি অবাক হই যে আপনার আসলে পৃথককারী দরকার কিনা, সমস্ত সংখ্যা একক অঙ্ক হিসাবে :)
flawr

1
আপনি আমাদের গাণিতিক পদ্ধতির আমাদের দেখাতে পারেন? এটি অবশ্যই আরও আকর্ষণীয় দেখায়: পি
কনর ও'ব্রায়েন

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

2

পাইথন 2 , 83 বাইট

n=2
exec"print len(bin(n))-3+n%2-~n%9/8-(0x951a5fddc040419d4005<<19>>n&1);n+=1;"*99

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

একটি হার্ডকোড ধ্রুবক সহ একটি হিউরিস্টিক অনুমান সংযুক্ত করে যা প্রতিটি অনুমানকে হয় -0বা হিসাবে সংশোধন করে -1


2

হুশ , 10 17 বাইট

mö←LU¡Sȯṁε⌋ḣtḣ100

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

সম্পাদনা করুন : +7 বাইটগুলি কেবলমাত্র ফাংশন কম্পিউটিংয়ের আগে যে পরিসীমাটির জন্য অনুরোধ করা হয়েছিল তার উপরে ফাংশন ম্যাপিংয়ের জন্য A003434 এর আগে

ব্যাখ্যা

নিম্নলিখিত গণনা A003434 :

←LU¡S(ṁ(ε⌋))ḣ -- takes a number as input, for example: 39
   ¡          -- iterate the following function on the input: [39,24,8,4,2,1,1,1..]
    S(     )ḣ --   with itself (x) and the range [1..x]..
      ṁ(  )   --   ..map and sum the following
        ε⌋    --     0 if gcd not 1 else 1
  U           -- longest unique prefix: [39,24,8,4,2,1]
 L            -- length: 6
←             -- decrement: 5

m(....)ḣ100অংশ মাত্র পরিসীমা [2..100] উপর যে ফাংশন মানচিত্র কীভাবে করবেন নিশ্চিত নন আমি আগে যে অংশ মিস: এস


1

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

1,2,<?=join(',',str_split(unpack('H*','##3444E4DEEDEEUUEEVEUVUVVFUVVUfVfVVVVVegWVgVffgV')[1]))?>,6

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

আমি সমস্ত অঙ্ক বাইনারি স্ট্রিংয়ে প্যাক করেছি। এটিকে আনপ্যাক করার পরে, এটিকে একটি অ্যারেতে রূপান্তরিত করে আবার অ্যারে মার্জিন করার পরে, আমি কেবল 1,2 টি পুনরায় সংশোধন করতে হয়েছিল এবং 6 টি সংযোজন করতে হয়েছিল those সেগুলি ফিট হবে না বা একটি নিয়ন্ত্রণ কোডটি উপস্থিত হতে পারে।



1

05 এ বি 1 , 11 বাইট

тL¦ε[DNs#sÕ

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

ব্যাখ্যা

тL¦           # push range [2 ... 100]
   ε          # apply to each
    [         # start a loop
     D        # duplicate the current number
      N       # push the loop iteration counter
       s      # swap one copy of the current number to the top of the stack
        #     # if true, break the loop
         s    # swap the second copy of the current number to the top of the stack
          Õ   # calculate eulers totient


0

আলুমিন , 87 বাইট

hhhhhdadtqdhcpkkmzyhqkhwzydqhhwdrdhhhwrysrshhwqdrybpkshehhhwrysrarhcpkksyhaydhehycpkkmr

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

ব্যাখ্যা

hhhhhdadt      CONSTANT 100

RANGE FROM 100 to 0
q
  dhc
p

REMOVE 0 AND 1
kk

OVER EACH ELEMENT...
m
  zyh
  q
    kh
    wzyd
    q
      DUPLICATE TOP TWO ELEMENTS...
      hhwdrdhhhwrysrshhw
      GCD...
      qdryb
    p
    ks
    he
    hhhw
    ry
    s
    rarhc
  p
  IS IT ONE? IF SO TERMINATE (FIXPOINT)
  kksyhaydhehyc
p
kk
m
REVERSE THE VALUES
r

0

পাইথ, 38 বাইট (প্রতিযোগিতামূলক নয়)

.e-+1sl+1kb_jC"Éõ4ÕYHø\\uÊáÛ÷â¿"3

পাইথ হিরোকুয়াপ এ চেষ্টা করুন , কারণ এটি যে কোনও কারণেই টিআইওতে কাজ করে না।

স্পষ্ট পাইথ সমাধানটি আমার কাছে সন্দেহাতীত নয়, তবে আমি ক্রমটি সংকুচিত করে কোডটি কতটা ছোট পেতে পারি তা দেখতে চেয়েছিলাম এবং পাইথটি অনুমান করেছি learn এটি ক্রমের একটি উপরের সীমানা হয় তা ব্যবহার করেlog2(n)+1

ব্যাখ্যা

.e-+1sl+1kb_jC"Éõ4ÕYHø\\uÊáÛ÷â¿"3
             C"Éõ4ÕYHø\\uÊáÛ÷â¿"   interpret string as base 256 integer
            j                   3  convert to array of base 3 digits
           _                       invert sequence (original had leading 0s)
.e                                 map with enumeration (k=index, b=element)
       +1k                                   k+1
     sl                            floor(log(   ))
   +1                                             +1
  -       b                                         -b

আমি সংক্ষেপিত স্ট্রিংটি পেয়েছি Ci_.e+1-sl+1ksb"122323333434344534444545444545555545455645555655565646555656556656665656565656656757566756666667566"3যা কয়েকটি ধরণের রূপান্তর সহ উপরের কোডের ঠিক বিপরীত।


1
কেন নন-কেপেটিং?
সহজভাবে সুন্দর আর্ট

@ সিম্প্লি বিউটিফুলআর্টের সত্যিকার অর্থে আনুষ্ঠানিক অর্থে বোঝা হয়নি; আরও স্পষ্ট করতে শিরোনাম সম্পাদনা করেছেন
স্টেল্লেটেডহেক্সাহেড্রন

0

ওহম ভি 2 , 41 বাইট

“ ‽W3>€þΣÌιZ§Á HgüυH§u·β}Bā€ΣNπáÂUõÚ,3“8B

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

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

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