রমি সিকোয়েন্স তৈরি করুন


18

আপনার কাজটি হ'ল রমি সিকোয়েন্সের একটি ইনপুট nএবং আউটপুট উপাদান নেওয়া n, আমি যে ক্রম তৈরি করেছি (ওইআইএসের দিকে তাকানো আপনাকে সাহায্য করবে না)।

সংজ্ঞা

রমি সিকোয়েন্সের প্রতিটি উপাদান সত্য বা মিথ্যা মানগুলির একটি সেট is প্রাক্তন .: [true, false]

রমি সিকোয়েন্সের সদস্য গঠনের পদক্ষেপগুলি বেশ সহজ:

  1. প্রথম সূচক দিয়ে শুরু করুন, [](এটি উপাদান 0)।
  2. সত্যের বামেতম মিথ্যাটি সেট করুন। যদি কোনও মিথ্যা পরিবর্তন না হয় তবে তালিকার দৈর্ঘ্য 1 করে বাড়িয়ে নতুন তালিকার সমস্ত সদস্যকে ভুয়াতে সেট করুন।
  3. উপাদান পৌঁছানো পর্যন্ত পদক্ষেপ 2 পুনরাবৃত্তি করুন n

উদাহরণ

আসুন আমাদের ফাংশনটিকে এই হিসাবে সংজ্ঞায়িত করুন rummy(int n)(স্টাফ ইন {}উত্তরটি পাওয়ার জন্য নেওয়া একটি পদক্ষেপ):

>>> rummy(5)
{[]}
{[false]}
{[true]}
{[false, false]}
{[true, false]}
[true, true]

বিধি

  • স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।
  • আপনার ভাষার উপরের সংখ্যার সীমাতে ইনপুট 0 এর জন্য অবশ্যই কাজ করতে হবে।
  • আপনি ফিট দেখতে যে কোনও উপায়ে আউটপুট দিতে পারেন, তবে শর্ত থাকে যে আউটপুটটি সত্যবাদী / মিথ্যাগুলির একটি সেট।

তুচ্ছ বস্তু

আমি এটিকে "রমি সিকোয়েন্স" বলছি কারণ সূচক 2 থেকে শুরু করে, এটি প্রগ্রেসিভ রমিটির প্রতিটি রাউন্ডে আপনাকে যে সেটগুলি দিতে হবে তা নির্ধারণ করে , যেখানে মিথ্যা একটি বই এবং সত্যবাদী একটি রান।

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

>>> rummy(0)
[]

>>> rummy(1)
[false]

>>> rummy(6)
[false, false, false]

>>> rummy(20)
[true, true, true, true, true]

>>> rummy(1000)
[true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]

এটি বিপরীতে বাইনারি গণনার মতো
ধরণের

@ থ্রিএফএক্স বাদে যোগ 1করার সময় 11আপনি এর 000পরিবর্তে পান 100। ; পি
অ্যাডিসন ক্রম্প

1
আমাদের উত্তর কি এক সূচকযুক্ত হতে পারে?
ডাউনগোট

আমি মনে করি আপনার আরও কয়েকটি পরীক্ষার কেস অন্তর্ভুক্ত করা উচিত, উদাহরণস্বরূপ আউটপুটগুলি স্পষ্টভাবে উল্লেখ করা হলেও। আমার প্রথম সংশোধনটি কর্নার কেস 1 দিয়ে ভেঙে গেছে ...
ডেনিস

@ ভিটিসিএকএভিএসমোসেক এটি বাইজিক বাইনারি করে তুলবে (যার জন্য আমাদের একটি চ্যালেঞ্জও রয়েছে), তবে আরও বেশি পার্থক্য রয়েছে যে প্রতিটি সংখ্যা সর্বদা ফর্মের হয় 1*0*
মার্টিন ইন্ডার

উত্তর:


10

জাভাস্ক্রিপ্ট ES6, 94 92 72 70 66 64 বাইট

6 টি বাইট সংরক্ষিত নীলকে ধন্যবাদ!

n=>[...Array(a=Math.sqrt(8*n+1)-1>>1)].map((_,l)=>l<n-a*(a+1)/2)

আমি মনে করি না এটি আরও গল্ফ করা যেতে পারে। কমপক্ষে সমীকরণের সাথে।

ব্যাখ্যা

এগুলি দুটি প্রধান সমীকরণ ( nইনপুট):

(Math.sqrt(8*n+1)-1)/2

এটি আউটপুট অ্যারেটি করতে হবে এমন মোট আকার দেবে। আমার প্রোগ্রামে আমি এর >>1পরিবর্তে ব্যবহার করেছিলাম (...)/2বাইনারিতে প্রথম বিটের মান হ'ল 2 এর মান হ'ল এটি স্থানান্তরিত হওয়ার ফলেfloor(.../2)


