Problem
Stellen Sie sich bei einem Wert n eine Berglandschaft vor, die in einer Referenz (0, 0) bis (2n, 0) eingeschrieben ist. Es darf keine Leerzeichen zwischen den Hängen geben und auch der Berg darf nicht unter die x-Achse absteigen. Das zu lösende Problem ist: Wenn n (das die Größe der Landschaft definiert) und die Anzahl k der Gipfel (k immer kleiner oder gleich n) gegeben sind, wie viele Kombinationen von Bergen sind mit k Gipfeln möglich?
Eingang
n, der die Breite der Landschaft darstellt, und k, die die Anzahl der Spitzen darstellt.
Ausgabe
Nur die Anzahl der möglichen Kombinationen.
Beispiel
Bei n = 3 und k = 2 lautet die Antwort 3 Kombinationen.
Um nur ein visuelles Beispiel zu geben, sie sind die folgenden:
/\ /\ /\/\
/\/ \ / \/\ / \
sind die 3 möglichen Kombinationen mit 6 (3 * 2) Positionen und 2 Peaks möglich.
Bearbeiten: - weitere Beispiele -
n k result
2 1 1
4 1 1
4 3 6
5 2 10
Gewinnbedingung
Es gelten die Standardregeln für Code-Golf . Die kürzeste Übermittlung in Bytes gewinnt.
quelle
n
übereinstimmender Klammerpaare, die genauk
Instanzen von enthalten()
"?k
Null behandelt werden muss oder nicht ? Wenn ja, muss eine Eingaben
gleich Null (k
per Definition auch Null) behandelt werden?Antworten:
Python, 40 Bytes
Probieren Sie es online aus!
Verwendet die Wiederholungeinn , 1= 1 , einn , k= n ( n - 1 )k ( k - 1 )einn - 1 , k - 1 .
quelle
Gelee , 7 Bytes
Probieren Sie es online aus!
Nimmt die Eingabe wie
n
damals vork
. Verwendet die Formelwas ich auf Wikipedia gefunden habe .
7 Bytes
Jede Zeile arbeitet für sich.
Nimmt die Eingabe wie
k
damals vorn
.7 Bytes
quelle
Ṫ
), das nur das letzte Element eines einzelnen Arguments verwendet, und das von mir verwendete (ṫ
), das zwei Argumente verwendet. Das erste Argument ist eine Liste und das zweite ist eine Zahl (in meinem Fall-1
durch a-
im Code dargestellt), die angibt, wie viele Elemente gespeichert werden sollen. Mit-1
give zwei Elementen war der golfiest zu definierenṫ
cⱮ×ƝṪ÷⁸
JavaScript (ES6),
3330 Byte3 Bytes dank @Shaggy gespeichert
Nimmt Eingabe als
(n)(k)
.Probieren Sie es online aus!
Implementiert die von Anders Kaseorg verwendete rekursive Definition .
JavaScript (ES7),
59584945 ByteNimmt Eingabe als
(n)(k)
.Probieren Sie es online aus!
Berechnet:
Abgeleitet von A001263 (erste Formel).
quelle
Wolfram Language (Mathematica) , 27 Bytes
Drei Versionen, alle gleich lang:
Probieren Sie es online aus! (Nur die erste Version, aber Sie können kopieren und einfügen, um die anderen zu versuchen.)
All dies sind eine Art Variante von , Der Formel, die es gibt. Ich hatte gehofft, mit der Beta-Funktion, die eine Art binomischer Kehrwert ist, irgendwohin zu gelangen, aber dann geschah zu viel Spaltung.n ! ( n - 1 ) !k ! ( k - 1 ) ! ( n - k ) ! ( n - k - 1 ) !
quelle
J ,
1711 BytesProbieren Sie es online aus!
Nimmt
n
als rechtes Argument,k
als linkes. Verwendet die gleiche Formel wie die Jelly-Antwort von Dylnan und die APL-Lösung von Quintec.Erläuterung:
quelle
APL (Dyalog),
19181612 BytesVielen Dank an @Galen Ivanov für -4 Bytes
Verwendet die Identität in der OEIS-Sequenz. Nimmt k links und n rechts.
TIO
quelle
⊢÷⍨!×⊢!⍨¯1+⊣
für 12 Bytes , Argument umgekehrtRuby , 50 Bytes
Probieren Sie es online aus!
quelle
Common Lisp , 76 Bytes
Probieren Sie es online aus!
quelle
(*(1- x)x)
statt(* x(1- x))
Perl 6 , 33 Bytes
Probieren Sie es online aus!
Verwendet die Formel
Erläuterung
Alternative Version, 39 Bytes
Probieren Sie es online aus!
Verwendet die Formel aus Arnauld's Antwort:
quelle
Gelee , 8 Bytes
n
Links undk
rechts ein dyadischer Link, der die Zählung ergibt.Probieren Sie es online aus!
quelle
Stax , 9 Bytes
Führen Sie es aus und debuggen Sie es
Ich benutze Dylnans Formel in Stax.
Ausgepackt, ungolfed und kommentiert sieht das Programm so aus.
Führen Sie diesen aus
quelle
APL (NARS), 17 Zeichen, 34 Bytes
Prüfung:
quelle