Saya membuat urutan sendiri baru-baru ini (disebut urutan Piggyback), dan berfungsi seperti ini:
P(1)
, P(2)
dan P(3)
= 1
.
Untuk semua P(n)
tempat n>3
, urutannya berfungsi seperti ini:
P(n) = P(n-3) + P(n-2)/P(n-1)
Jadi, lanjutkan urutannya:
P(4)
= 1 + 1/1
=2
P(5)
= 1 + 1/2
= 3/2
=1.5
P(6)
= 1 + 2/(3/2)
= 7/3
=2.33333...
P(7)
= 2 + (3/2)/(7/3)
= 37/14
=2.6428571428...
P(8)
= 3/2 + (7/3)/(37/14)
= 529/222
=2.3828828828...
Tugas Anda, ketika diberikan n
, menghitung P(n)
baik sebagai angka floating point atau fraksi (im) yang tepat.
Ini adalah kode-golf , jadi kode terpendek dalam byte menang.
Jika ada yang bisa menemukan nama urutannya, silakan edit posting yang sesuai.
P(0)=1
...Jawaban:
Python 2,
4039 byte.Memberikan
True
bukan 1, jika ini tidak diizinkan, kami dapat memiliki ini untuk 42 byte:Cara kerjanya cukup mudah, satu-satunya trik yang digunakan
.0+
untuk melemparkan hasilnya ke pelampung.sumber
x<4
danor
f(x-1.)
untuk melakukan cast. Di Python 3, Anda tidak perlu melakukan casting sama sekali.Haskel, 32 byte
Contoh penggunaan:
((0#1)1!!) 7
->2.642857142857143
. Saya memulai urutan dengan0, 1, 1
memperbaiki!!
pengindeksan berbasis 0.Sunting: @xnor menemukan cara untuk beralih dari indeks berbasis-0 ke berbasis-1, tanpa mengubah jumlah byte.
sumber
(0,1,1)
.Ruby, 34 byte
Karena Ruby menggunakan pembagian integer secara default, ternyata itu lebih pendek untuk menggunakan pecahan. Saran bermain golf diterima.
sumber
Perl 6 ,
2523 bytePenjelasan:
Ini mengembalikan Rat ( Rasional ) untuk input mulai dengan 3 hingga hasilnya akan mulai memiliki penyebut yang lebih besar daripada yang bisa muat dalam integer 64 bit, di mana titik itu mulai mengembalikan Num (floating point). Tikus
terakhir yang akan kembali adalah
P(11) == 8832072277617 / 2586200337022
Jika Anda ingin mengembalikan angka Rasional daripada mengapung, Anda dapat menukarnya dengan yang berikut yang akan mengembalikan FatRat sebagai gantinya.
Uji:
sumber
C, 46 byte
Ideone
sumber
MATL , 15 byte
Cobalah online!
Penjelasan
sumber
Cheddar , 31 byte
Versi ungolfed begitu jelas sehingga Anda tidak perlu penjelasan:
pada dasarnya setelah argumen fungsi, Anda dapat menentukan variabel yang akan digunakan yang akan diatur ke fungsi itu sendiri. Mengapa? karena fungsi ini akan dioptimalkan ekor-panggilan, atau setidaknya seharusnya.
sumber
Javascript (ES6), 31 byte
Fungsi sederhana.
sumber
P=n=>n<4?1:P(n-3)+P(n-2)/P(n-1)
function
. BitP=n=>[...]
menciptakan fungsi anonim yang mengambil 1 parameter (n). Juga, pada ES6, pengembaliannya implisit. Jadi,P=n=>5
adalah fungsi yang selalu kembali5
. Anda hanya perlu menyertakan tubuh{}
jika Anda memiliki lebih dari satu pernyataan (Misalnya:)P=n=>{alert(1);console.log(1)}
. Karena Anda hanya memiliki 1 pernyataan (besar) (operator ternary), Anda dapat melupakannya{}
.05AB1E ,
1817 byteCobalah online!
Disimpan 1 byte berkat Luis Mendo
sumber
Pyth, 20 byte
Cobalah online!
sumber
Jelly , 15 byte
Cobalah online! atau verifikasi semua kasus uji .
Bagaimana itu bekerja
sumber
R,
5347 byteJawaban ini memanfaatkan fungsi yang cukup rapi
ifelse
:ifelse(Condition, WhatToDoIfTrue, WhatToDoIfNot)
sumber
return()
kode Anda. Tetapi Anda juga harus menyebutkan fungsi tersebut agar rekursi Anda berfungsiMathematica, 36 byte
Berikut adalah beberapa istilah pertama:
sumber
Dyalog APL, 25 byte
⊃{1↓⍵,⍎⍕' +÷',¨⍵}⍣⎕⊢0 1 1
sumber