n-a*(a+1)/2

এটি trueসেখানে পরিমাণ হবে। aএটি পূর্বের অভিব্যক্তির ফলাফল।


সিনট্যাক্সটি এটি করে:

[...Array(n)]

এই কোডটি [0, n)এই উত্তরের পরিসরের সাথে একটি অ্যারে তৈরি nকরে প্রথম সমীকরণ।


.map((_,l)=>l<n)এটি উপরের পরিসীমাটির মধ্য দিয়ে লুপ করবে, lএটি হ'ল পরিসরে বর্তমান আইটেমটি ধারণ করে চলক। যদি আইটেমটি ট্রুগুলির পরিমাণের চেয়ে কম হয় (দ্বিতীয় সমীকরণ দ্বারা নির্ধারিত হয়), তবে এটি ফিরে আসবে true, অন্যথায় false


2
>>1পরিবর্তে ব্যবহার করুন /2|0(_,l)=>পরিবর্তে ব্যবহার করুন .keys()
নীল

@ নীল ধন্যবাদ! এটি বেশ কিছুটা সাশ্রয় করেছে। আপনার শেষ পয়েন্ট অনুসারে, আপনি কি ব্যবহার করবেন Array.from()?, পূরণ, বা অন্য কিছু?
ডাউনগোট

1
না, আমি ভাবছিলাম [...Array(a)].map((_,l)=>)যা আমি বিশ্বাস করি যে এটি খানিকটা খাটো, তবে ()স্যুইচ করার সময় কিছু গুলি সরিয়ে ফেলার জন্য ভাল ক্যাপচার >>1, আমি এটি চিহ্নিত করিনি!
নীল

ওহ, এছাড়াও আছে a*-~a/2; আমি আগে কেন এটি ভেবে দেখিনি জানি না।
নীল

6

পাইথন, 51 বাইট

f=lambda n,i=0:n>i and f(n+~i,i+1)or[1]*n+[0]*(i-n)

1 এবং 0 এর একটি তালিকা আউটপুট করে।


5

পাইথ, 8 বাইট

_@{y/RQy

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

এটি তাত্পর্যপূর্ণ ধীর।

ব্যাখ্যা:

_@{y/RQyQQ    implicit Qs at the end, (Q = input)
       yQ     2*Q
    /RQ       divide each number in [0, 1, ..., 2*Q-1] by Q
              this results in a list of Q zeros and Q ones
   y          take all subsets
  {           remove duplicates
 @       Q    take the Qth element
_             print it reversed

5

জেলি , 13 11 বাইট

Ḷṗ2SÞ⁸ị1,0x

চ্যালেঞ্জ পোস্ট হওয়ার আগে কোডটি জেলির সর্বশেষতম সংস্করণে কাজ করে না, তবে এই সংস্করণে এটি কাজ করেছে , যা চ্যালেঞ্জের পূর্ববর্তী।

সূচকগুলি 1-ভিত্তিক। এটি অনলাইন চেষ্টা করুন! (কয়েক সেকেন্ড সময় নেয়) বা একবারে একাধিক ইনপুট যাচাই করুন

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

Ḷṗ2SÞ⁸ị1,0x  Main link. Argument: n (integer)

Ḷ            Unlength; yield [0, ..., n - 1].
 ṗ2          Take the second Cartesian power, i.e., generate the array of all
             pairs of elements of [0, ..., n - 1].
   SÞ        Sort the pairs by their sum. The sort is stable, so ties are broken
             by lexicographical order.
     ⁸ị      Retrieve the pair at index n.
       1,0x  Map [a, b] to a copies of 1 and b copies of 0.


4

জাভা, 117 110 বাইট

enum B{T,F};B[]r(int n){int i=0,c=0,j=0;while(n>=i)i+=++c;B[]a=new B[c-1];for(;j<n-i+c;)a[j++]=B.T;return a;}

আমার নিজের বুলিয়ান টাইপ তৈরি করেছে, যা আমাকে 7 বাইটস সংরক্ষণ করতে দেয়


এনামের সেই ব্যবহারটি চালাক। +1
অ্যাডিসন ক্রম্প


2

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

j=(2*input()+.25)**.5-.5
print[i/j<j%1for i in range(int(j))]

Solves জন্য এন = ঞ · (ঞ + 1 টি) / 2 । স্ট্যান্ডিন থেকে ইনপুট নেওয়া হয়।

নমুনা ব্যবহার

$ echo 20 | python rummy-seq.py
[True, True, True, True, True]

$ echo 50 | python rummy-seq.py
[True, True, True, True, True, False, False, False, False]

ডেমো


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