কোলকোস্কির মতো স্ব-রেফারেন্সিং ক্রম


19

কোলাকোস্কি সিকোয়েন্স (OEIS A000002 ) এইভাবে সংজ্ঞায়িত করা হয়:

কোলকোস্কি সিকোয়েন্সটি এমন একটি ক্রম যা অন্তর্ভুক্ত করে 1এবং 2এবং nঅনুক্রমের তম উপাদানটি nক্রম নিজেই সমান উপাদানের (রান) তম গ্রুপের দৈর্ঘ্য । অনুক্রমের প্রথম 20 টি শর্তাদি এবং সংশ্লিষ্ট দৈর্ঘ্যগুলি হ'ল:

1 2 2 1 1 2 1 2 2 1 2 2 1 1 2 1 1 2 2 1
- --- --- - - --- - --- --- - --- --- -
1  2   2  1 1  2  1  2   2  1  2   2  1

মূলত, কোলকোস্কি অনুক্রমের সমান উপাদানের গ্রুপগুলির দৈর্ঘ্য হ'ল কোলকোস্কি ক্রম নিজেই।

এতদূর, এত ভাল, তবে কেন আমাদের নিজেদের মধ্যে 1এবং 2? আমরা যাচ্ছি না! দুটি ইনপুট, ধনাত্মক পূর্ণসংখ্যা Aএবং একটি পূর্ণসংখ্যার একটি অ্যারে দেওয়া, কোলকোস্কি-জাতীয় ক্রমের Nপ্রথম Nপদগুলি সাইক্লিং দ্বারা সংজ্ঞায়িত করে ফিরিয়ে দিন A। এটির উপলব্ধি আরও ভালভাবে পেতে, বন্ধনীতে সদ্য যুক্ত হওয়া গ্রুপগুলির দৈর্ঘ্য সহ একটি কাজের উদাহরণ এখানে:

A = [2, 3, 1]
N = 25

2: [[2], 2 ]
3: [ 2 ,[2], 3 , 3 ]
1: [ 2 , 2 ,[3], 3 , 1 , 1 , 1 ]
2: [ 2 , 2 , 3 ,[3], 1 , 1 , 1 , 2 , 2 , 2 ]
3: [ 2 , 2 , 3 , 3 ,[1], 1 , 1 , 2 , 2 , 2 , 3 ]
1: [ 2 , 2 , 3 , 3 , 1 ,[1], 1 , 2 , 2 , 2 , 3 , 1 ]
2: [ 2 , 2 , 3 , 3 , 1 , 1 ,[1], 2 , 2 , 2 , 3 , 1 , 2 ]
3: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 ,[2], 2 , 2 , 3 , 1 , 2 , 3 , 3 ]
1: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 ,[2], 2 , 3 , 1 , 2 , 3 , 3 , 1 , 1 ]
2: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 ,[2], 3 , 1 , 2 , 3 , 3 , 1 , 1 , 2 , 2 ]
3: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 , 2 ,[3], 1 , 2 , 3 , 3 , 1 , 1 , 2 , 2 , 3 , 3 , 3 ]
1: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 , 2 , 3 ,[1], 2 , 3 , 3 , 1 , 1 , 2 , 2 , 3 , 3 , 3 , 1 ]
2: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 , 2 , 3 , 1 ,[2], 3 , 3 , 1 , 1 , 2 , 2 , 3 , 3 , 3 , 1 , 2 , 2 ]
C: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 , 2 , 3 , 1 , 2 , 3 , 3 , 1 , 1 , 2 , 2 , 3 , 3 , 3 , 1 , 2 , 2 ]

একটি শীর্ষস্থানীয় সহ আরও কাজের উদাহরণ এখানে 1:

A = [1, 2, 3]
N = 10

1: [[1]]
2: [ 1 ,[2], 2 ]
3: [ 1 , 2 ,[2], 3 , 3 ]
1: [ 1 , 2 , 2 ,[3], 3 , 1 , 1 , 1 ]
2: [ 1 , 2 , 2 , 3 ,[3], 1 , 1 , 1 , 2 , 2 , 2 ]
C: [ 1 , 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 ]

