একটি পয়েন্টার ক্রম তৈরি করুন


12

যাক একটি পয়েন্টার ক্রম নির্ধারণ কোনো ক্রম যেমন হতে পারে, একটি (ঢ) = A ((ঢ-1) - (ক (ঢ -1))) forall এন কিছু সসীম সংখ্যা তার চেয়ে অনেক বেশী। উদাহরণস্বরূপ, যদি আমাদের ক্রমটি শুরু হয়

3 2 1 

আমাদের পরবর্তী শব্দটি হবে 2, কারণ a (n-1) = 1 , (n-1) -1 = 1 , a (1) = 2 (এই উদাহরণটি শূন্য সূচক তবে আপনি গণনাটি কী সূচক ব্যবহার করবেন তা বিবেচ্য নয়) সর্বদা একই থাকুন।)। আমরা যদি প্রক্রিয়াটির পুনরাবৃত্তি করি তবে আমরা অসীম ক্রম পাই

3 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2

কার্য

ইতিবাচক পূর্ণসংখ্যার আউটপুট পয়েন্টার সিকোয়েন্সের কিছু অ্যারে দিয়ে সেই অ্যারে দিয়ে শুরু করা হয়েছে।

আউটপুট ধরণের

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

আপনি দুটি ইনপুট, প্রারম্ভিক অ্যারে এবং একটি সূচকও বেছে নিতে পারেন। আপনি যদি এটি করতে চান তবে আপনার কেবলমাত্র সেই সূচীতে ক্রমানুসারে শব্দটির আউটপুট প্রয়োজন।


সিকোয়েন্স শুরুর আগে আপনাকে কখনই অনুক্রমের প্রয়োজন হবে না that উদাহরণস্বরূপ 3কোনও বৈধ ইনপুট নয় কারণ 3পরের শব্দটির সমাধান করার জন্য আপনার শর্তাদি প্রয়োজন ।

এটি তাই আপনার স্কোরটি কম স্কোরের সাথে আরও ভাল হওয়ার সাথে আপনার প্রোগ্রামের বাইট সংখ্যা হবে।

পরীক্ষার কেস

পরীক্ষার কেস সরলতার জন্য কাটা হয়

2 1   -> 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 ...
2 3 1 -> 2 3 1 3 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 2 1 2 ...
3 3 1 -> 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 3 3 1 3 ...
4 3 1 -> 4 3 1 3 4 4 3 3 4 4 4 3 4 4 4 4 3 4 4 4 4 3 4 4 4 4 3 4 ...

এটা আউটপুট অনুমোদিত হয় এন ইনপুট অ্যারের ছাড়াও অতিরিক্ত পদ? অথবা ইনপুট হিসাবে সরবরাহকৃতগুলির পরে শুরু হওয়া এন- তম শব্দটি?
লুইস মেন্ডো

@ লুইস মেন্ডো অবশ্যই নিশ্চিত করুন যে কোনও ইনডেক্সিং ঠিক আছে।
অ্যাডহক গার্ফ হান্টার

উত্তর:


8

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

a=>f=n=>a[n]||f(--n-f(n))

একটি বেনামে ফাংশন যা বলা হয়, এমন একটি ফাংশন তৈরি করে fযা ক্রমটিতে একটি নির্দিষ্ট সূচীতে আইটেমটি দেয়।

আমি যদি কিছু ভুল বুঝি তবে দয়া করে আমাকে জানান ...


আপনি ভিতরে f(n)থেকে কল f(n)। আমি মনে করি না যে এটি কখনও শেষ হবে, তবে আমি জেএসকে জানি না।
অ্যাডহক গার্ফ হান্টার

@FunkyComputerMan যখন nকম যথেষ্ট পায় a[n]একটি truthy মান হবে, তাই ||শর্ট সার্কিট হবে এবং অসীম recursing থেকে এটা প্রতিরোধ।
ইটিএইচ প্রডাকশনগুলি

হ্যাঁ আমি এটি পেয়েছি কিন্তু nপ্রতিটি কলের সাথে কোনও কম পাওয়া যায় না। আমি নিশ্চিত যে nআপনার দৈর্ঘ্যের চেয়ে বড় হলে aকখনও থামবে না।
অ্যাডহক গার্ফ হান্টার

2
@FunkyComputerMan এটা প্রতিটি কলের সঙ্গে নিম্ন পেতে যায় --nবরাদ্দ nকরতে n-1তাই এটি পাশে রেফারেন্স decremented পড়ুন হবে n
এরিক আউটগল্ফার

2
@ ফানকি কম্পিউটার কম্পিউটার --nহ্রাস n, যার অর্থ এটি f(--n-f(n))হ'লf((n-1)-f(n-1))
ইটিএইচ প্রোডাকশনগুলি

5

কান্ড , 7 6 বাইট

¡S!o_L

অসীম তালিকা প্রদান করে। এটি অনলাইন চেষ্টা করুন! দ্রষ্টব্য যে টিআইওর ফলাফলটি ছাঁটাই করতে এবং মুদ্রণ করতে কিছু সময় সময় নেয়।

