विभिन्न संयोजन संभव


9

मुसीबत

मान n को देखते हुए, एक पर्वत परिदृश्य की कल्पना करें (0, 0) से (2n, 0) में उत्कीर्ण। ढलानों के बीच सफ़ेद स्थान नहीं होना चाहिए और साथ ही पहाड़ की धुरी x अक्ष के नीचे नहीं उतरना चाहिए। हल की जाने वाली समस्या है: n (जो कि परिदृश्य के आकार को परिभाषित करता है) और चोटियों की संख्या k (k हमेशा n से कम या बराबर होती है), k चोटियों के साथ पर्वतों के कितने संयोजन संभव हैं?

इनपुट

n जो परिदृश्य की चौड़ाई का प्रतिनिधित्व करता है और k जो चोटियों की संख्या है।

उत्पादन

बस संयोजनों की संख्या संभव है।

उदाहरण

दिए गए n = 3 और k = 2 का उत्तर 3 संयोजन है।

बस एक दृश्य उदाहरण देने के लिए, वे निम्नलिखित हैं:

   /\     /\      /\/\
/\/  \   /  \/\  /    \

6 (3 * 2) पदों और 2 चोटियों का उपयोग करके 3 संयोजन संभव हैं।

संपादित करें: - अधिक उदाहरण -

n  k  result
2  1  1
4  1  1
4  3  6
5  2  10

जीतने की स्थिति

मानक नियम लागू होते हैं। बाइट्स में सबसे कम सबमिशन जीतता है।


4
क्या यह वैसा ही है, " nमिलान किए गए कोष्ठक युग्मों के भावों की संख्या ज्ञात कीजिए जिनमें बिल्कुल " के kउदाहरण हैं ()?
ज़न्नर


@xnor हाँ यह है।
जोनाथन एलन

4
आप अधिक स्पष्ट शीर्षक जैसे कम्प्यूट नारायण संख्या के साथ चुनौती को अद्यतन करना चाह सकते हैं ।
अरनौलड

क्या आप इस बात की पुष्टि कर सकते हैं कि kशून्य के साथ कोई इनपुट होना चाहिए या नहीं ? यदि ऐसा है तो nशून्य के बराबर ( kपरिभाषा के अनुसार भी शून्य के साथ ) इनपुट होना चाहिए ?
जोनाथन एलन

जवाबों:



6

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

cⱮṫ-P÷⁸

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

nतब तक इनपुट लेता है k। सूत्र का उपयोग करता है

N(n,k)=1n(nk)(nk1)

जो मुझे विकिपीडिया पर मिला ।

cⱮṫ-P÷⁸
c        Binomial coefficient of n and...
 Ɱ       each of 1..k
  ṫ-     Keep the last two. ṫ is tail, - is -1.
    P    Product of the two numbers.
     ÷   Divide by
      ⁸  n.

7 बाइट्स

प्रत्येक पंक्ति इस पर काम करती है।

,’$c@P÷
c@€ṫ-P÷

kतब तक इनपुट लेता है n

7 बाइट्स

cⱮ×ƝṪ÷⁸
  • इसके लिए जोनाथन एलन को धन्यवाद।

प्रतीक्षा करें ... पूंछ को स्वचालित रूप से 2 नंबर के रूप में परिभाषित किया गया है? (जेली बिल्कुल नहीं जानते, बस एक मूर्खतापूर्ण सवाल)
क्विंटेक

@ क्विंट दो पूंछ कार्य हैं। एक ( ) जो केवल एक तर्क के अंतिम तत्व को लेती है और एक मैंने ( ) का उपयोग किया है जो दो तर्क लेता है। मुट्ठी तर्क एक सूची है और दूसरा नंबर एक है (कोड में मेरे मामले में -1प्रतिनिधित्व किया -गया) जो आपको बताता है कि कितने तत्वों को सहेजना है। होने -1दे दो तत्वों को परिभाषित करने के golfiest तरीका था
dylnan

पकड़ लिया, धन्यवाद! मैं देखता हूं कि गोल्फ के लिए जेली कैसे बनाई गई थी ...
हेह

1
7 च के लिए एक और संस्करण (एन, के):cⱮ×ƝṪ÷⁸
जोनाथन एलन

4

जावास्क्रिप्ट (ईएस 6), 33 30 बाइट्स

@ बस्ती के लिए 3 बाइट्स को सहेजा गया

के रूप में इनपुट लेता है (n)(k)

n=>g=k=>--k?n*--n/-~k/k*g(k):1

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

Anders Kaseorg द्वारा प्रयुक्त पुनरावर्ती परिभाषा को लागू करता है ।


जावास्क्रिप्ट (ईएस 7), 59 58 49 45 बाइट्स

के रूप में इनपुट लेता है (n)(k)

n=>k=>k/n/(n-k+1)*(g=_=>k?n--/k--*g():1)()**2

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

गणना करता है:

