tło
Sekwencja Fibonacciego jest zdefiniowana jako
f(1) = 1
f(2) = 1
f(n) = f(n-1) + f(n-2)
Fibonorial, podobnie jak silnia, jest iloczynem pierwszych n liczb Fibonacciego.
g(n) = f(1) * f(2) * ... * f(n-1) * f(n)
Współczynnik Fibonomialny, podobny do współczynnika dwumianowego, określa się jako
a(n, 0) = 1
a(n, k) = g(n) / ( g(n-k) * g(k) )
= f(n) * f(n-1) * ... * f(n-k+1) / ( f(1) * f(2) * ... * f(k) )
Zadanie
Twoim celem jest stworzenie funkcji lub programu do obliczania współczynnika fibonialnego przy dwóch liczbach całkowitych ni ujemnych n i k przy k ≤ n .
Przypadki testowe
a(0, 0) = 1
a(1, 1) = 1
a(2, 0) = 1
a(3, 2) = 2
a(8, 3) = 1092
a(11, 5) = 1514513
a(22, 7) = 7158243695757340957617
a(25, 3) = 49845401197200
a(50, 2) = 97905340104793732225
a(100, 1) = 354224848179261915075
Zasady
- To jest golf golfowy, więc wygrywa najkrótszy kod.
- Wbudowane są dozwolone.
1335
wartości w sekwencji współczynnika włókien.a(50, 2)
przypadku testowym brakuje wiodącej pozycji9
?Odpowiedzi:
Galaretka , 16 bajtów
Wypróbuj online!
Podziękowania dla Dennisa za pomocnicze łącze Fibonacciego.
źródło
Haskell, 46 bajtów
Wyjścia są zmiennoprzecinkowe. Generuje nieskończoną listę Fibonacciego. Następnie dokonuje dwumianowej reuzji, mnożąc i dzieląc przez elementy z listy Fibonacciego.
źródło
Python 67 bajtów
Zadzwoń za pomocą
a(n,k)
. Wykorzystuje odpowiedź @Dennis fibonorial (czy jest to dozwolone?), A w innym przypadku prosta implementacja pytania.źródło
lambda n,k:f(n)/f(k)/f(n-k)
; nazywanie go nie jest wymagane.Haskell,
77 57 55 5250 bajtówPierwszy wiersz pochodzi pierwotnie z funkcji Fibonacciego lub wyzwania sekwencji i został napisany przez @Anon.
Druga linia została dodana w wyzwaniu Fibonacciego przez @ChristianSievers.
Teraz dodałem trzecią linię. O ile dalej posuną się te wyzwania? =)
Dzięki za 5 bajtów @ xnor!
źródło
/
zamiastdiv
?C, 206 bajtów:
Po wykonaniu pyta o 2 liczby całkowite oddzielone spacjami jako dane wejściowe.
#include
Preprocesor jest konieczne , ponieważ bez niegouint_64
nie jest ważny rodzaj, a jedyną drogą do tej pracy dla dość dużych wyjść korzystaunsigned long long
rodzajów powrotne dla obuF
(Fibonacciego) iG
funkcje (Fibonorial), która jest znacznie dłużej niż tylko w tym<inttypes.h>
i przy użyciuuint64_t
deklaracji 3 typów. Jednak nawet po tym przestaje działać poprawnie przy wartościach wejściowych14 1
(potwierdzone przez użycie tej wartości , która wyświetla pierwsze1325
wartości w sekwencji współczynnika Fibonomialnego), najprawdopodobniej dlatego, że reprezentacja liczb Fibonacciego i / lub Fibnoriala15
powyżej i przepełnia 64-bit zastosowany typ liczby całkowitej.C It Online! (Ideone)
źródło
uint_64
Cheddar ,
7564 bajtówStosowanie
źródło
MATL ,
2523 bajtówWypróbuj online!
Wyjaśnienie
źródło
R, 120 bajtów
Możliwe jest jeszcze trochę golfa, więc komentarze są oczywiście mile widziane!
Na początku kodu użyłem odpowiedzi na pytanie Fibonacciego :
Nie golfowany:
źródło
Java:
304260257Zaoszczędziłem trochę bajtów, trochę zagęszczając funkcję zapamiętywania i usuwając ją
f(n)
całkowicie, zastępując ją bezpośrednim dostępem do tablicy.Niestety
BigInteger
jest wymagany z powodu przepełnienia i musiałem dodać notatkę. Nawet na pokolenie 6 i7, to brał sposób zbyt długo, aby uruchomić z dużych nakładów.Nie golfowane, z płytą grzewczą
class
imain
kodem:Wyjście programu:
źródło
JavaScript (ES6), 70 bajtów
Dzwoń za pomocą
c(n)(k)
, całkiem proste.źródło
Rubinowy, 72 bajty
Specjalne podziękowania dla @ st0le za naprawdę krótki kod generujący Fibonacciego .
źródło
dc, 67 bajtów
Dane wejściowe są traktowane jako stałe dziesiętne rozdzielane spacjami w jednym wierszu.
Wykorzystuje to moją odpowiedź na
/Fibon(acci-)?orial/
pytanie, które zwielokrotnia wszystkie liczby ze stosu w ostatnim kroku, wymagając, aby inne liczby były przechowywane gdzie indziej, podczas gdy inne Fibonorials są obliczane.źródło
Julia, 53 bajty
Podziękowania dla @Lynn za jego odpowiedź Fibonorial .
źródło
Axiom 108 bajtów
jakiś test
Wpisz: Tuple Fraction Integer
źródło
Mathematica, 30 bajtów
źródło