রেক্যামনের নকল


14

রেক্যামেনের সিকোয়েন্সটি নিম্নলিখিত হিসাবে সংজ্ঞায়িত করা হয়েছে:

একটিএন={0যদি এন = 0একটিএন-1-এনযদি একটিএন-1-এন>0 এবং ইতিমধ্যে ক্রম নেই,একটিএন-1+ +এনঅন্যভাবে

বা সিউডো কোডে:

a(0) = 0,
if (a(n - 1) - n) > 0 and it is not 
   already included in the sequence,
     a(n) = a(n - 1) - n 
else 
     a(n) = a(n - 1) + n. 

প্রথম সংখ্যাগুলি হ'ল ( ওইআইএস এ 1005132 ):

0, 1, 3, 6, 2, 7, 13, 20, 12, 21, 11, 22, 10, 23, 9, 24, 8, 25, 43, 62, 42, 63, 41, 18, 42

আপনি যদি এই ক্রমটি অধ্যয়ন করেন তবে আপনি লক্ষ্য করবেন যে এখানে সদৃশ রয়েছে a(20) = a(24) = 42(0-ইনডেক্সড)। অনুক্রমের সামনে কমপক্ষে একটি অভিন্ন নম্বর থাকলে আমরা কোনও সংখ্যাকে একটি নকল বলব।


চ্যালেঞ্জ:

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

এই প্রথম সদৃশ নম্বরগুলি:

42, 43, 78, 79, 153, 154, 155, 156, 157, 152, 265, 261, 262, 135, 136, 269, 453, 454, 257, 258, 259, 260, 261, 262

কয়েকটি বিষয় লক্ষণীয়:

  • a (n) কোনও (0) ... a (n-1) তে কোনও অভিন্ন সংখ্যা না থাকলেও সদৃশ হিসাবে গণনা করে না , যদিও ((এন + মি) == ক (এন))
  • 42 টি 43 এর আগে হবে, কারণ এর সদৃশটি 43 টির সদৃশ হওয়ার আগে ঘটে
  • ক্রমটি বাছাই করা হয় না
  • এই ক্রমটিতেও সদৃশ উপাদান রয়েছে are উদাহরণস্বরূপ 12 তম এবং 23 তম সংখ্যা উভয়ই 262 (0-সূচিত)।

পরীক্ষার কেস (0-সূচিযুক্ত)

k      Output
    0      42
    9     152
   12     262
   23     262
  944    5197
  945   10023
10000   62114

এটি , তাই প্রতিটি ভাষার সংক্ষিপ্ততম কোডটি জয়ী হয়!

ব্যাখ্যা উত্সাহিত হয়!



কেন 43আগে আউটপুট হয় না 42? এটি রেকামান ক্রম প্রথম প্রদর্শিত হয়। আপনি কি প্রথমে আউটপুটটিকে প্রথমে সদৃশ হিসাবে খুঁজে পেয়েছেন?
লুইস মেন্ডো

1
43424243

আমি সম্প্রতি জনপ্রিয় গণিত.এসই প্রশ্নটিও দেখেছি: পি
orlp

@ অর্পল হাহ? আপনি কি এটি লিঙ্ক করতে পারেন? আমি এটি দেখিনি ...
স্টিভি গ্রিফিন

উত্তর:


5

ওল্ফ্রাম ভাষা (গণিত) , 88 85 76 বাইট

(For[i=k=j=p=0,k<#,i~FreeQ~p||k++,i=i|p;p+=If[p>++j&&FreeQ[i,p-j],-j,j]];p)&

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

1-ইন্ডেক্স।

ব্যাখ্যা

For[

For লুপ.

i=k=j=p=0

i={একটি1,একটি2,...}kj=এনp=একটিএন-1 ) 0 সমান।

k<#

পুনরাবৃত্তি যখন kইনপুট থেকে কম থাকা করুন।

i=i|p

পরিশেষে pথেকে iমাথা ব্যবহারAlternatives (একটি golfier সংস্করণ Listএই ক্ষেত্রে)।

p+=If[p>++j&&FreeQ[i,p-j],-j,j]

jpjএকটিএন-1>এনp-jiএকটিএন-1-এনp-jpj

i~FreeQ~p||k++

প্রতিটি পুনরাবৃত্তির, বৃদ্ধি kযদি pনেই i( ||(= or) স্বল্প সার্কিট অন্যথায়)।

... ;p

রিটার্ন p





2

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

রিটার্নস n- তম শব্দ, 0-ইন্ডেক্স।

i=>(g=x=>!g[x+=x>n&!g[x-n]?-n:n]||i--?g(g[n++,x]=x):x)(n=0)

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

কিভাবে?

আমরা জি () কে আমাদের মূল পুনরাবৃত্ত ফাংশন এবং ডুপ্লিকেটগুলির উপর নজর রাখতে একটি অবজেক্ট হিসাবে ব্যবহার করি।

i => (                    // given i
  g = x =>                // g = recursive function and generic object
    !g[x +=               // update x:
      x > n & !g[x - n] ? //   if x is greater than n and x - n was not visited so far:
        -n                //     subtract n from x
      :                   //   else:
        n                 //     add n to x
    ]                     // if x is not a duplicate
    || i-- ?              // or x is a duplicate but not the one we're looking for:
      g(g[n++, x] = x)    //   increment n, mark x as visited and do a recursive call
    :                     // else:
      x                   //   stop recursion and return x
)(n = 0)                  // initial call to g() with n = x = 0

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