জাম্পিং সিকোয়েন্স


19

নিম্নলিখিত ক্রমটি বিবেচনা করুন:

0 1 3 2 5 4 8 6 7 12 9 10 11 17 13 14 15 16 23 ...

দেখতে বেশ প্যাটার্ন-কম লাগছে, তাই না? এখানে কিভাবে এটা কাজ করে. থেকে শুরু করে 0, আপ তিড়িং লাফ nদিয়ে পূর্ণসংখ্যার, nথেকে শুরু 1। এটি ক্রমের পরবর্তী সংখ্যা। তারপরে, "স্কিপড" কোনও নম্বর সংযোজন করুন এবং এটি এখনও আরোহণের ক্রমে দেখা যায় নি। তারপরে, ইনক্রিমেন্ট nএবং সংযুক্ত শেষ সংখ্যাটি থেকে লাফ দিন। এই প্যাটার্নটি পুনরাবৃত্তি করুন।

সুতরাং, উদাহরণস্বরূপ, যখন আমরা পৌঁছে 11যাই, আমরা এখানে আছি n=5। আমরা বাড়ায় nহতে n=6, আপ তিড়িং লাফ 17, তারপর পরিশেষে যোগ 13 14 15 16যেহেতু ঐ এখনো দেখা যায়। আমাদের পরবর্তী জাম্প n=7, সুতরাং অনুক্রমের পরবর্তী উপাদানটি 23

চ্যালেঞ্জ

ইনপুট দেওয়া হয়েছে x, xএই সিকোয়েন্সের তৃতীয় xপদটি, অনুক্রমের প্রথম পদগুলি আউটপুট করুন বা ক্রমের শর্তগুলির একটি অসীম তালিকা তৈরি করুন। আপনি 0- বা 1-ইনডেক্সিং চয়ন করতে পারেন।

আই / ও এবং বিধি

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

এটি স্পষ্টতই OEIS-
জয়সি

@ জাসি আমি অবাক হই না - এটি একটি দুর্দান্ত স্বেচ্ছাসেবী ক্রম।
অ্যাডমবর্কবার্ক

উত্তর:


24

জাভাস্ক্রিপ্ট (ES7), 41 বাইট

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

n=>(d=(n--*8-23)**.5)%1?n:'121'[n]^n-~d/2

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

কিভাবে?

প্রধান কেস: এন>3

সিকোয়েন্সের প্রথম চারটি শর্তগুলি বিশেষ, তাই এখনই তাদের এগুলি একপাশে রেখে দিন।

জন্য , যে ভালো ক্রম দেখায়:এন>3

 n  | [4] 5 [6] 7 8 [ 9] 10 11 12 [13] 14 15 16 17 [18] 19 20 21 22 23 [24] 25 26 27 ...
----+------------------------------------------------------------------------------------
a(n)| [5] 4 [8] 6 7 [12]  9 10 11 [17] 13 14 15 16 [23] 18 19 20 21 22 [30] 24 25 26 ...
----+------------------------------------------------------------------------------------
 k  |  2  -  3  - -   4   -  -  -   5   -  -  -  -   6   -  -  -  -  -   7   -  -  - ...

আমরা লক্ষ করতে পারি যে বাস্তবে দুটি আন্তঃবাহিত উপ-অনুক্রম রয়েছে:

  • অধিকাংশ মানই উপ-ক্রম অন্তর্গত , যার জন্য আমরা কেবল আছে:একজন

    একজন(এন)=এন-1
  • কিছু অন্যান্য মান সাব-সিকোয়েন্স (উপরের চিত্রের বন্ধনী সহ হাইলাইট করা হয়েছে) এর অন্তর্ভুক্ত যার সূচকগুলি পাটিগণিত ক্রম 3, 3, 4, 6, 9, 13, 18, 24 ... অনুসরণ করে এবং যার জন্য আমাদের রয়েছে:বি

    বি(এন,)=এন+ +-1

    যেখানে মূল অনুক্রমের সূচক এবং k হল উপ-অনুক্রমের বি এর সূচক ।এনবি

প্রধান অনুক্রমের সূচকগুলি দেওয়া হয়েছে:বি

এন=2-+ +62

প্রদত্ত , আমরা জানি যে মূল ক্রমানুসারে সংশ্লিষ্ট মেয়াদ জন্যে বি যদি এন দ্বিঘাত সমীকরণের একটি পূর্ণসংখ্যা সমাধান:এনবিএন

এক্স2-এক্স+ +6-2এন=0

যার বৈষম্যমূলক:

Δ=1-4(6-2এন)=8এন-23

এবং যার সদর্থক সমাধান:

এক্স=1+ +Δ2

আমরা আশা করি পূর্ণসংখ্যা হতে সুতরাং পরীক্ষা:Δ

