Sepertinya belum ada kontes untuk yang ini.
Tugasnya sederhana. Tambahkan n
angka pertama dari urutan Fibonacci yang genap dan output hasilnya.
Ini diberikan oleh OEIS A099919 , kecuali bahwa urutan digeser oleh satu, dimulai dengan fib(1) = 0
alih - alih fib(1) = 1
.
Ini kode golf. Hitungan byte terendah menang.
Contohnya
n sum
1 0
2 2
3 10
4 44
5 188
6 798
7 3382
8 14328
9 60696
code-golf
number-theory
fibonacci
dfernan
sumber
sumber
Jawaban:
Oasis ,
875 byte1 byte disimpan berkat @ETHProductions dan 2 lagi tersimpan berkat @Adnan!
Cobalah online!
Penjelasan:
Ini menggunakan rumus perulangan yang sama dengan jawaban MATL saya.
sumber
U
diganti dengan kode00
, mungkinkah itu menghemat satu byte?4*
denganz
dan2+
dengan»
:)Python, 33 byte
Cobalah online
Formula ajaib!
sumber
a(n) = (-10 + (5-3*sqrt(5))*(2-sqrt(5))^n + (2+sqrt(5))^n*(5+3*sqrt(5)))/20
(Colin Barker, 26 Nov 2016) dari halaman OEISPython 2 , 35 byte
Cobalah online!
sumber
Sebenarnya , 6 byte
Cobalah online!
Penjelasan:
Setiap angka Fibonacci ketiga (mulai dari
F_0 = 0
) adalah genap. Dengan demikian,n
angka Fibonacci bahkan pertama adalahF_{i*3}
untuki
di[0, n)
.sumber
JavaScript (ES6), 27 byte
Rekursi untuk menyelamatkan! Ini menggunakan salah satu formula pada halaman OEIS:
(Tapi digeser satu per satu karena tantangan menggesernya per satu)
sumber
Pyke, 6 byte
Coba di sini!
sumber
Perl 6 ,
38 3532 byteCobalah
Cobalah
Cobalah
Diperluas:
sumber
Oktaf ,
363533 byteCobalah online!
Penjelasan
Fungsi anonim ini mengimplementasikan persamaan perbedaan
a(n) = 4*a(n-1)+a(n-2)+2
sebagai filter rekursif :Dalam kasus kami
A = [1 -4 -1]
,B = 2
dan inputx
harus menjadi vektor yang, dengan hasil muncul sebagai entri terakhir dari outputy
. Namun, kami menetapkan0
nilai input pertama sehingga menjadi inisial0
muncul di output, seperti yang diperlukan.'FAD'-69
hanyalah cara yang lebih singkat untuk menghasilkan vektor koefisienA = [1 -4 -1]
; dan(1:n)>1
menghasilkan vektor inputx = [0 1 1 ... 1]
.sumber
dc ,
2522 byteCobalah online!
Atau simpan program dalam file dan jalankan dengan mengetik
Program ini menerima bilangan bulat n -negatif pada stdin, dan ini menghasilkan jumlah dari angka-angka pertama n bahkan Fibonacci pada stdout. (Urutan Fibonacci diambil untuk memulai dengan 0, sesuai dengan contoh OP.)
Program ini menggunakan rumus (F (3n-1) -1) / 2 untuk penjumlahan bilangan Fibonacci n n genap, di mana F adalah fungsi Fibonacci biasa, yang diberikan oleh F (0) = 0, F (1) = 1, F (n) = F (n-2) + F (n-1) untuk n> = 2.
dc adalah kalkulator berbasis tumpukan. Berikut penjelasan terperinci:
Pada titik ini, angka (1 + sqrt (5)) / 2 berada di bagian atas tumpukan.
Pada titik ini, 3n-1 berada di atas tumpukan (di mana n adalah input), dan (1 + sqrt (5)) / 2 adalah yang kedua dari atas.
Pada titik ini, angka di bagian atas tumpukan adalah (((1 + sqrt (5)) / 2) ^ (3n-1)) / sqrt (5). Bilangan bulat terdekat dengan nomor ini adalah F (3n-1). Perhatikan bahwa F (3n-1) selalu merupakan angka ganjil.
sumber
Mathematica,
2721 byteBerkat xnor karena menunjukkan formula alternatif, alephalpha untuk mengoreksi indeks awal
sumber
(Fibonacci(3*n+2)-1)/2
formula lebih pendek?MATL ,
1514 byteCobalah online!
Penjelasan
Ini menggunakan salah satu rumus pengulangan dari OEIS:
Untuk input N , kode ini mengulangi N kali, yaitu 2 kali lebih banyak dari yang diperlukan. Ini dikompensasi dengan menetapkan
0
,0
(bukan0
,2
) sebagai nilai awal, dan dengan menghapus nilai yang diperoleh terakhir dan menampilkan yang sebelumnya.sumber
Batch, 80 byte
Menggunakan fakta bahwa setiap angka Fibonacci ketiga genap, dan hanya menghitungnya tiga sekaligus (menghitung lebih dari satu pada satu waktu sebenarnya lebih mudah karena Anda tidak perlu menukar nilai di sekitar). Saya mencoba
(Fibonacci(3*n+2)-1)/2
formulasi tetapi sebenarnya beberapa byte lebih lama (t+=
ternyata cukup efisien dalam hal ukuran kode).sumber
C,
823836 byte2 byte disimpan berkat @BrainSteel
Rumus pada halaman OEIS membuatnya jauh lebih pendek:
Cobalah online!
82 byte:
Versi pertama adalah 75 byte tetapi fungsinya tidak dapat digunakan kembali, kecuali jika Anda selalu memanggil
f
dengan lebih besarN
dari panggilan sebelumnya :-)Jawaban pertama saya di sini. Tidak memeriksa jawaban lain atau OEIS. Saya kira ada beberapa trik yang bisa saya terapkan untuk membuatnya lebih pendek :-)
sumber
a(n){return--n<1?0:4*a(n)+a(n-1)+2;}
(36 byte)Haskell (
3231 byte)Disimpan satu byte berkat @ChristianSievers.
Menggunakan rumus yang diberikan dalam OEIS:
a(n) = 4*a(n-1)+a(n-2)+2, n>1
oleh Gary Detlefsa n|n>1=4*a(n-1)+a(n-2)+2|n<2=0
sumber
n<=1
bilangan bulat adalahn<2
. Juga, kondisi kedua tidak harus negasi dari yang pertama (idiomnyaotherwise
sederhanaTrue
), jadi biasanya dalam bermain golf sesuatu seperti1<2
digunakan.Mathematica,
3227 byteKredit ke xnor . Disimpan 5 byte berkat JungHwan Min.
sumber
(Fibonacci(3*n+2) - 1)/2
atau menulis sumi?(* Vincenzo Librandi, Mar 15 2014 *)
di pos, seperti yang ada di OEIS.)R, 42 byte
Solusi non-rekursif, berbeda dengan solusi sebelumnya oleh @rtrunbull di sini .
Menggunakan properti yang setiap nilai ketiga dari deret Fibonacci genap. Juga menyalahgunakan fakta yang
F
secara default didefinisikanFALSE=0
, yang memungkinkannya sebagai dasar untuk menambahkan nilai.sumber
R,
4241 byteSebelumnya, saya punya solusi tidak menarik ini menggunakan salah satu formula dari OEIS:
sumber
desctools::fibonacci
yangnumbers::fibonacci
bisa dilakukan itu ? Karena kabut itu sedikit lebih pendek.bigz
, yang*apply
diubah oleh kelas fungsi menjadi mengetikraw
karena alasan ...Japt , 10 byte
Cobalah online!
Terima kasih ETHproductions :)
sumber
PHP,
7370 bytemenampilkan variabel variabel . Di). Jalankan dengan
-nr
.kerusakan
Angka adalah nama variabel yang benar-benar valid dalam PHP.
Tapi, untuk literal, mereka membutuhkan kawat gigi; yaitu
${0}
tidak$0
.36 byte, O (1)
port jawaban xnor
sumber
PARI / GP, 21 byte
\
adalah hasil bagi bilangan bulat.sumber