একটি ব্যালট ত্রিভুজটি যাচাই করুন


12

একটি ব্যালট নম্বর , যা আমরা বি কে লেবেল করব , হ'ল বি থেকে 1 (বি + 1) / 2 এর মাধ্যমে সংখ্যাগুলি সাজানোর বিভিন্ন পদ্ধতি যা প্রতিটি সারি এবং কলাম কোনও ক্রমবর্ধমান ক্রমে থাকে। প্রথম চারটি ব্যালট সংখ্যা হ'ল:

a(0) = 1
a(1) = 1
a(2) = 1
a(3) = 2

a(3)2 হ'ল যার অর্থ 1 টি থেকে এই 3(3+1)/2 = 6জাতীয় ত্রিভুজে সংখ্যাগুলি সাজানোর 2 উপায় রয়েছে :

1          1
2 3    or  2 4
4 5 6      3 5 6

দেখুন OEIS ক্রম এন্ট্রি আরো বিস্তারিত জানার জন্য।

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

চলমান নিউলাইনগুলি অনুমোদিত are

ইনপুট

সংখ্যার ত্রিভুজ যা বৈধ ব্যালটের ত্রিভুজ হতে পারে বা নাও হতে পারে। উদাহরণ স্বরূপ:

1
2 3
4 5 6

1
10 5 
9 8 2
7 6 4 3

1
3 2

9
2 11
14 3 5
12 8 1 7
15 13 10 4 6

1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21

আউটপুট

যদি ইনপুটটি একটি বৈধ ব্যালট ত্রিভুজ হয়, তবে বৈধ ব্যালট ত্রিভুজটিতে একই সংখ্যাগুলি সাজানোর জন্য অবশিষ্ট সংখ্যা। যদি ইনপুটটি কোনও বৈধ ব্যালট ত্রিভুজ না হয়, কিছুই নয়। উদাহরণস্বরূপ, উপরের ইনপুটগুলি এই আউটপুটগুলি উত্পাদন করে ( <nothing>সত্যিকারের খালি আউটপুটটির জন্য স্থানধারক):

1                     # the same as a(3)-1

<nothing>

<nothing>

<nothing>

33591                 # the same as a(6)-1

স্কোরিং

এটি : যথারীতি সর্বনিম্ন বাইট-কাউন্ট জেতে। টাইব্রেকার প্রথম পোস্ট করা হয়।


1
আপনার সম্ভবত উল্লেখ করা উচিত যে কলামগুলি ক্রমবর্ধমান ক্রমেও রয়েছে। আমি আমাকে OEIS সংজ্ঞাটি না পাওয়া পর্যন্ত আমাকে বিভ্রান্ত করেছে।
বলস্টে 25

তাহলে কেন 1/4 5/2 3 6বৈধ নয়?
লিকি নুন

স্পেস ফিক্সড - আমি OEIS এন্ট্রি ভুল পড়েছি। @ ব্যালেস্টা 25
আর্টঅফকোড

সিসি @ লিক্যনুন ^
আর্টঅফকোড

আমরা কি ধরে নিতে পারি যে ইনপুটটিতে সঠিক ক্রমে না থাকলেও সঠিক সংখ্যা থাকবে?
ডেনিস

উত্তর:


4

জেলি , 20 বাইট

;Zµ⁼Ṣ€
ẋÇFŒ!ṁ€⁸ÇÐfL’

বৈধ ব্যালট ত্রিভুজগুলির জন্য, রান সময় এবং মেমরির ব্যবহার কমপক্ষে O (n!) হয় , যেখানে n ত্রিভুজটির প্রবেশের সংখ্যা। অবৈধগুলি ক্র্যাশ করে স্বীকৃত, এভাবে কিছুই মুদ্রিত হয় না।

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

টেস্ট রান

স্থানীয়ভাবে, আমি যাচাই করতে সক্ষম হয়েছি যে একটি (4) সঠিকভাবে গণনা করা হয়েছে।

$ time jelly eun ';Zµ⁼Ṣ€¶ẋÇFŒ!ṁ€⁸ÇÐfL’' '[1],[2,3],[4,5,6],[7,8,9,10]'
11

real    6m9.829s
user    6m7.930s
sys     0m2.579s

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

;Zµ⁼Ṣ€         Helper link. Argument: T (triangular array)

 Z             Zip/transpose T.
;              Concatenate the original and the transposed copy.
  µ            Begin a new monadic chain, with the previous result (R) as argument.
    Ṣ€         Sort each array in R.
   ⁼           Test for equality with R.
               This returns 1 if T is a ballot triangle, 0 if not.

ẋÇFŒ!ṁ€⁸ÇÐfL’  Main link. Argument: A (triangular array)

 Ç             Call the helper link with argument A.
ẋ              Repeat A that many times.
               This yields an empty array if A is not a ballot triangle.
  F            Flatten the result.
   Œ!          Generate all permutations of the digits of A.
     ṁ€⁸       Mold each permutation like A, i.e., give it triangular form.
               This crashes if permutation array is empty.
        ÇÐf    Filter; keep permutations for which the helper link returns 1.
           L’  Compute the length and decrement it.

3

ব্র্যাচল্যাগ , 44 বাইট

{:{o?}a,?z:2a},?ly+yb:3flw
p~c.:laBtybB,.:1&

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

এটি দ্বিগুণ-তাত্পর্যপূর্ণ সময়ে সঞ্চালিত হয়, সুতরাং সত্যবাদী পরীক্ষাগুলির জন্য আপনাকে আমার বিশ্বাস করতে হবে যে এটি তাত্ত্বিকভাবে সঠিক ফলাফল উত্পন্ন করে, দৈর্ঘ্যের চেয়ে বেশি বা সমান ত্রিভুজগুলির জন্য 3

আপনি এখনও ভুয়া পরীক্ষাগুলির জন্য পরীক্ষা করতে পারেন, সেগুলি বরং দ্রুত শেষ করা উচিত।


আমাকে অনুমানটি আপডেট করতে হয়েছিল - সারি এবং কলাম উভয়ই বাড়ানো উচিত। আমার ফলাফল ভুলভাবে OEIS এন্ট্রি পড়ছে। এটি যদি আপনার উত্তরটিকে অবৈধ করে দেয় তবে দুঃখিত!
আর্টঅফকোড

@ আর্টঅফকোড এটাই ছিল আমার উত্তরটি পুরোটা জুড়ে দেয়
লিকি নুন

2

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

a=>a.some((b,i)=>b.some((c,j)=>c<b[j-1]||i&&c<a[i-1][j]))?'':(f=n=>n<2||n*f(n-1),g=(n,m=f(n*n+n>>1))=>n<2?m:g(--n,m*f(n)/f(n+n+1)),g(a.length))

একটি অবৈধ প্রবেশের জন্য ত্রিভুজটি অনুসন্ধান করে এবং তারপরে ফলাফল গণনা করতে OEIS এ সূত্রটির পুনরাবৃত্ত সূত্র ব্যবহার করে।


আমাকে অনুমানটি আপডেট করতে হয়েছিল - সারি এবং কলাম উভয়ই বাড়ানো উচিত। আমার ফলাফল ভুলভাবে OEIS এন্ট্রি পড়ছে। এটি যদি আপনার উত্তরটিকে অবৈধ করে দেয় তবে দুঃখিত!
আর্টঅফকোড

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