রান-লেংথ এনকোডিংয়ের চক্র


26

কিছু বাইনারি ক্রম বিবেচনা করুন, ব্যবহার করে 1এবং 2, যেমন:

1, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1 ...

এর রান দৈর্ঘ্য লিখুন:

1, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1 ...
_  _  ____  ____  _  _  _  ____
1, 1, 2,    2,    1, 1, 1, 2,   ...

এই ক্ষেত্রে আমরা অন্য বাইনারি ক্রম পেতে ঘটতে। অবশ্যই, এটির নিশ্চয়তা নেই (উদাহরণস্বরূপ যদি আমরা প্রক্রিয়াটি পুনরাবৃত্তি করি তবে তৃতীয় রানটি হবে 3) তবে আসুন আমরা ধরে নিই do

এখন প্রশ্নটি হ'ল আমরা কি এমন একটি সিকোয়েন্স পেতে পারি যে একাধিকবার এই ধরণের রান-লেংথ এনকোডিং প্রয়োগ করা আমাদের আসল ক্রমটি ফিরিয়ে দেয়? 1-এর চক্র দৈর্ঘ্যের (অর্থাত্ এই রূপান্তরের একটি নির্দিষ্ট বিন্দু) জন্য আমরা ওলেনবার্গার-কোলাকোস্কি সিকোয়েন্সটি পাই ( ওইআইএস এন্ট্রি A0000002 ):

1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, ...

(আসলে আরও একটি সমাধান রয়েছে: আমরা নেতৃস্থানীয় বিষয়গুলিও বাদ দিতে পারি 1))

দৈর্ঘ্য -২ একটি চক্র সম্পর্কে কী? এটাও সম্ভব! নিম্নলিখিত দুটি সিকোয়েন্সগুলি একে অপরের রান দৈর্ঘ্যের তালিকা:

1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, ...
2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, ...

(এগুলি ওএআইএস এন্ট্রি A025142 এবং A025143 This এটিই একমাত্র সমাধান))

আমরা 3 দৈর্ঘ্যের একটি চক্র খুঁজে পেতে পারি? অবশ্যই, এখানে প্রতিটি ক্রম হ'ল পরবর্তীটির রান-দৈর্ঘ্য এনকোডিং (এবং তৃতীয়টি প্রথমটির দৈর্ঘ্য এনকোডিং):

1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, ...
1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, ...
2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, ...

এক্ষেত্রে আরও একটি সমাধান রয়েছে। দেখা যাচ্ছে যে আমরা প্রতিটি চক্র দৈর্ঘ্যের জন্য এই জাতীয় একটি চক্রটি খুঁজে পেতে পারি। প্রকৃতপক্ষে, দৈর্ঘ্য n এর স্বতন্ত্র চক্রের সংখ্যা OEIS এন্ট্রি A001037 দ্বারা দেওয়া হয়েছে (এটি কোনও চক্রের ক্রমকে প্রথম হিসাবে বিবেচনা করা হয় তার স্বেচ্ছাসেবী পছন্দ গণনা করে না)।

মজাদার ঘটনা: যতটা অসম্ভব বলে মনে হচ্ছে, জটিল মানচিত্র অধ্যয়ন করে এই চ্যালেঞ্জটি অনুপ্রাণিত হয়েছিল f(z) = z - 1/z। এই চ্যালেঞ্জটির সাথে সেই মানচিত্রটির কী আছে তা যদি কেউ খুঁজে বের করে তবে সে একটি কুকি পায়।

চ্যালেঞ্জ

একটি চক্রের দৈর্ঘ্য k > 0এবং একটি অনুক্রমের দৈর্ঘ্য দেওয়া হয়েছে n > 0, উপরের রান-দৈর্ঘ্যের রূপান্তরের অধীনে একটি চক্র গঠনকারী স্বতন্ত্র (অসীম) বাইনারি ক্রমের প্রথম nপদগুলি আউটপুট দেয় k। যদি একাধিক চক্র বিদ্যমান থাকে তবে আপনি তাদের যেকোন একটিকে আউটপুট দিতে পারেন। এটি আপনার উপর নির্ভর করে চক্রের কোন অনুক্রমটি শুরু হবে এবং কোন দিকটি চক্রটি যায় (তাই আপনি উভয়কে এমনভাবে আউটপুট করতে পারেন যাতে প্রতিটি অনুক্রমটি পরবর্তীটিকে বর্ণিত হয়, বা প্রতিটি ক্রমটি পূর্ববর্তীটিকে বর্ণনামূলকভাবে বর্ণনা করে)।