আপনি উপরে দেখতে পারেন, চূড়ান্ত ফলাফল N = 10উপাদান কাটা ছিল । nম উপাদান হওয়া উচিত কতকাল nতম সমান-উপাদানের গ্রুপ, এমনকি যদি উপাদান নিজেই গ্রুপ এটা বোঝায় মধ্যে জন্যে। উপরের ক্ষেত্রে 1যেমন, প্রথমটি প্রথম এই জাতীয় গ্রুপকে বোঝায় যা কেবল এটিই 1, এবং প্রথমটি 2দ্বিতীয়টি যেমন এর সাথে শুরু হয় তাকে বোঝায়।

বিধি

  • আপনি ধরে নিতে পারেন যে Aকখনও কখনও দুই বা ততোধিক টানা সমান উপাদান থাকবে না। Aএকাধিকবার পূর্ণসংখ্যা থাকতে পারে তবে প্রথম এবং শেষের উপাদানগুলি সমান হবে না এবং Aএতে কমপক্ষে 2 টি উপাদান থাকবে (যেমন [1, 2, 2, 3], [2, 4, 3, 1, 2]এবং [3]দেওয়া হবে না) given এটি কারণ যদি ক্রমাগত সমতুল্য উপাদান থাকে তবে চূড়ান্ত ফলাফলটি এই জাতীয় ক্রমের জন্য একটি অবৈধ উপসর্গ হত।
  • আপনি ধরে নিতে পারেন Aকেবল ইতিবাচক পূর্ণসংখ্যা রয়েছে (যেমন ক্রমটি অন্যথায় সংজ্ঞায়িত হবে)।
  • আপনি ধরে নিতে পারেন Nএকটি অ-নেতিবাচক পূর্ণসংখ্যা ( N >= 0)।
  • আপনি অনুরোধ করা ছাড়া আরও শর্তাবলী ফিরে আসতে পারবেন না।
  • যে কোনও স্ট্যান্ডার্ড লুফোলগুলি ব্যবহার করা কঠোরভাবে নিষিদ্ধ।
  • আপনি যেকোন যুক্তিসঙ্গত I / O পদ্ধতি ব্যবহার করতে পারেন ।
  • আপনার উত্তরটি প্রাকৃতিক ভাষার সীমা ছাড়িয়ে কাজ করতে হবে না, তবে তাত্ত্বিকভাবে আপনার অ্যালগরিদমকে নির্বিচারে বড় ইনপুট এবং পূর্ণসংখ্যার জন্য কাজ করা উচিত
  • এটি , তাই সংক্ষিপ্ত উত্তরটি জেতে।

পরীক্ষার মামলা

[5, 1, 2], 0 -> []
[2, 3, 1], 25 -> [2, 2, 3, 3, 1, 1, 1, 2, 2, 2, 3, 1, 2, 3, 3, 1, 1, 2, 2, 3, 3, 3, 1, 2, 2]
[1, 2, 3], 10 -> [1, 2, 2, 3, 3, 1, 1, 1, 2, 2]
[1, 2], 20 -> [1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1]
[1, 3], 20 -> [1, 3, 3, 3, 1, 1, 1, 3, 3, 3, 1, 3, 1, 3, 3, 3, 1, 1, 1, 3]
[2, 3], 50 -> [2, 2, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 3, 3, 2, 2, 3, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 2, 3, 3]
[7, 4], 99 -> [7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 7, 7, 7, 7, 4, 4, 4, 4, 7, 7, 7, 7, 4, 4, 4, 4, 7, 7, 7, 7, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4]
[1, 2, 3], 5 -> [1, 2, 2, 3, 3]
[2, 1, 3, 1], 2 -> [2, 2]
[1, 3, 5], 2 -> [1, 3]
[2, 3, 2, 4], 10 -> [2, 2, 3, 3, 2, 2, 2, 4, 4, 4]

স্যান্ডবক্স (2 কে + ব্যবহারকারী)
এরিক আউটগলফার


@ মার্টিনএেন্ডার ভেবেছিলেন আমি ইতিমধ্যে এটি সংযুক্ত করেছি
এরিক দ্য আউটগল্ফার

উত্তর:


9

কাস্তে , 8 বাইট

