Ini tidak diketahui secara luas, tetapi apa yang kita sebut urutan Fibonacci, AKA
1, 1, 2, 3, 5, 8, 13, 21, 34...
sebenarnya disebut deret Duonacci . Ini karena untuk mendapatkan nomor berikutnya, Anda menjumlahkan 2 angka sebelumnya. Ada juga deret Tribonacci ,
1, 1, 1, 3, 5, 9, 17, 31, 57, 105, 193, 355, 653, 1201...
karena angka selanjutnya adalah jumlah dari 3 angka sebelumnya. Dan urutan Quadronacci
1, 1, 1, 1, 4, 7, 13, 25, 49, 94, 181, 349, 673...
Dan favorit semua orang, urutan Pentanacci :
1, 1, 1, 1, 1, 5, 9, 17, 33, 65, 129...
Dan Hexanacci urutan, yang Septanacci urutan, yang Octonacci urutan, dan seterusnya dan sebagainya sampai dengan urutan N-Bonacci.
Urutan N-bonacci akan selalu dimulai dengan N 1s berturut-turut.
Tantangan
Anda harus menulis fungsi atau program yang mengambil dua angka N dan X , dan mencetak angka X N-Bonacci pertama. N akan menjadi bilangan bulat yang lebih besar dari 0, dan Anda dapat dengan aman menganggap tidak ada angka N-Bonacci yang akan melebihi tipe angka default dalam bahasa Anda. Outputnya bisa dalam format apa pun yang dapat dibaca manusia, dan Anda dapat mengambil input dengan cara apa pun yang masuk akal. (Argumen baris perintah, argumen fungsi, STDIN, dll.)
Seperti biasa, ini adalah Code-golf, jadi celah standar berlaku dan jawaban terpendek dalam byte menang!
Contoh IO
#n, x, output
3, 8 --> 1, 1, 1, 3, 5, 9, 17, 31
7, 13 --> 1, 1, 1, 1, 1, 1, 1, 7, 13, 25, 49, 97, 193
1, 20 --> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
30, 4 --> 1, 1, 1, 1 //Since the first 30 are all 1's
5, 11 --> 1, 1, 1, 1, 1, 5, 9, 17, 33, 65, 129
1, 1, 2, 4, 7
seperti posisi ketiga0 + 1 + 1
? ... dan jadi satu dengan yang lain?Jawaban:
Boolfuck, 6 byte
Jenis angka default di Boolfuck sedikit. Dengan asumsi ini juga meluas ke angka input N dan X, dan mengingat bahwa N> 0, hanya ada dua input yang mungkin - 10 (yang tidak menghasilkan apa-apa) dan 11 (yang menghasilkan 1).
,
membaca sedikit ke lokasi memori saat ini. N diabaikan sebagaimana mestinya 1. Jika X adalah 0, badan loop (dikelilingi oleh[]
) dilewati. Jika X adalah 1, itu adalah output dan kemudian dibalik ke 0 sehingga loop tidak berulang.sumber
Python 2, 79 byte
Cobalah online
sumber
exec"v=[sum(f[i-n:]),1][i<n];f+=[v];print v;i+=1;"*x
Pyth, 13
Test Suite
Membawa input baris baru terpisah, dengan yang
n
pertama.Penjelasan:
sumber
Haskell, 56 byte
Contoh penggunaan:
3 # 8
->[1,1,1,3,5,9,17,31]
.Bagaimana itu bekerja
sumber
tail l
bukaninit l
?n
elemen terakhir dalam daftar. Tidak ada perbedaan antara menghapus dari ujung dan menambahkan ke depan dan sebaliknya, yaitu menghapus dari depan dan menambahkan ke ujung, karena daftar awal hanya terdiri dari1
s.++[]
oleh:
!Python 2, 55 byte
Melacak
n
jendela panjang urutan dalam daftarl
, diperbarui dengan menambahkan jumlah dan menghapus elemen pertama. Mencetak elemen pertama setiap iterasi untukx
iterasi.Pendekatan yang berbeda untuk menyimpan semua elemen dan menjumlahkan nilai terakhir
n
memberikan panjang yang sama (55).sumber
Javascript ES6 / ES2015,
107978580 BytesTerima kasih kepada @ user81655, @Neil dan @ETHproduk untuk menghemat beberapa byte
coba online
Kasus uji:
sumber
for
selalu lebih baik daripadawhile
,x.split('')
->[...x]
,~~a
->+a
,n-=1
->n--
, jika Anda melampirkan seluruh badan fungsi di dalam tulisan yangeval
tidak perlu Anda tulisreturn
. Juga, bahkan lebih pendek dari[...'1'.repeat(i)]
iniArray(i).fill(1)
dan Anda dapat menghapus~~
daria
danb
. Dan Anda diizinkan untuk menghapusf=
.(i,n)=>eval("for(l=Array(i).fill(1);n-->i;)l.push(l.slice(-i).reduce((a,b)=>a+b));l")
. Saya mengubah urutan pernyataan, menggabungkan ken--
dalamn-i
dan menghapusl
dari argumen untuk menghemat beberapa byte tambahan.eval
tabungan;(i,n)=>{for(l=Array(i).fill(1);n-->i;)l.push(l.slice(-i).reduce((a,b)=>a+b));return l}
masih 85 byte.l.slice(-i).reduce((a,b)=>a+b)
=>eval(l.slice(-i).join`+`)
ES6, 66 byte
Sedihnya
map
tidak akan membiarkan Anda mengakses array hasil di callback.sumber
Jelly, 12 byte
Cobalah online!
Bagaimana itu bekerja
sumber
C ++ 11, 360 byte
Hai, saya suka pertanyaan ini. Saya tahu c ++ adalah bahasa yang sangat sulit untuk memenangkan kompetisi ini. Tapi aku akan melempar uang receh dengan cara apa pun.
Saya akan meninggalkan ini sebagai penjelasan yang dapat dibaca dari kode di atas.
sumber
int
s, hapusint
. Jika ada fungsi yang dipanggilfoo
, panggil sajaf
. Bersikap brutal; abaikan standar dan eksploitasi kompiler. Begitulah cara Anda bermain golf.Haskell , 47 byte
Cobalah online!
<$
mungkin telah diperkenalkan ke Prelude setelah tantangan ini diposting.Haskell , 53 byte
Cobalah online!
Menentukan fungsi biner
?
, digunakan seperti3?8 == [1,1,1,3,5,9,17,31]
.Fungsi bantu
%
secara rekursif menemukani
elemen th darin
urutan -bonacci dengan menjumlahkan nilai sebelumnyan
. Kemudian, fungsi?
mentabulasikan nilai pertamax
dari%
.sumber
%
"?i<=n
menjadii>n
.APL, 21
Ini adalah fungsi yang mengambil n sebagai argumen kiri dan x sebagai argumen kanannya.
Penjelasan:
Kasus uji:
sumber
Python 3, 59
Disimpan 20 byte berkat FryAmTheEggman.
Bukan solusi yang bagus, tetapi akan bekerja untuk saat ini.
Juga, ini beberapa contoh uji:
sumber
Java, 82 + 58 = 140 byte
Berfungsi untuk menemukan nomor ith n -bonacci ( 82 byte ):
Fungsi untuk mencetak pertama k n jumlah -bonacci ( 58 bytes ):
sumber
Brain-Flak ,
144124122 byte-20 byte terima kasih kepada Nitroden
Ini jawaban Brain-Flak pertamaku, dan aku yakin itu bisa diperbaiki. Bantuan apa pun dihargai.
Cobalah online!
sumber
Pari / GP , 46 byte
Fungsi pembangkit urutan adalah:
Cobalah online!
sumber
Julia, 78 byte
Ini adalah fungsi yang menerima dua integer dan mengembalikan array integer. Pendekatannya sederhana: Hasilkan array yang panjangnya
n
, lalu tambah array dengan menambahkan jumlahn
elemen sebelumnya sampai array memiliki panjangx
.Tidak Disatukan:
sumber
MATL , 22
26byteIni menggunakan rilis saat ini (10.2.1) dari bahasa / kompiler.
Cobalah online!
Beberapa byte tambahan :-( karena bug di
G
fungsi (rekatkan input; sekarang diperbaiki untuk rilis berikutnya)Penjelasan
sumber
Perl 6 , 38 byte
Pemakaian:
sumber
C, 132 byte
Pendekatan rekursif lebih pendek dengan beberapa byte.
Tidak disatukan
sumber
Sekam , 9 byte
Cobalah online!
Mulai dari
B
ase-1
representasi dari N (hanya daftar N yang) dan¡
teratively jumlah (Σ
) terakhir (↑_
) N elemen dan menambahkan hasil ke dalam daftar. Akhirnya, ambil (↑
) angka X pertama dalam daftar ini dan kembalikan.sumber
Ruby , 41 byte
Cobalah online!
sumber
R , 68 byte
Cobalah online!
sumber
K (ngn / k) ,
2624 byteCobalah online!
sumber
Perl 6,
52 ~ 7247 ~ 67 byteMembutuhkan modul
MONKEY-SEE-NO-EVAL
, karena kesalahan berikut:sumber
PHP , 78 byte
Cobalah online!
-4 Bytes menggunakan PHP> = 7.1
[,$n,$x]
sebagai gantilist(,$n,$x)
sumber
Jq 1,5 , 67 byte
Mengasumsikan input yang disediakan oleh N dan X misalnya
Diperluas
Cobalah online!
sumber
J, 31 byte
Tidak Disatukan:
penjelasan
Saat-saat menyenangkan dengan kata kerja kekuatan dalam bentuk gerund-nya :
Rincian secara rinci:
] {. ...
Ambil<right arg>
elemen pertama dari semua hal ini ke kanan yang berfungsi ...<left> ^: <right>
terapkan kata kerja<left>
berulang<right>
kali ... di mana<right>
ditentukan oleh gerund tengah dalam(-@[
](1 #~ [)
, yaitu]
, yaitu, arg kanan dilewatkan ke fungsi itu sendiri. Jadi apa<left>
? ...(] , [: +/ [ {. ])
Argumen kiri untuk seluruh frasa ini pertama-tama ditransformasikan oleh gerund pertama, yaitu-@[
,. Itu berarti argumen kiri untuk frasa ini adalah negatif dari argumen kiri ke fungsi keseluruhan. Ini diperlukan agar frasa[ {. ]
mengambil elemen terakhir dari daftar kembali yang kita bangun. Mereka kemudian dijumlahkan:+/
. Dan akhirnya ditambahkan ke daftar pengembalian yang sama:] ,
.(1 #~ [)
- ulangi 1 "arg kiri" beberapa kali.Cobalah online!
sumber
Mathematica, 59 byte
Anda mungkin ingin melakukan
Clear@f
panggilan fungsi. Argumennyan,x
, sama seperti kasus uji.sumber
Tidy , 36 byte
Cobalah online!
Penjelasan
sumber
Japt , 18 byte
Cobalah online!
Penjelasan:
sumber