আপনি STDIN (অথবা নিকটতম বিকল্প), কমান্ড-লাইন আর্গুমেন্ট বা ফাংশন আর্গুমেন্টের মাধ্যমে ইনপুট নিয়ে কোনও প্রোগ্রাম বা ফাংশন লিখতে এবং STDOUT (বা নিকটতম বিকল্প), ফাংশন রিটার্ন মান বা ফাংশন (আউট) প্যারামিটারের মাধ্যমে ফলাফল আউটপুট করতে পারেন।

আউটপুট যে কোনও সুবিধাজনক, দ্ব্যর্থহীন, নেস্টেড তালিকার ফর্ম্যাটে হতে পারে যেমন বাইরের মাত্রা kএবং অভ্যন্তরীণ মাত্রা n

স্ট্যান্ডার্ড বিধি প্রযোজ্য।

অতিরিক্ত উদাহরণ

এখানে কিছু উদাহরণঃ. তবে আমি যেমন বলেছি, সমাধানগুলি অনন্য নয়, সুতরাং আপনার নিজের সমাধানগুলি পৃথক হতে পারে এবং এখনও সঠিক হতে পারে। যদিও এগুলি আপনাকে সমাধান দিয়ে আসতে সহায়তা করবে। প্রতিটি উদাহরণ k nঅনুক্রমগুলি অনুসরণ করে, যেমন প্রতিটি লাইন পরবর্তী (চক্রাকারে) বর্ণনা করে:

4 20
1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2
2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1
2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1
1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1

5 6
2, 2, 1, 2, 2, 1
1, 1, 2, 2, 1, 2
2, 1, 2, 2, 1, 1
1, 1, 2, 1, 1, 2
2, 1, 2, 2, 1, 2

8 20
2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2
1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1
2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2
2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2
1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1
2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2
1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1
2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1

13 50
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2
2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1
1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1
1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1
1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1
1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1

নোট করুন যে শেষ দুটি আউটপুটগুলির সমস্ত লাইন আলাদা হয় না, যদিও শেষ পর্যন্ত তারা nযথেষ্ট পরিমাণে বড় হত।

সম্পর্কিত প্রশ্নগুলি


1
আমরা জেনারেটরের একটি তালিকা আউটপুট করতে পারি?
ক্যালকুলেটরফলাইন

@ ক্যাটস আরেফ্লুফি নাপ, দুঃখিত (সম্ভবত পরবর্তী সময় ...)
মার্টিন এন্ডার

উত্তর:


6

সিজেএম (৪১ বাইট)

{Ma*{1:Bm<{1+ee{(1&B^)+}%e~A<0:B;}%}@:A*}

এটি একটি বেনাম ফাংশন যা ক্রমে স্ট্যাকের ইনপুট নেয় এবং স্ট্যাকের n kআউটপুট ছেড়ে দেয়। অনলাইন ডেমো

মূল ধারণাটি হ'ল লিন্ডন শব্দের কলাম দিয়ে শুরু করা [2 1 1 1 ...]এবং পুনরুক্তি ভিত্তিতে প্রসারিত করা উচিত যে প্রতিটি সারির প্রাথমিক উপাদান এবং বিকল্পটি জেনে আমরা রান-দৈর্ঘ্যের ডিকোডকে আরও বেশি উপাদান পেতে পারি knowing


3

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

~(a:b)?c=c:[c|a>1]++b?(3-c)
k!n=take k$take n<$>last(k!n)?2:map(?1)(k!n)

ডেমো:

*Main> 4!20
[[2,1,1,2,2,1,2,2,1,2,1,1,2,1,1,2,2,1,2,1],[1,1,2,1,2,2,1,1,2,1,1,2,2,1,2,2,1,2,1,1],[1,2,1,1,2,1,1,2,2,1,2,1,1,2,1,2,2,1,1,2],[1,2,2,1,2,1,1,2,1,2,2,1,1,2,1,1,2,1,2,2]]

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