(d = (n-- * 8 - 23) ** .5) % 1

বিশেষ কেস: 0এন3

জন্য , discriminant নেতিবাচক এবং তার বর্গমূল ফলাফল গ্রহণ NaN । জন্য এন = 3 , discriminant হয় 1 । সুতরাং, ক্রমের এই প্রথম চারটি পদটি উপ-সিকোয়েন্স বি এর অন্তর্গত বলে মনে করা হয় ।এন<3এন=31বি

আমরা কি কেবলমাত্র আমাদের মান সূত্র n - ~ d / 2 প্রয়োগ করি, আমরা পাই:

-12,12,32,3

পরিবর্তে:

0,1,3,2

যে কারণে আমরা যথাক্রমে সাথে এই ফলাফলগুলি এক্সওআর করি ।0,1,2 এবং 1


10

হুশ , 12 বাইট

Θṁṙ_1C+ḣ2tNN

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

অসীম তালিকা হিসাবে আউটপুট। এখানে এমন একটি সংস্করণ যা প্রথম এন প্রিন্ট করে ।

ব্যাখ্যা

._1C + t2tNN - সম্পূর্ণ প্রোগ্রাম। কোনও ইনপুট নেয় না, STDOUT এ আউটপুট দেয়।
         tN - 2 থেকে শুরু করে প্রাকৃতিক সংখ্যার অসীম তালিকা তৈরি করুন।
      + ḣ2 - এবং এতে [1, 2] যুক্ত করুন। ফলন [1,2,2,3,4,5,6,7,8,9,10,11, ...]।
     সিএন - ইতিবাচক পূর্ণসংখ্যার অসীম তালিকাটি কে টুকরো টুকরো করে কেটে নিন
               মাপ। ফলন [[1], [2,3], [4,5], [6,7,8], [9,10,11,12], ...]।
 । - এর পরে ফলাফলগুলি মানচিত্র করুন এবং সমতল করুন।
  ṙ_1 - 1 ইউনিট দিয়ে প্রতিটি ডানদিকে ঘোরান।
               ফলন [1,3,2,5,4,8,6,7,12,9,10,11, ...]
Θ - একটি 0. ফলন প্রস্তুত করুন [0,1,3,2,5,4,8,6,7,12,9,10,11, ...]


4

জেলি , 15 বাইট

+‘ɼṪRṙ-œ|@
0Ç¡ḣ

এটি একটি সম্পূর্ণ প্রোগ্রাম যা এন দেওয়া হয় , অনুক্রমের প্রথম এন আইটেমগুলি মুদ্রণ করে ।

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

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

0Ç¡ḣ        Main link. Argument: n

0           Set the return value to 0.
 Ç¡         Call the helper link n times, first with argument 0, then n-1 times
            with the previous return value as argument.
   ḣ        Head; extract the first n items of the last return value.


+‘ɼṪRṙ-œ|@  Helper link. Argument: A (array)

 ‘ɼ         Increment the value in the register (initially 0) and yield it.
+           Add that value to all items in the sequence.
   Ṫ        Tail; extract the last item.
    R       Range; map k to [1, .., k].
     ṙ-     Rotate -1 units to the left, yielding [k, 1, ..., k-1].
       œ|@  Perform multiset union of A and the previous return value.

3

সি (জিসিসি), 73 67 64 বাইট

t,d;f(x){for(t=4,d=2;d<x;t+=d++)x-t||(d+=x+=d);t=x<4?x^x/2:x-1;}

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

এমন একটি ফাংশন সংজ্ঞায়িত করে fযা 0-সূচিকৃত হয় nএবং nক্রমটিতে তম সংখ্যাটি উত্পাদন করে ।

আমরা ক্রমটি নিম্নরূপ বিশ্লেষণ করতে পারি:

f(n)  = n   where n = 0, 1

f(2)  = 3   // 2 and 3 are swapped
f(3)  = 2

f(4)  = 5   // (+2,+3)
f(6)  = 8   // (+3,+4)
f(9)  = 12  // (+4,+5)
f(13) = 17  // (...)
...

f(n)  = n-1 // for all cases not yet covered

প্রথমে আমরা মাঝের অংশটি পরিচালনা করি:

for(t=4,d=2;d<x;t+=d++)x-t||(d+=x+=d);

মনে রাখবেন যে বাম দিকের যুক্তিগুলি (4, 6, 9, 13, ...) একটি প্যাটার্ন অনুসরণ করে: প্রথমে দুটি যোগ করুন, তারপরে তিনটি যুক্ত করুন, তারপরে চারটি যুক্ত করুন এবং আরও অনেক কিছু। আমরা এ শুরু t=4এবং অ্যাড d(যা 2 আরম্ভ করা হয়) লুপ প্রতিটি পুনরাবৃত্তির, বৃদ্ধিশীল dপ্রক্রিয়ায়।