ব্যাখ্যা

অপারেটরের ¡বিভিন্ন অর্থ রয়েছে। এখানে আমি "বিদ্যমান তালিকাগুলির তালিকা থেকে কোনও নতুন উপাদানকে গণনা করে এমন একটি ক্রিয়াকলাপ পুনরাবৃত্তি করে অসীম তালিকা তৈরি করুন" ব্যবহার করছি। দৈর্ঘ্য N এর তালিকা দেওয়া , নতুন উপাদানটিতে 1-ভিত্তিক সূচক এন + 1 থাকবে । আমাদের যা করতে হবে তা হল ফলাফলের সাহায্যে তালিকার শেষ উপাদানটি (যা পূর্বের মান) এবং সূচকে অবহেলা করা।

¡S!o_L  Implicit input.
¡       Construct infinite list by iterating this function on input:
 S!      Element at index
    →    last element
  o_     negated.

4

হাস্কেল , 36 বাইট

একটি তালিকা নেয় এবং একটি ক্রিয়াকলাপ দেয় যা অনুক্রমকে সূচক করে

l!n|n<length l=l!!n|e<-n-1=l!(e-l!e)

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

ব্যাখ্যা

এখানে আমরা একটি ফাংশন সংজ্ঞায়িত করছি যা !একটি তালিকা lএবং একটি সূচক গ্রহণ করে n। যদি সূচকের nদৈর্ঘ্যের চেয়ে কম হয় , অন্যথায় আমরা ফিরে আসি । এটি প্রশ্নটিতে আমি যে ফাংশন দিয়েছিলাম তার পুনরাবৃত্ত সংজ্ঞা অনুসরণ করে।llnl!((n-1)-l!(n-1))

এখানে একই প্রোগ্রাম ungolfed হয়।

a l n
 |n<length l = l!!n
 |otherwise = (a l) ((n-1) - (a l) (n-1))

আমি ব্যবহার e<-n-1অন্যথায় পরিবর্তে যখন বরাদ্দ বাইট সংরক্ষণ করতে n-1করতে eযাতে ভবিষ্যতে এগুলি ব্যবহার করা যাবে।


4

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

:"tt0)_)h

প্রাথমিক শর্তাবলী n এর পরে শর্তাবলী (চ্যালেঞ্জের দ্বারা অনুমোদিত) আউটপুট দেয় , যেখানে এন ইনপুট হিসাবে নেওয়া ধনাত্মক পূর্ণসংখ্যা।

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

ব্যাখ্যা

:"      % Implicitly input n. Do the following n times
  tt    %    Duplicate the sequence so far, twice. In the first iteration this
        %    implicitly inputs the array of initial terms
  0)    %    Get value of the last entry, say m
  _)    %    Get value of the entry which is m positions back from the last
  h     %    Append. This extends the array with the new entry
        % Implicit end. Implicitly display



2

স্ট্যান্ডার্ড এমএল (এমএলটন) , 58 বাইট

fun a$n=if n<length$then List.nth($,n)else a$(n-1-a$(n-1))

এটি অনলাইন চেষ্টা করুন! ফাংশনটি aপ্রাথমিক তালিকা এবং একটি সূচক নেয় এবং সেই সূচীতে ক্রম উপাদানটি প্রদান করে। ব্যবহারের উদাহরণ: a [4,3,1] 5ফলন 4


2

জেলি , 6 বাইট

NṪịṭµ¡

একটি ক্রম লাগে এস এবং একটি পূর্ণসংখ্যা , এবং যোগ করে করার পদ এস

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

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

NṪịṭµ¡  Main link. Left argument: S (sequence). Right argument: k (integer)

    µ¡  Combine the links to the left into a (variadic) chain and call it k times.
        The new chain started by µ is monadic, so the chain to the left will be
        called monadically.
N           Negate; multiply all elements in S by -1.
 Ṫ          Tail; retrieve the last element, i.e., -a(n-1).
  ị         At-index; retrieve the element of S at index -a(n-1).
            Since indexing is modular and the last element has indices n-1 and 0,
            this computes a( (n-1) - a(n-1) ).
   ṭ        Tack; append the result to S.


1

সিজেম, 10 বাইট

