Antecedentes
La secuencia de Fibonacci se define como
f(1) = 1
f(2) = 1
f(n) = f(n-1) + f(n-2)
El fibonorial, similar al factorial, es el producto de los primeros n números de Fibonacci.
g(n) = f(1) * f(2) * ... * f(n-1) * f(n)
El coeficiente fibonomial, similar al coeficiente binomial se define 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) )
Tarea
Su objetivo es crear una función o un programa para calcular el coeficiente de Fibonomial dado dos números enteros no negativos n y k con k ≤ n .
Casos de prueba
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
Reglas
- Este es el código de golf, por lo que gana el código más corto.
- Las construcciones están permitidas.
Relacionado
code-golf
fibonacci
approximation
millas
fuente
fuente
1335
valores en la secuencia del Coeficiente Fibonomial.a(50, 2)
caso de prueba falta un guión9
?Respuestas:
Jalea , 16 bytes
Pruébalo en línea!
Créditos a Dennis por el enlace auxiliar de Fibonacci-orial.
fuente
Haskell, 46 bytes
Salidas flotantes. Genera la lista infinita de Fibonacci. Luego, realiza la reclusión binomial, multiplicando y dividiendo por elementos de la lista de Fibonacci.
fuente
Python 67 bytes
Llamar usando
a(n,k)
. Utiliza la respuesta fibonorial de @Dennis (¿está permitido?) Y una implementación directa de la pregunta de lo contrario.fuente
lambda n,k:f(n)/f(k)/f(n-k)
; nombrarlo no es obligatorio.Haskell,
77 57 55 5250 bytesLa primera línea proviene originalmente de la función de Fibonacci o el desafío de secuencia y fue escrita por @Anon.
La segunda línea fue agregada en el desafío de Fibonacci-orial por @ChristianSievers.
Ahora agregué la tercera línea. ¿Hasta dónde llegarán esos desafíos? =)
Gracias por 5 bytes @xnor!
fuente
/
lugar dediv
?C, 206 bytes:
Tras la ejecución, solicita 2 enteros separados por espacios como entrada. Se requiere el
#include
preprocesador , ya que sin él, no es un tipo válido, y la única otra forma de hacer que esto funcione para salidas bastante grandes es usar tipos de retorno para las funciones (Fibonacci) y (Fibonorial), que es mucho más que simplemente incluyendo y utilizando 3 declaraciones de tipo. Sin embargo, incluso con eso, deja de funcionar correctamente en los valores de entrada (confirmado al usar esto , que enumera los primeros valores en la secuencia del coeficiente fibonomial), muy probablemente porque la representación de los números de Fibonacci y / o fibnorial desborda los 64 bits tipo entero usado.uint_64
unsigned long long
F
G
<inttypes.h>
uint64_t
14 1
1325
15
¡C en línea! (Ideona)
fuente
uint_64
Cheddar ,
7564 bytesUso
fuente
MATL ,
2523 bytesPruébalo en línea!
Explicación
fuente
R, 120 bytes
Probablemente sea posible jugar un poco más al golf, por lo que los comentarios son bienvenidos.
Utilicé mi respuesta a la pregunta de Fibonacci-orial al comienzo del código:
Sin golf:
fuente
Java:
304260257Ahorré algunos bytes al compactar un poco la función de memorización y eliminarla por
f(n)
completo, reemplazándola con acceso directo a la matriz.Lamentablemente,
BigInteger
es necesario debido a desbordamientos y tuve que agregar una memoria. Incluso en un i7 generación 6, que estaba tomando forma demasiado tiempo en caso de grandes entradas.Sin golf, con repetitivo
class
ymain
código:Salida del programa:
fuente
JavaScript (ES6), 70 bytes
Llamar usando
c(n)(k)
, bastante sencillo.fuente
Ruby, 72 bytes
Un agradecimiento especial a @ st0le por el código de generación Fibonacci realmente corto .
fuente
cc, 67 bytes
La entrada se toma como constantes decimales delimitadas por espacios en una sola línea.
Esto usa mi respuesta a la
/Fibon(acci-)?orial/
pregunta, que multiplica todos los números en la pila en el último paso, requiriendo que los otros números se almacenen en otro lugar mientras se calculan los otros Fibonoriales.fuente
Julia, 53 bytes
Créditos a @Lynn por su respuesta fibonorial .
fuente
Axioma 108 bytes
alguna prueba
Tipo: Tuple Fraction Integer
fuente
Mathematica, 30 bytes
fuente