লুপের শরীরটি আরও আকর্ষণীয়। মনে রাখবেন যে আমরা 4 থেকে 5, 6 থেকে 8, 9 থেকে 12 ইত্যাদি মানচিত্র তৈরি করতে চাই; যে শুধু d-1যদি যোগ xহয় t। যাইহোক, এই যুক্তিটি শেষ কেসের আগে আসে f(n) = n - 1, তাই আমরা জানি আমরা শেষের দিকে 1 টি বিয়োগ করতে যাচ্ছি। অতএব, আমরা কেবল dযদি যোগ করতে পারি তবে x == t( x-t||(x+=d))। যাইহোক, আমরা এই পরে অবিলম্বে লুপ আউট বিরতি করতে হবে - তাই আমরা যোগ যে করতে dপেতে কিম্ভুতকিমাকার সুদর্শন d+=x+=d, যা সবসময় করতে হবে d<xশর্ত ব্যর্থ হয়।

এটি প্রথম চারটি মান ব্যতীত সমস্ত কিছু কভার করে। বাইনারি তাদের দিকে তাকানো, আমরা পেতে:

00 -> 00
01 -> 01
10 -> 11
11 -> 10

সুতরাং, আমরা যদি শেষ বিটটি ফ্লিপ করতে চাই 2 <= x < 4। এটি সম্পন্ন হয় x^x/2x/2দ্বিতীয় সর্বনিম্ন তাৎপর্যপূর্ণ বিট দেয়, সুতরাং সংখ্যাটি 2 বা 3 হলে মূল সংখ্যার সাথে এটি জোরিং শেষ বিটটিকে ফ্লিপ করে।


3

জেলি ,  13  10 বাইট

-3 ডেনিসকে ধন্যবাদ (মোটামুটি যোগফল সেটআপ থেকে 2 বাঁচাতে 0-সূচক ব্যবহার করুন এবং একটি চূড়ান্ত হ্রাস)

Ḷ»2Äi+_>2$

একটি পূর্ণসংখ্যার লিঙ্ক একটি পূর্ণসংখ্যা গ্রহণ করে, 0- সূচী n , যা একটি পূর্ণসংখ্যা ফেরত দেয়, a (n)

এটি অনলাইন চেষ্টা করুন! অথবা একটি পরীক্ষা-স্যুট দেখুন


নিস! আমার কাছে ছিল ḶÄ+3i+’, তবে প্রান্তের কেসগুলি কীভাবে পরিচালনা করা যায় তা ধারণা নেই।
ডেনিস

আমারও আছে Ḷ»ạ¥3জন্য Ḋ3,2;- মত আর সেখানে এই বিট জন্য terser হওয়া উচিত।
জোনাথন অ্যালান

Ḷ»2Äi+_>2$0-ভিত্তিক সূচক সহ 3 বাইট সাশ্রয় করে।
ডেনিস

ওহ দুর্দান্ত গল্ফ! আমি 1 সূচক জমি আটকে ছিল।
জোনাথন অ্যালান


2

এমএটিএল , 22 বাইট

1y:"t0)@+h5M:yX-h]qw:)

nঅনুক্রমের প্রথম পদগুলি আউটপুট করে ।

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

ব্যাখ্যা

1         % Push 1
y         % Implicit input: n. Duplicate from below
":        % For each k in [1 2 ... n]
  t0)     %   Duplicate sequence so far. Get last entry, say m
  @+      %   Add k: gives m+k
  h       %   Concatenate horizontally
  5M      %   Push m+k again
  :       %   Range [1 2 ... m+k]
  y       %   Duplicate from below
  X-      %   Set difference
  h       %   Concatenate horizontally
]         % End
q         % Subtract 1, element-wise
w         % Swap. Brings original copy of n to the top
:)        % Keep the first n entries. Implicit display

আমি শেষে স্মাইলি পছন্দ করি, এখন আমি চাই আমার সমস্ত এমএটিএল প্রোগ্রাম হাসি দিয়ে শেষ হয়। :)
-

@ সুন্দর হ্যাঁ, আমি খুশি যে এটি এমএটিএল :
লুইস মেন্ডো



1

কিউবাসিক, 58 বাইট

DO
b=r+j
?b
r=b
FOR x=a+1TO b-1
?x
r=x
NEXT
a=b
j=j+1
LOOP

অনির্দিষ্টকালের জন্য ফলাফল। ফলাফলগুলি দেখতে আপনি SLEEP 1লুপটির অভ্যন্তরে একটি জুড়তে বা এটি LOOP WHILE b<100বা এর মতো কিছু তৈরি করতে চাইতে পারেন।

