Latar Belakang
Urutan Fibonacci didefinisikan sebagai
f(1) = 1
f(2) = 1
f(n) = f(n-1) + f(n-2)
Fibonorial, mirip dengan faktorial, adalah produk dari angka Fibonacci n pertama .
g(n) = f(1) * f(2) * ... * f(n-1) * f(n)
Koefisien Fibonomial, mirip dengan koefisien binomial didefinisikan sebagai
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) )
Tugas
Tujuan Anda adalah membuat fungsi atau program untuk menghitung koefisien Fibonomial yang diberikan dua bilangan bulat non-negatif n dan k dengan k ≤ n .
Uji Kasus
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
Aturan
- Ini adalah kode-golf sehingga kode terpendek menang.
- Dibangun secara bawaan.
1335
dalam urutan Koefisien Fibonomial.a(50, 2)
uji tidak ada yang memimpin9
?Jawaban:
Jelly , 16 byte
Cobalah online!
Kredit ke Dennis untuk tautan pembantu Fibonacci-orial.
sumber
Haskell, 46 byte
Output mengapung. Menghasilkan daftar Fibonacci yang tak terbatas. Kemudian, apakah resusi binomial, mengalikan dan membaginya dengan elemen-elemen dari daftar Fibonacci.
sumber
Python 67 byte
Panggilan menggunakan
a(n,k)
. Menggunakan jawaban fibdenorial @Dennis (apakah itu diizinkan?), Dan implementasi langsung dari pertanyaan sebaliknya.sumber
lambda n,k:f(n)/f(k)/f(n-k)
; tidak perlu menyebutkan nama.Haskell,
77 57 55 5250 byteBaris pertama awalnya berasal dari fungsi Fibonacci atau tantangan urutan dan ditulis oleh @Anon.
Baris kedua ditambahkan dalam tantangan Fibonacci-orial oleh @ChristianSievers .
Sekarang saya menambahkan baris ketiga. Seberapa jauh tantangan itu pergi? =)
Terima kasih untuk 5 byte @ xnor!
sumber
/
daripadadiv
?C, 206 byte:
Setelah eksekusi, minta 2 integer yang dipisahkan spasi sebagai input. The
#include
preprocessor yang diperlukan , karena tanpa itu,uint_64
bukan jenis yang valid, dan satu-satunya cara lain untuk membuat karya ini untuk output yang cukup besar menggunakanunsigned long long
tipe kembali untuk keduaF
(Fibonacci) danG
fungsi (Fibonorial), yang jauh lebih lama daripada hanya termasuk<inttypes.h>
dan menggunakanuint64_t
deklarasi 3 tipe. Namun, bahkan dengan itu, ia berhenti bekerja dengan benar pada nilai input14 1
(dikonfirmasi dengan menggunakan ini , yang mencantumkan nilai pertama1325
dalam urutan Koefisien Fibonomial), kemungkinan besar karena Fibonacci dan / atau representasi angka Fibnorial15
dan di atas melimpah 64-bit tipe integer yang digunakan.C Online! (Ideone)
sumber
uint_64
Cheddar ,
7564 bytePemakaian
sumber
MATL ,
2523 byteCobalah online!
Penjelasan
sumber
R, 120 byte
Beberapa golf mungkin saja bisa dilakukan, jadi komentar tentu saja disambut!
Saya menggunakan jawaban saya untuk pertanyaan Fibonacci-orial di awal kode:
Tidak Disatukan:
sumber
Jawa:
304260257Saya menyimpan beberapa byte dengan memadatkan fungsi memoisasi sedikit dan menghapus
f(n)
seluruhnya, menggantinya dengan akses array langsung.Sayangnya,
BigInteger
diperlukan karena meluap dan saya harus menambahkan memoisasi. Bahkan pada generasi 6 i7, itu mengambil jalan terlalu lama untuk menjalankan dengan input yang besar.Tidak disatukan, dengan pelat
class
danmain
kode:Output program:
sumber
JavaScript (ES6), 70 byte
Panggilan menggunakan
c(n)(k)
, cukup mudah.sumber
Ruby, 72 byte
Terima kasih khusus kepada @ st0le untuk kode pembangkitan Fibonacci yang sangat singkat .
sumber
dc, 67 byte
Input diambil sebagai konstanta desimal pembatas-ruang pada satu baris.
Ini menggunakan jawaban saya untuk
/Fibon(acci-)?orial/
pertanyaan, yang mengalikan semua angka pada tumpukan pada langkah terakhir, yang membutuhkan angka-angka lain untuk disimpan di tempat lain sementara Fibonorial lainnya dihitung.sumber
Julia, 53 byte
Kredit ke @Lynn untuk jawaban Fibonorialnya .
sumber
Aksioma 108 byte
beberapa tes
Jenis: Integer Pecahan Tuple
sumber
Mathematica, 30 byte
sumber