{{(_j-j}j}

সিজেমের পক্ষে, এটি খুব ভাল করে (এটি এমনকি 05ab1e বীট!)।

এটি একটি বেনামে ব্লক যা i nস্ট্যাকের ফর্মটিতে ইনপুটটি প্রত্যাশা করে, যেখানে iসিকোয়েন্সে সূচক এবং nপ্রারম্ভিক সংখ্যার অ্যারে।

এটি এত ভালভাবে কাজ করার কারণটি jঅপারেটরটির কারণে , যা শুরুর মানগুলির সেট থেকে স্মৃতিযুক্ত পুনরাবৃত্তি সরবরাহ করে।

ব্যাখ্যা:

{    Function j(n) with [j(0), j(1), j(2)] = [4, 3, 1], return j(6):
 (    Decrement:    5
 _    Duplicate:    5 5
 j    j(5):
  (    Decrement:   5 4
  _    Duplicate:   5 4 4
  j    j(4):
   (    Decrement:  5 4 3
   _    Duplicate:  5 4 3 3
   j    j(3):
    (    Decrement: 5 4 3 2
    _    Duplicate: 5 4 3 2 2
    j    j(2) = 1:  5 4 3 2 1
    -    Subtract:  5 4 3 1
    j    j(1) = 3:  5 4 3 3
   -    Subtract:   5 4 0
   j    j(0) = 4:   5 4 4
  -    Subtract:    5 0
  j    j(0) = 4:    5 4
 -    Subtract:     1
 j    j(1) = 3:     3
}j   End:           3

1

জাভা (8), 60 বাইট

int a(int[]a,int n){return n<a.length?a[n]:a(a,--n-a(a,n));}

দুটি ইনপুট (পূর্ণসংখ্যা-অ্যারে aএবং পূর্ণসংখ্যা n) নেয় nএবং ক্রমটির 'ম মানকে আউটপুট করে ।

ব্যাখ্যা:

এখানে চেষ্টা করুন। (কয়েক সেকেন্ড সময় নিতে পারে))

int a(int[]a,int n){        // Method with int[] and int parameters and int return-type
  return n<a.length?        //  If input `n` is smaller than the length of the array:
          a[n]              //   Output the `n`'th item of the array
         :                  //  Else:
          a(a,--n-a(a,n));  //   Recursive call with `n-1-a(n-1)`
}                           // End of method

0

পার্ল, 38 +3 (-ানল) বাইট

{print;push@F,$_=$F[$#F-$F[$#F]];redo}

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


আপনার টিআইও লিঙ্কটি একটি ভিন্ন প্রোগ্রামে যায়।
এক্সকালি

@ এক্সকালি আই লিঙ্কটি ঠিক করেছে তবে কার্যকর করতে পারেনি কারণ সার্ভারের সাথে সংযোগ স্থাপন করতে পারেনি।
নাহুয়েল ফিউইলুল

0

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

#`r[=ˆŽ¼}[¯¾¯¾è-è=ˆ¼

ইনপুটটি স্থান-বিচ্ছিন্ন স্ট্রিং হিসাবে প্রত্যাশা করে, আউটপুট অনির্দিষ্টকালের জন্য রাখে; বেশ সরল বাস্তবায়ন

উদাহরণ রান:

$ 05ab1e -e '#`r[=ˆŽ¼}[¯¾¯¾è-è=ˆ¼' <<< '3 2 1'
3
2
1
2
2
1
2
2
1
2
2
1
2
2
1
2
2
1
2
2
1
2
2
1
2
2
1
2
2
1
2
2
1
2
2
1
2
2
1
2
2
1
2
2
1
2
2
1
2
2
1
2
2
1
2
2
1
2
2
1
2
2
1
2

0

জাভা (ওপেনজেডিকে 8) , 95 93 91 90 বাইট

a->i->{int j=0,b[]=new int[++i];for(;j<i;j++)b[j]=j<a.length?a[j]:b[~-j-b[j-1]];return b;}

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


b[(j-1)-...]সমান নয় কি b[~-j-...]?
জনাথন ফ্রেচ

থেকে আপনি তিন বিপরীত করতে j>=a.lengthকরতে j<a.lengthএকটি বাইট সংরক্ষণ করতে: j<a.length?a[j]:b[~-j-b[j-1]]। এছাড়াও আমি কৌতূহলী: আপনি কেন লুপ পদ্ধতির সাথে গেলেন, যখন চ্যালেঞ্জের বিবরণে নিজেই ব্যাখ্যা করা হয়েছে এমন পুনরাবৃত্তির পদ্ধতির মাত্র 60 বাইট?
কেভিন ক্রুইজসেন

আমি পদ্ধতিগুলির সাথে উত্তর দিতে পছন্দ করি না এবং এএএফআইকে একটি স্ব-রেফারেন্সিং ফাংশনটির একটি সম্পূর্ণ প্রোগ্রামের উত্তর প্রয়োজন
রবার্তো গ্রাহাম

@ রবার্তো গ্রাহাম নং, পুনরাবৃত্ত হওয়া পদ্ধতিটি ল্যাম্বডা হতে পারে না, তাই জাভা style স্টাইলের পদ্ধতি হতে হবে। তবে এটি এখনও সম্পূর্ণ প্রোগ্রামের পরিবর্তে একটি (জাভা 7 স্টাইল) পদ্ধতি পোস্ট করার অনুমতি দিয়েছে।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন আমি আপনার উত্তরটিকে একটি দ্বি ফাংশনে পরিণত করেছি, অনলাইনে চেষ্টা করে দেখুন! । এটি সম্ভব তবে আপনার পুরো প্রোগ্রামটি পোস্ট করা দরকার কারণ এটি মেইন
রবার্তো গ্রাহাম

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