मतपत्र की जाँच करें


12

एक बैलेट नंबर , जिसे हम B लेबल करेंगे , एक B से (B + 1) / 2 के माध्यम से एक त्रिकोण में संख्याओं को व्यवस्थित करने के तरीकों की संख्या है, जैसे कि प्रत्येक पंक्ति और स्तंभ किसी भी बढ़ते क्रम में है। पहले चार मतपत्र संख्याएँ हैं:

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

a(3)2 है, जिसका अर्थ है कि 3(3+1)/2 = 6ऐसे त्रिकोण में 1 से संख्याओं को व्यवस्थित करने के 2 तरीके हैं :

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

देखें OEIS अनुक्रम प्रविष्टि अधिक जानकारी के लिए।

आपकी चुनौती, एक बैलट त्रिकोण है, इसकी शुद्धता को सत्यापित करना है। यदि यह एक बैलेट त्रिकोण (पंक्तियों और स्तंभों की बढ़ती स्थिति) को संतुष्ट करता है, तो आपको त्रिकोण को सही ढंग से व्यवस्थित करने के लिए कितने अन्य तरीकों (इनपुट में एक को छोड़कर ) का उत्पादन करना चाहिए । यदि इनपुट त्रिकोण गलत तरीके से बनाया गया है, तो आपको कुछ भी आउटपुट नहीं करना चाहिए।

अनुगामी newlines की अनुमति है।

इनपुट

संख्याओं का एक त्रिकोण, जो वैध मत त्रिकोण हो सकता है या नहीं हो सकता है। उदाहरण के लिए:

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 परिभाषा को नहीं देखा, तब तक यह मुझे भ्रमित करता है।
17

फिर 1/4 5/2 3 6मान्य क्यों नहीं है?
लीक

विशिष्ट निश्चित - मैंने OEIS प्रविष्टि गलत पढ़ी। @ बॉलस्टा 25
आर्टऑफकोड

cc @LeakyNun ^
ArtOfCode

क्या हम मान सकते हैं कि इनपुट में सही संख्याएँ होंगी, भले ही वह सही क्रम में न हो?
डेनिस

जवाबों:


4

जेली , 20 बाइट्स

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

वैध बैलेट त्रिकोणों के लिए, रन टाइम और मेमोरी उपयोग कम से कम हे (एन!) है , जहां एन त्रिकोण की प्रविष्टियों की संख्या है। अमान्य लोगों को दुर्घटनाग्रस्त होने से पहचाना जाता है, इस प्रकार कुछ भी नहीं छापा जाता है।

इसे ऑनलाइन आज़माएं!

परीक्षण चालन

स्थानीय रूप से, मैं यह सत्यापित करने में सक्षम था कि a (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 प्रविष्टि को गलत तरीके से पढ़ने का परिणाम क्षमा करें, यदि यह आपके उत्तर को अमान्य करता है!
आर्टऑफकोड

@ArtOfCode यही मेरा जवाब था कि सभी साथ हैं
लीक

2

जावास्क्रिप्ट (ईएस 6), 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 प्रविष्टि को गलत तरीके से पढ़ने का परिणाम क्षमा करें, यदि यह आपके उत्तर को अमान्य करता है!
आर्टऑफकोड

@ArtOfCode नहीं, मैं पहले से ही जाँच कर रहा था, लेकिन फिर भी धन्यवाद।
नील
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.