Contexte
La séquence de Fibonacci est définie comme
f(1) = 1
f(2) = 1
f(n) = f(n-1) + f(n-2)
Le Fibonorial, similaire au factoriel, est le produit des n premiers nombres de Fibonacci.
g(n) = f(1) * f(2) * ... * f(n-1) * f(n)
Le coefficient fibonomial, similaire au coefficient binomial, est défini comme
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) )
Tâche
Votre objectif est de créer une fonction ou un programme pour calculer le coefficient de Fibonomial étant donné deux entiers non négatifs n et k avec k ≤ n .
Cas de test
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
Règles
- C'est le code-golf donc le code le plus court l'emporte.
- Les Builtins sont autorisés.
1335
valeurs de la séquence des coefficients de fibrage.a(50, 2)
test manque-t-il une ligne directrice9
?Réponses:
Gelée , 16 octets
Essayez-le en ligne!
Remerciements à Dennis pour le lien d'assistance Fibonacci-oral.
la source
Haskell, 46 octets
Les sorties flottent. Génère la liste infinie de Fibonacci. Ensuite, la récusion binomiale se multiplie et se divise par les éléments de la liste de Fibonacci.
la source
Python 67 octets
Appelez en utilisant
a(n,k)
. Utilise la réponse fibonoriale @Dennis (est-ce autorisé?), Et une implémentation simple de la question sinon.la source
lambda n,k:f(n)/f(k)/f(n-k)
; le nommer n'est pas obligatoire.Haskell,
77 57 55 5250 octetsLa première ligne provient à l'origine de la fonction ou du défi de séquence de Fibonacci et a été écrite par @Anon.
La deuxième ligne a été ajoutée dans le défi Fibonacci- oral par @ChristianSievers.
Maintenant, j'ai ajouté la troisième ligne. Jusqu'où iront ces défis? =)
Merci pour 5 octets @xnor!
la source
/
plutôt quediv
?C, 206 octets:
Lors de l'exécution, demande en entrée 2 entiers séparés par des espaces. Le
#include
préprocesseur est requis , car sans lui, ceuint_64
n'est pas un type valide, et la seule autre façon de faire fonctionner cela pour des sorties assez importantes est d'utiliser desunsigned long long
types de retour pour les fonctionsF
(Fibonacci) etG
(Fibonorial), ce qui est beaucoup plus long que juste y compris<inttypes.h>
et en utilisant 3uint64_t
déclarations de type. Cependant, même avec cela, il cesse de fonctionner correctement aux valeurs d'entrée14 1
(confirmées en utilisant ceci , qui répertorie les premières1325
valeurs de la séquence de coefficient fibibien), probablement parce que la représentation Fibonacci et / ou Fibnorial des nombres15
et au-dessus déborde le 64 bits type entier utilisé.C It Online! (Ideone)
la source
uint_64
Cheddar ,
7564 octetsUsage
la source
MATL ,
2523 octetsEssayez-le en ligne!
Explication
la source
R, 120 octets
Un peu plus de golf est probablement possible, donc les commentaires sont bien sûr les bienvenus!
J'ai utilisé ma réponse à la question orale de Fibonacci au début du code:
Non golfé:
la source
Java:
304260257J'ai économisé quelques octets en compactant un peu la fonction de mémorisation et en la supprimant
f(n)
entièrement, en la remplaçant par un accès direct au tableau.Malheureusement,
BigInteger
est nécessaire en raison de débordements et j'ai dû ajouter la mémorisation. Même sur une génération 6 i7, cela prenait beaucoup trop de temps pour fonctionner avec de grandes entrées.Non golfé, avec passe-partout
class
etmain
code:Sortie du programme:
la source
JavaScript (ES6), 70 octets
Appelez en utilisant
c(n)(k)
, assez simple.la source
Rubis, 72 octets
Un merci spécial à @ st0le pour le code de génération Fibonacci vraiment court .
la source
dc, 67 octets
L'entrée est considérée comme des constantes décimales délimitées par des espaces sur une seule ligne.
Cela utilise ma réponse à la
/Fibon(acci-)?orial/
question, qui multiplie tous les numéros de la pile à la dernière étape, ce qui nécessite que les autres numéros soient stockés ailleurs pendant que les autres Fibonorials sont calculés.la source
Julia, 53 octets
Crédits à @Lynn pour sa réponse Fibonorial .
la source
Axiome 108 octets
un test
Type: Tuple Fraction Integer
la source
Mathematica, 30 octets
la source