Anda seharusnya sudah mendengar tentang Angka Fibonacci , sering disebut Urutan Fibonacci. Dalam urutan ini, dua istilah pertama adalah 0 dan 1, dan setiap angka setelah dua yang pertama adalah jumlah dari dua yang sebelumnya. Dengan kata lain F(n) = F(n-1) + F(n-2)
,.
Inilah 20 angka Fibonacci pertama:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
Tugas:
Dengan bilangan bulat x
, hitung rata-rata aritmatika (rata-rata) dari Angka-Angka Fibonacci utama hingga x
jumlah Urutan Fibonacci.
Aturan:
- urutan Fibonacci dimulai dengan 0 dan 1 untuk tantangan ini
3 < x < 40
, karena nilai yang lebih tinggi darix
dapat menyebabkan waktu eksekusi besar atau meluap dan nilai yang lebih kecil tidak memiliki output- 1 BUKAN prima, karena hanya memiliki 1 pembagi
- rata-rata aritmatik harus menyertakan desimal, jika itu masalahnya, atau harus ditampilkan sebagai fraksi yang tepat
- Anda hanya diperbolehkan untuk mengambil
x
input dan kode yang diperlukan untuk mengambil input tidak masuk hitungan (misalnya: jika Anda memerlukan sesuatu sepertix = input()
, Anda tidak harus mempertimbangkannya saat menghitung byte)
Contoh:
Ex. 1: Untuk x=10
, outputnya adalah 5.75
, karena angka Fibonacci 10 adalah 55
dan bilangan Fibonacci utama 55
adalah 2, 3, 5, 13
, rata-rata mereka5.75
Mengikuti penjelasan dari contoh 1, contoh lain adalah:
Ex. 2: Untuk x=15
, outputnya adalah57.5
Ex. 3: Untuk x=20
, outputnya 277.428571428571
, atau perkiraan dekat lainnya. Dalam hal ini 277.4286
, misalnya, adalah nilai yang diterima
Ex. 4: Untuk x=11
, outputnya22.4
Ex. 5: Untuk x=30
, outputnya 60536.4444444444
, atau perkiraan dekat lainnya, seperti60536.444
Papan peringkat:
Untuk mengubah pemimpin, kirim solusi yang lebih pendek dan valid. Kode Anda harus sesingkat mungkin, karena ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang. Semoga berhasil!
Jawaban:
Sebenarnya 10 byte
Kode:
Penjelasan:
Menggunakan pengodean CP-437 . Cobalah online!
sumber
Python 2 , 71 byte
Cobalah online!
Python tidak memiliki built-in aritmatika yang berguna untuk ini, jadi kami melakukan hal-hal dengan tangan. Kode iterate melalui angka-angka Fibonacci melalui
a,b=b,a+b
mulai daria=b=1
.The uji primality Fermat dengan basis 2 digunakan untuk mengidentifikasi bilangan prima sebagai
a
mana2^a == 2 (mod a)
. Meskipun ini hanya memeriksa kemungkinan bilangan prima, tidak ada positif palsu yang ada dalam 40 angka Fibonacci pertama.Jumlah
s
dan jumlahc
prima saat ini diperbarui setiap kali prime ditemui, dan rasio mereka (rata-rata) dicetak di akhir. Karena pengecekan perdana gagala=2
dan dijamin berada dalam rentang input, jumlah dimulai dari 2 dan penghitungan dimulai pada 1 untuk mengkompensasi.sumber
Jelly , 11 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Mathematica, 38 byte
Penjelasan
sumber
#
dan tidak#-1
: OP mengatakan bahwa 55 adalah angka Fibonacci 10, jadi daftar mereka harus diindeks 0 (seperti konvensi terbaik). Bandingkan output Anda dengan input10
dan11
dengan OP. Untungnya ini sebenarnya menghemat tiga byte!&
dan menggantinya#
denganx
(pertanyaan mengatakan bahwa kode pengambilan input tidak diberi skor)Perl 6 , 51 byte
Cobalah
Diperluas:
sumber
MATL , 16 byte
Cobalah online!
Penjelasan
sumber
Oktaf ,
7571 byteFungsi anonim yang menggunakan rumus Binet . Input dan output dalam bentuk argumen fungsi.
Cobalah online!
sumber
isprime
yang sempurna untuk tantangan ini.Maksima, 49 byte
sumber
Prolog (SWI) ,
269264254218 byteSaya cukup yakin bahwa saya bisa menurunkan beberapa byte lagi.
Menjalankannya sebagai
a(15, R).
untuk x = 15 , R adalah variabel output.Cobalah online!
Versi yang lebih mudah dibaca:
sumber
N*C:-
diizinkan untuk deklarasi kepala di PPCG, yang dapat menghemat beberapa byte.p(N,C):-
denganN*C:-
?Röda ,
989493 byteIni adalah fungsi yang mengembalikan hasilnya sebagai angka floating point.
Versi tidak disatukan:
sumber
c%p>0
bukanc%p!=0
?05AB1E , 13 byte
Cobalah online! atau sebagai Test suite
Penjelasan
sumber
Pyke , 11 byte
Cobalah online!
sumber
dc , 129 byte
Generator nomor Fibonacci dan pemeriksa primalitas semuanya menjadi satu. Bagus.
Cobalah online!
sumber
Japt , 14 byte
Menguji
Penjelasan
Input bilangan bulat implisit
U
.30
Buat array bilangan bulat dari 0 hingga
U
inklusif.[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
Lewati setiap integer melalui fungsi.
Dapatkan
X
nomor Fibonacci th, di manaX
elemen saat ini.Saring (
f
) array ke elemen-elemen yang mengembalikan kebenaran ketika diperiksa untuk primality (j
). Secara implisit tetapkan array yang dihasilkan ke variabelU
.[2,3,5,13,89,233,1597,28657,514229]
Kurangi array dengan menjumlahkan.
544828
Bagilah hasilnya dengan panjang array (
l
) dan secara implisit menampilkan hasilnya.60536.444444444445
sumber
perl, 91 byte
Cuold lebih pendek 8 byte jika tes modulo pseudoprime bekerja dengan baik di perl seperti pada jawaban python:
... tapi ini memberikan jawaban yang salah untuk input> 16 dalam perl.
sumber
Aksioma, 104 byte
ungolfed, kode uji dan hasil
saya mencoba untuk menduplikasi matematica, oktaf dll bahasa masuk, jika salah satu tidak menghitung mean fungsi (), untuk menerapkannya akan berada di sini 62 bytes begitu baik juga
sumber
JavaScript ES6,
137136118113 byteSejarah
118 byte
136 byte
137 byte
sumber