এটি মূলত কেবল অনুমানকে কার্যকর করে। লক্ষ্য করুন যে আমরা যে নম্বরগুলির জন্য ফিরে যাব তা সর্বদা সর্বাধিক সর্বাধিক লাফানো-নম্বর এবং তার আগে লাফ-টু সংখ্যার মধ্যে থাকবে। সুতরাং আমরা এই সীমাগুলি হিসাবে সংরক্ষণ করি aএবং তাদের মধ্যে সমস্ত সংখ্যা মুদ্রণের bজন্য একটি FORলুপ ব্যবহার করি।



1

আর , 70 বাইট

function(e){for(i in 1:e)F=c(setdiff((F+i):1-1,F),F[1]+i,F);rev(F)[e]}

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

  • 1-ইন্ডেক্স
  • -4 বাইট F@ জ্যাড পরামর্শের জন্য ধ্রুব ধন্যবাদ ব্যবহার করে
  • -জয়ুস্পে পরামর্শের জন্য তালিকাটি উল্টে -5 বাইটস
  • -২ বাইট @ জ্যাড পরামর্শের জন্য লুপের জন্য অকেজো বন্ধনীগুলি সরিয়ে ফেলছে
  • এর setdiffপরিবর্তে -2 বাইট ব্যবহার করুনx[x %in% y]

পূর্ববর্তী সংস্করণ (by৯ বাইট)



@ জ্যাড: আমি সবসময় এফ / টি ব্যবহার করতে ভুলে গিয়েছিলাম ... আমি এটির সাহায্য করতে পারি না, আমি "অনিরাপদ কোড" এড়াতে খুব আগ্রহী: ডি
ডিগএমআল

1
বিপরীতে তালিকাগুলি তৈরি করা সাশ্রয় দেয় 5 bytesএবং সংক্রমণের একগুচ্ছ কারণ তৈরি করে!
জিউসেপ

এটি এমনকি অনিরাপদ নয় যদি F/Tফাংশন সংজ্ঞাতে নতুন সংজ্ঞা দেওয়া হয় না। এটা তোলে না (IIRC) গ্লোবাল মান পরিবর্তন করেF/T
JAD


1

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

def f(z):[s.extend([s[-1]+n]+[x for x in range(s[-1]+1,s[-1]+n)if not x in s]) for n in range(1,z)if len(s)<z];return s    

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

ইনপুট এক্স দেওয়া, ক্রমের প্রথম এক্স পদ আউটপুট,

আমি পাইথন শিখছি এবং এই চ্যালেঞ্জগুলি বিষয়গুলিকে আরও আকর্ষণীয় করে তুলেছে।

সম্পাদনা করুন: কিছু সাদা জায়গা শেভ করুন


পিপিসিজিতে আপনাকে স্বাগতম! আপনি আরো কিছু স্পেস পরিত্রাণ পেতে পারেন for n in range(1,z) if len(s) < z]; return s: for n in range(1,z)if len(s)<z];return s
লাইকনি

0

জেলি , 16 বাইট

RÄṬŻk²Ḋ$ṙ€-Ø.;Fḣ

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

বিদ্যমান জেলি উত্তরের চেয়ে একটি বাইট দীর্ঘ তবে এটি সম্ভবত কিছুটা গল্ফ হতে পারে। RÄṬŻk²Ḋ$ছোট হতে পারে।

18 বাইট

RÄṬŻk²Ḋ$‘ṙ€1FŻŻỤ’ḣ

দীর্ঘ কিন্তু ভিন্ন।



0

পার্ল 6 , 52 বাইট

(0,{((^max @_)∖@_).min.?key//(1+@_[*-1]+$++)}...*)

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

এটি ...অপারেটরটি ব্যবহার করে একটি জেনারেটর এক্সপ্রেশন । এটি এর @_মাধ্যমে পূর্বের ক্রমগুলির ফাঁকগুলি সন্ধান করে ((^max @_)∖@_).min.?key:

      @_  # prior sequence values         [0,1,3]
  max @_  # largest prior sequence value       3
 ^        # the Range 0..max @_            0,1,2
(       )∖@_  # set subtract prior seq     -0,1  -> (2=>True)
            .min  # smallest unseen value  2=>True
                .?key  # set yields pairs  2

?প্রাথমিক মান যা নেই জন্য প্রয়োজনীয় .key। যদি কোনও ফাঁক খুঁজে পাওয়া যায় না, তবে এটি $তালিকার শেষ মানটিতে n ( পরিবর্তনশীল এখানে ) যুক্ত করে, 0 টি ত্রুটি করে বন্ধের জন্য একটিকে যুক্ত করে।


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