Problem
Biorąc pod uwagę wartość n, wyobraź sobie górski krajobraz wpisany w odniesienie (0, 0) do (2n, 0). Pomiędzy zboczami nie może być białych przestrzeni, a góra nie może schodzić poniżej osi x. Problem do rozwiązania to: biorąc pod uwagę n (który określa rozmiar krajobrazu) i liczbę k szczytów (k zawsze mniejszych lub równych n), ile kombinacji gór jest możliwych z k szczytów?
Wejście
n, który reprezentuje szerokość krajobrazu, a k jest liczbą pików.
Wynik
Tylko liczba możliwych kombinacji.
Przykład
Biorąc pod uwagę n = 3 i k = 2 odpowiedzią są 3 kombinacje.
Aby dać wizualny przykład, są to:
/\ /\ /\/\
/\/ \ / \/\ / \
to 3 kombinacje możliwe przy użyciu 6 (3 * 2) pozycji i 2 pików.
Edycja: - więcej przykładów -
n k result
2 1 1
4 1 1
4 3 6
5 2 10
Warunki wygranej
Standard golf-golfobowiązują zasady. Najkrótsze przesłanie w bajtach wygrywa.
źródło
n
dopasowanych par nawiasów, które zawierają dokładniek
wystąpienia()
”?k
zerą musi być obsługiwane? Jeśli tak, to czy należy obsługiwać dane wejściowen
równe zeru (zk
definicji również zero)?Odpowiedzi:
Python, 40 bajtów
Wypróbuj online!
Korzysta z nawrotuan,1=1 , an,k=n(n−1)k(k−1)an−1,k−1 .
źródło
Galaretka , 7 bajtów
Wypróbuj online!
Pobiera dane jak
n
wtedyk
. Używa wzoruktóre znalazłem na Wikipedii .
7 bajtów
Każda linia działa samodzielnie.
Pobiera dane jak
k
wtedyn
.7 bajtów
źródło
Ṫ
), który bierze tylko ostatni element pojedynczego argumentu i ten, którego użyłem (ṫ
), który przyjmuje dwa argumenty. Pierwszy argument to lista, a drugi to liczba (w moim przypadku-1
reprezentowana przez-
w kodzie), która mówi, ile elementów należy zapisać. Mając-1
otrzymując dwa elementy był golfiest sposobem definiowaniaṫ
cⱮ×ƝṪ÷⁸
JavaScript (ES6),
3330 bajtówZaoszczędź 3 bajty dzięki @Shaggy
Pobiera dane wejściowe jako
(n)(k)
.Wypróbuj online!
Implementuje rekurencyjną definicję używaną przez Andersa Kaseorga .
JavaScript (ES7),
59584945 bajtówPobiera dane wejściowe jako
(n)(k)
.Wypróbuj online!
Oblicza:
Pochodzi z A001263 (pierwsza formuła).
źródło
Wolfram Language (Mathematica) , 27 bajtów
Trzy wersje o tej samej długości:
Wypróbuj online! (Tylko pierwsza wersja, ale możesz skopiować i wkleić, aby wypróbować inne.)
Wszystkie są pewnego rodzaju wariantemn ! ( n - 1 ) !k ! ( k - 1 ) ! ( n - k ) ! ( n - k - 1 ) !
która jest formułą, która się kręci. Miałem nadzieję, że uda mi się gdzieś dotrzeć z funkcją Beta, która jest rodzajem dwumianowej wzajemności, ale potem nastąpiło zbyt wiele podziałów.
źródło
J ,
1711 bajtówWypróbuj online!
Uważa się
n
za właściwy argument,k
za lewy. Używa tej samej formuły co odpowiedź Jelly Dylnana i rozwiązanie APL firmy Quintec.Wyjaśnienie:
źródło
APL (Dyalog),
19181612 bajtówDzięki @Galen Iwanow za -4 bajty
Wykorzystuje tożsamość w sekwencji OEIS. Bierze k po lewej i n po prawej.
TIO
źródło
⊢÷⍨!×⊢!⍨¯1+⊣
dla 12 bajtów , argument odwróconyRubinowy , 50 bajtów
Wypróbuj online!
źródło
Common Lisp , 76 bajtów
Wypróbuj online!
źródło
(*(1- x)x)
zamiast(* x(1- x))
Perl 6 , 33 bajtów
Wypróbuj online!
Używa wzoru
Wyjaśnienie
Alternatywna wersja, 39 bajtów
Wypróbuj online!
Wykorzystuje formułę z odpowiedzi Arnaulda:
źródło
Galaretka , 8 bajtów
Dyadyczny link akceptujący
n
po lewej ik
po prawej stronie, który daje wynik.Wypróbuj online!
źródło
Stax , 9 bajtów
Uruchom i debuguj
Używam formuły Dylnana w stax.
Rozpakowany, nieprzygotowany i skomentowany program wygląda tak.
Uruchom ten
źródło
APL (NARS), 17 znaków, 34 bajty
test:
źródło