Фон
Последовательность Фибоначчи определяется как
f(1) = 1
f(2) = 1
f(n) = f(n-1) + f(n-2)
Фибонориал, как и факториал, является произведением первых n чисел Фибоначчи.
g(n) = f(1) * f(2) * ... * f(n-1) * f(n)
Коэффициент Фибономии, аналогичный биномиальному коэффициенту, определяется как
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) )
задача
Ваша цель - создать функцию или программу для вычисления коэффициента Фибономиала по двум неотрицательным целым числам n и k с k ≤ n .
Тестовые случаи
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
правила
- Это код-гольф, поэтому выигрывает самый короткий код.
- Встроенные разрешены.
1335
значения в последовательности коэффициента Фибономи.a(50, 2)
тестовом примере отсутствует ведущий9
?Ответы:
Желе , 16 байт
Попробуйте онлайн!
Кредиты Деннису для вспомогательной ссылки Фибоначчи.
источник
Haskell, 46 байтов
Выходы плавает. Создает бесконечный список Фибоначчи. Затем выполняется биномиальное отождествление, умножение и деление на элементы из списка Фибоначчи.
источник
Python 67 байт
Звоните используя
a(n,k)
. Использует фибонориальный ответ @Dennis (это разрешено?), И прямая реализация вопроса в противном случае.источник
lambda n,k:f(n)/f(k)/f(n-k)
; называть это не обязательно.Haskell,
77 57 55 5250 байтПервая строка происходит от функции или последовательности последовательности Фибоначчи и была написана @Anon.
Вторая строка была добавлена в вызов Фибоначчи от @ChristianSievers.
Теперь я добавил третью строку. Насколько дальше пойдут эти проблемы? =)
Спасибо за 5 байтов @xnor!
источник
/
а неdiv
?C 206 байтов:
После выполнения запрашивает 2 целых числа через пробел в качестве входных данных.
#include
Препроцессора требуется , так как без него,uint_64
не является допустимым типом, и единственный другой способ сделать эту работу для довольно больших выходов используетunsigned long long
типы возврата для обоихF
(Фибоначчи) иG
функции (Fibonorial), что намного больше , чем просто включая<inttypes.h>
и используя 3uint64_t
типа объявлений. Однако даже при этом он перестает корректно работать с входными значениями14 1
(подтверждается с помощью этого , в котором перечислены первые1325
значения в последовательности коэффициента Фибоначчи), скорее всего, потому что представление чисел Фибоначчи и / или Фибнориала15
и выше переполняют 64-битную используется целочисленный тип.С онлайн! (Ideone)
источник
uint_64
Чеддер ,
7564 байтаиспользование
источник
MATL ,
2523 байтаПопробуйте онлайн!
объяснение
источник
R, 120 байтов
Возможно, будет возможно еще немного игры в гольф, поэтому комментарии, конечно, приветствуются!
Я использовал свой ответ на вопрос о Фибоначчи в начале кода:
Ungolfed:
источник
Ява:
304260257Я сэкономил несколько байтов, немного сжав функцию запоминания и
f(n)
полностью удалив ее , заменив ее прямым доступом к массиву.К сожалению,
BigInteger
требуется из-за переполнения, и мне пришлось добавить памятку. Даже на поколение 6 i7, она принимает путь слишком долго , чтобы работать с большими входами.Ungolfed, с образцом
class
иmain
кодом:Выход программы:
источник
JavaScript (ES6), 70 байт
Позвонить, используя
c(n)(k)
, довольно просто.источник
Рубин, 72 байта
Отдельное спасибо @ st0le за действительно короткий код генерации Фибоначчи .
источник
постоянный ток, 67 байт
Ввод принимается как разделенные пробелом десятичные константы в одной строке.
Здесь используется мой ответ на
/Fibon(acci-)?orial/
вопрос, который умножает все числа в стеке на последнем шаге, требуя сохранения других чисел в другом месте, пока вычисляются другие фибонориалы.источник
Юлия, 53 байта
Кредиты @ Линн за его фибонориальный ответ .
источник
Аксиома 108 байт
какой-то тест
Тип: Целое число кортежа
источник
Mathematica, 30 байт
источник