Ṡωȯ↑⁰`Ṙ¢

প্রথমে দৈর্ঘ্য, তারপরে তালিকা নেয়। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

Ṡωȯ↑⁰`Ṙ¢  Inputs: n=9 and x=[2,1,3]
Ṡωȯ       Apply the following function to x until a fixed point is reached:
           Argument is a list, say y=[2,2,1,3,3,3]
       ¢   Cycle x: [2,1,3,2,1,3..
     `Ṙ    Replicate to lengths in y: [2,2,1,1,3,2,2,2,1,1,1,3,3,3]
   ↑⁰      Take first n elements: [2,2,1,1,3,2,2,2,1]
          Final result is [2,2,1,1,3,2,1,1,1], print implicitly.

8

পাইথ, 14 বাইট

u<s*V]M*QlGGvz

এটি অনলাইনে ব্যবহার করে দেখুন: বিক্ষোভ বা পরীক্ষার স্যুট

ব্যাখ্যা:

u                 start with G = input array
       *QlG       repeat input array
     ]M           put every element into its own list
   *V      G      repeat every list vectorized by the counts in G
  s               flatten
 <          vz    take the first (second input line) numbers
                  and assign them to G until you reach fixed point

আকর্ষণীয় বিকল্প:u&VSvzs*V]M*Ql
জাকুব

1
এটি একটি দুর্দান্ত পদ্ধতির।
এরিক আউটগলফার

5

জাভা 8, 151 + 19 119 115 বাইট

a->n->{int c=0,l[]=new int[n],i=0,j;for(;i<n;i++)for(j=0;j<(c==i?a[i]:l[i])&c<n;j++)l[c++]=a[i%a.length];return l;}

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


1
আপনি দুটি &&&a->n->{int c=0,l[]=new int[n],i=0,j;for(;i<n;i++)for(j=0;j<(c==i?a[i]:l[i])&c<n;j++)l[c++]=a[i%a.length];return l;}
বুনিয়াদি

সুপারিশ (c==i?a:l)[i]পরিবর্তেc==i?a[i]:l[i]
ceilingcat

5

আর , 120 114 108 বাইট

-6 বাইট প্ল্যানাপাস ধন্যবাদ

function(A,N){i=inverse.rle
w=length
a=rle(A)
while(w(a$l)<N){a[[1]]=i(a)
a[[2]]=rep(A,l=w(a$l))}
i(a)[0:N]}

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

বেনামে ফাংশন; ধারাবাহিকভাবে RLE inverts, লেন্থ প্রতিস্থাপন a[[1]]উল্টানো RLE সঙ্গে, এবং মান a[[2]]সঙ্গে Aদৈর্ঘ্য থেকে প্রতিলিপি যে সমান a$l


@ প্লানাপাস আহ, ঠিক আছে! আমি এটি চেষ্টা করেছিলাম এবং আর ক্র্যাশ করেছি কারণ অ্যাসাইনমেন্টে, এটি তৈরি করবে a$lএবং a$vযদি সেগুলি না থাকে তবে তারা কলটিতে কোনও প্রভাব ফেলবে না inverse.rle, ফলে অসীম লুপ তৈরি হবে। আমি মনে করি আমি শুধু ব্যবহার করতে পারেন a$lমধ্যে whileঅবস্থা এবং repশর্ত।
জিউসেপ

5

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

লাইকোনি এবং পিপিসিজি হাস্কেল চ্যাটরুম, অফ মোনডস অ্যান্ড মেনে এই উত্তরটি ডিবাগ করতে এবং গল্ফ করতে তাদের সহায়তার জন্য লাইকোনি এবং ফ্লাওয়ারকে অনেক ধন্যবাদ । গল্ফিং পরামর্শ স্বাগত! এটি অনলাইন চেষ্টা করুন!

(.f).take
f a@(z:_)=(z<$[1..z])++do i<-[1..];cycle a!!i<$[1..f a!!i]

প্রথম লাইন একটি বেনামী ফাংশন। দ্বিতীয় লাইনটি অসীম তালিকা অনুধাবন যা আমাদের কোলকস্কির মতো ক্রম তৈরি করে।

ব্যাখ্যা

প্রথমত, আমরা সাথে zপ্রধান হিসাবে সংজ্ঞায়িত করি । তারপরে, আমরা এর সাথে ক্রমটি আরম্ভ করব ।aa@(z:_)(z<$[1..z])

তারপরে, এর 1পরে, do i<-[1..]আমরা নিম্নলিখিতটি ক্রমটিতে সংযোজন করি: cycle a!!i<$[1..f a!!i]যা সংযুক্ত সময়ের (চক্রযুক্ত) iচতুর্থ সদস্য endedaf a!!i

অবশেষে, বেনামে ফাংশনটি কেবল nআমাদের কোলস্কোস্কির মতো ক্রমের প্রথম পদগুলি গ্রহণ করে ।


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