fundo
A sequência de Fibonacci é definida como
f(1) = 1
f(2) = 1
f(n) = f(n-1) + f(n-2)
O Fibonorial, semelhante ao fatorial, é o produto dos primeiros n números de Fibonacci.
g(n) = f(1) * f(2) * ... * f(n-1) * f(n)
O coeficiente fibonomial, semelhante ao coeficiente binomial, é definido como
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) )
Tarefa
Seu objetivo é criar uma função ou programa para calcular o coeficiente Fibonomial, dados dois números inteiros não negativos n e k com k ≤ n .
Casos de teste
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
Regras
- Isso é código-golfe, então o código mais curto vence.
- Builtins são permitidos.
Relacionado
code-golf
fibonacci
approximation
milhas
fonte
fonte
1335
valores na sequência do Coeficiente Fibonomial.a(50, 2)
caso de teste está faltando uma liderança9
?Respostas:
Gelatina , 16 bytes
Experimente online!
Créditos a Dennis pelo link auxiliar Fibonacci-orial.
fonte
Haskell, 46 bytes
As saídas flutuam. Gera a lista infinita de Fibonacci. Em seguida, realiza a recusão binomial, multiplicando e dividindo por elementos da lista de Fibonacci.
fonte
Python 67 bytes
Ligue usando
a(n,k)
. Usa a resposta fibonorial @Dennis (isso é permitido?) E uma implementação direta da pergunta de outra forma.fonte
lambda n,k:f(n)/f(k)/f(n-k)
; nomeá-lo não é necessário.Haskell,
77 57 55 5250 bytesA primeira linha é originária da função Fibonacci ou desafio de sequência e foi escrita por @Anon.
A segunda linha foi adicionada no desafio Fibonacci-orial por @ChristianSievers.
Agora eu adicionei a terceira linha. Quanto mais longe esses desafios serão? =)
Obrigado por 5 bytes @xnor!
fonte
/
vez dediv
?C, 206 bytes:
Na execução, solicita 2 números inteiros separados por espaço como entrada. O
#include
pré-processador é necessário , pois sem eleuint_64
não é um tipo válido, e a única outra maneira de fazer esse trabalho para resultados razoavelmente grandes é usarunsigned long long
tipos de retorno para as funçõesF
(Fibonacci) eG
(Fibonorial), que é muito mais longa do que apenas incluindo<inttypes.h>
e usando trêsuint64_t
declarações de tipo. No entanto, mesmo com isso, ele para de funcionar corretamente nos valores de entrada14 1
(confirmado usando isso , que lista os primeiros1325
valores na sequência do coeficiente fibonomial), provavelmente porque a representação de números de Fibonacci e / ou Fibnorial15
e acima do estouro de 64 bits tipo inteiro usado.C It Online! (Ideona)
fonte
uint_64
Queijo Cheddar ,
7564 bytesUso
fonte
MATL ,
2523 bytesExperimente online!
Explicação
fonte
R, 120 bytes
Provavelmente é possível um pouco mais de golfe, então é claro que os comentários são bem-vindos!
Eu usei minha resposta da pergunta Fibonacci-orial no início do código:
Ungolfed:
fonte
Java:
304260257Salvei alguns bytes compactando um pouco a função de memorização e removendo-a
f(n)
completamente, substituindo-a pelo acesso direto à matriz.Infelizmente,
BigInteger
é necessário devido a estouros e tive que adicionar memorização. Mesmo em um i7 geração 6, foi tomando forma demasiado longo para ser executado com grandes entradas.Ungolfed, com clichê
class
emain
código:Saída do programa:
fonte
JavaScript (ES6), 70 bytes
Ligue usando
c(n)(k)
, bem simples.fonte
Ruby, 72 bytes
Agradecimentos especiais a @ st0le pelo realmente curto código de geração de Fibonacci .
fonte
dc, 67 bytes
A entrada é tomada como constantes decimais delimitadas por espaço em uma única linha.
Isso usa minha resposta para a
/Fibon(acci-)?orial/
pergunta, que multiplica todos os números na pilha na última etapa, exigindo que os outros números sejam armazenados em outro lugar enquanto os outros Fibonorials são calculados.fonte
Julia, 53 bytes
Créditos a @Lynn por sua resposta Fibonorial .
fonte
Axioma 108 bytes
algum teste
Tipo: Fração de tupla inteira
fonte
Mathematica, 30 bytes
fonte