an,k=1k(n1k1)(nk1)=1n(nk)(nk1)=1n(nk)2×knk+1

A001263 (पहला सूत्र) से व्युत्पन्न ।


करी के साथ -3 बाइट्स
झबरा

@ शगुन दोह ... धन्यवाद। संशोधन # 7 अंत में लगता है कि संशोधन # 1 होना चाहिए। : पी
अरनुल्द

3

वोल्फ्राम भाषा (गणितज्ञ) , 27 बाइट्स

तीन संस्करण, सभी समान लंबाई:

(b=Binomial)@##b[#,#2-1]/#&

Binomial@##^2#2/(#-#2+1)/#&

1/(Beta[#2,d=#-#2+1]^2d##)&

इसे ऑनलाइन आज़माएं! (सिर्फ पहला संस्करण, लेकिन आप दूसरों को आज़माने के लिए कॉपी और पेस्ट कर सकते हैं।)

ये सभी किसी न किसी प्रकार के संस्करण हैं

n!(n-1)!!(-1)!(n-)!(n--1)!
वह सूत्र जो चारों ओर चल रहा है। मैं बीटा फ़ंक्शन के साथ कहीं जाने की उम्मीद कर रहा था, जो कि एक प्रकार का द्विपद पारस्परिक है, लेकिन तब बहुत अधिक विभाजन हो रहा था।


2

जे , 17 11 बाइट्स

]%~!*<:@[!]

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

nसही तर्क के रूप में लेता है,k बाएं के रूप में। डायलन के जेली उत्तर और क्विंटेक के एपीएल समाधान के रूप में एक ही सूत्र का उपयोग करता है।

स्पष्टीकरण:

            ] - n  
           !  - choose
       <:@[   - k-1
      *       - multiplied by
     !        - n choose k
   %~         - divided by
  ]           - n   

2

एपीएल (डायलॉग), 19 18 16 12 बाइट्स

⊢÷⍨!×⊢!⍨¯1+⊣

-4 बाइट्स के लिए @ गेलन इवानोव को धन्यवाद

OEIS अनुक्रम में पहचान का उपयोग करता है। बाईं ओर k और दाईं ओर n लेता है।

TIO


⊢÷⍨!×⊢!⍨¯1+⊣के लिए 12 बाइट्स , तर्क उलट
गैलेन इवानोव

@GalenIvanov धन्यवाद, मेरे tacit एपीएल बेहद कमजोर है
क्विंटेक

मेरा एपीएल अच्छा नहीं है, मैंने अपने जे सोल्यूशन के बाद, बस इसे एक मौका देने का प्रयास किया :)
गैलेन इवानोव


1

आम लिस्प , 76 बाइट्स

(defun x(n k)(cond((= k 1)1)(t(*(/(* n(1- n))(* k(1- k)))(x(1- n)(1- k))))))

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


आप 2 और x के बाद रिक्त स्थान को हटाकर 2 बाइट्स बचा सकते हैं
गैलेन इवानोव

1
बस अद्यतन धन्यवाद
JRowan

के (*(1- x)x)बजाय सुझाव(* x(1- x))
छत पर

1

पर्ल 6 , 33 बाइट्स

{[*] ($^n-$^k X/(2..$k X-^2))X+1}

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

सूत्र का उपयोग करता है

an,k=(n1k1)×1k(nk1)=i=1k1(nki+1)×i=2k(nki+1)

Explanation

{[*]                            }  # Product of
     ($^n-$^k X/                   # n-k divided by
                (2..$k X-^2))      # numbers in ranges [1,k-1], [2,k]
                             X+1   # plus one.

Alternative version, 39 bytes

{combinations(|@_)²/(1+[-] @_)/[/] @_}

Try it online!

Uses the formula from Arnauld's answer:

an,k=1n(nk)2×knk+1



0

स्टैक्स , 9 बाइट्स

ÇäO╪∙╜5‼O

इसे चलाएं और डीबग करें

मैं styl में dylnan के सूत्र का उपयोग कर रहा हूं।

Unpacked, ungolfed, और टिप्पणी की इस तरह कार्यक्रम दिखता है।

        program begins with `n` and `k` on input stack
{       begin block for mapping
  [     duplicate 2nd element from top of stack (duplicates n)
  |C    combinatorial choose operation
m       map block over array, input k is implicitly converted to [1..k]
O       push integer one *underneath* mapped array
E       explode array onto stack
*       multiply top two elements - if array had only element, then the pushed one is used
,/      pop `n` from input stack and divide

इसको चलाओ


0

एपीएल (एनएआरएस), 17 चार्ट, 34 बाइट्स

{⍺÷⍨(⍵!⍺)×⍺!⍨⍵-1}

परीक्षा:

  f←{⍺÷⍨(⍵!⍺)×⍺!⍨⍵-1}
  (2 f 1)(4 f 1)(4 f 3)(5 f 2)    
1 1 6 10 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.