Definisi
- a (1) = 1
- a (2) = 1
- a (n) = a (na (n-1)) + a (na (n-2)) untuk n> 2 di mana n adalah bilangan bulat
Tugas
Diberikan bilangan bulat positif n
, hasilkan a(n)
.
Testcases
n a(n)
1 1
2 1
3 2
4 3
5 3
6 4
7 5
8 5
9 6
10 6
11 6
12 8
13 8
14 8
15 10
16 9
17 10
18 11
19 11
20 12
Referensi
- OEIS Wajib A005185
code-golf
sequence
arithmetic
Biarawati Bocor
sumber
sumber
Jawaban:
Retina ,
84837974 byteHitungan byte mengasumsikan penyandian ISO 8859-1.
Cobalah online! (Baris pertama memungkinkan suite tes yang dipisahkan dengan linefeed.)
Saya harus golf ini lagi nanti.
sumber
Haskell,
3533 byteMenentukan fungsi
a
.sumber
(b.b)1+(b.b)2
lebih pendek dari jumlah?Julia, 29 byte
Cobalah online!
Bagaimana itu bekerja
Kami mendefinisikan kembali operator unary
!
untuk tujuan kami.Jika n adalah 1 atau 2 ,
n<3
mengembalikan true dan ini adalah nilai pengembalian kami.Jika n lebih besar dari 2 ,
n<3
mengembalikan false dan || cabang dieksekusi. Ini adalah implementasi langsung dari definisi, di mana~-n
menghasilkan n - 1 dan~-~-n
menghasilkan n - 2 .sumber
Sesos, 54 byte
Cobalah online
Dibongkar
Atau dalam notasi Brainfuck:
sumber
C,
4342 byteDisimpan 1 byte berkat @Dennis
Setiap jawaban sama, saya harus melakukan sesuatu yang berbeda!
Cobalah online!
Penjelasan: pada dasarnya
a(n-a(n-2))+a(n-a(n-1))
tetapi dengan perilaku swaggy undefined (berfungsi di ponsel saya (gcc) dan ideone).sumber
1
antara?
dan:
.$b+=$b[$_-$b[$_-2]]+$b[$_---$b[$_]]
Mathematica, 36 byte
Hitungan byte mengasumsikan penyandian ISO 8859-1 dan
$CharacterEncoding
set Mathematica keWindowsANSI
(default pada Windows; pengaturan lain mungkin bekerja juga, tetapi beberapa sepertiUTF-8
pasti tidak).Tentukan
±
sebagai operator unary.Saya mencoba menyingkirkan duplikasi, tetapi berakhir dengan jumlah byte yang sama:
sumber
Jelly ,
1514 byteCobalah online! atau verifikasi semua kasus uji (perlu beberapa detik).
Bagaimana itu bekerja
sumber
Jelly ,
141211 byteIni adalah pendekatan berulang.
Cobalah online! atau verifikasi semua kasus uji .
Bagaimana itu bekerja
sumber
Python,
4540 byteInterpretasi naif sederhana dari tantangan.
Disimpan 5 byte berkat @LeakyNun!
sumber
Haskell,
3937 Bytespersis seperti yang dijelaskan dalam tantangan, menggunakan penjaga
sumber
n<3
untukh 2
menjadi1
.R, 50 byte
Pemakaian:
sumber
CJam,
1918 byteCobalah online!
Menggunakan pendekatan berulang.
sumber
C #,
5144 bytesaya ingin tahu apakah ini dapat dipersingkat dengan membuatnya anonim,terima kasih pinkfloydx33!sumber
int a(int n)=>n<3?1:a(n-a(n-a))+a(n-a(n-2));
-a
dalam di set paren pertama harus-1
JavaScript (ES6),
45 Bytes34 BytesSolusi rekursif dalam ES6. Setiap tips bermain golf sangat dihargai.
Terima kasih kepada / u / ismillo untuk memperpendek lebih jauh.
sumber
Golfscript, 29 byte
Cobalah online!
sumber
05AB1E, 29 byte
Solusi berulang.
Cobalah online
sumber
APL, 20 byte
Penjelasan:
sumber
VBA Excel 87 byte
Non-rekursif, karena saya ingin ini berfungsi untuk n = 100000, katakan:
... dan tekan
return
(byte # 87) di akhir baris untuk mendapatkanEnd Function
pernyataan "gratis". Perhatikan bahwa nilai B diimbangi dengan -1 untuk menghindari inisialisasi untuk n = 1 dan 2.Meminta dalam spreadsheet seperti biasa, misalnya
=A(100000)
untuk mendapatkan48157
Versi rekursif, 61 byte ,
mulai menjadi sangat lambat untuk n> 30, dan tidak bisa dikatakan bekerja sama sekali untuk n> 40.
sumber
Ruby, 36 byte
Implementasi langsung. Saran bermain golf dipersilakan.
sumber
a[n-1]
dan semacamnya, fungsi perlu dinamai.Java 7,
686151 byte17 disimpan berkat Leaky Nun.
sumber
int a(int n){return n<3?1:a(n-a(n-2))+a(n---a(n));}
:, tetapi sayangnya menggunakan jumlah byte yang sama dengan jawaban yang sudah Anda miliki .. Juga, saya akan menentukan bahwa jawaban Anda ada di Java 7, karena jawaban Java 8 akan lebih pendek:n->return n<3?1:a(n-a(n-1))+a(n-a(n-2))
( 39 byte ) .Oasis ,
975 byte (tidak bersaing)Non-bersaing , karena bahasa tersebut mengungguli tantangan. Terima kasih kepada Kenny Lau karena telah menghemat 4 byte. Kode:
Formulir yang diperluas (
V
kependekan dari11
):Kode:
Cobalah online! . Menghitung n = 1000 dalam 0,1 detik.
sumber
PowerShell v2 +,
857969 byteMengambil input
$n
, menetapkan$b
menjadi array@(1, 1)
, lalu memasukkan loop dari2 .. $n
. Setiap iterasi kami tempelkan ke$b
perhitungan terbaru dalam urutan dengan sederhana+=
dan definisi urutan. Kami kemudian mengeluarkan nomor yang sesuai dari$b
(dengan-1
array karena di PowerShell diindeks nol). Ini berfungsi jika$n
ada1
atau2
karena kedua nilai tersebut telah diisi sebelumnya ke dalam indeks yang lebih rendah$b
sejak awal, jadi meskipun loop diack pada junk, toh diabaikan.Solusi rekursif
7876 bytePertama kali saya menggunakan jawaban yang setara dengan lambda, karena biasanya solusi berulang lebih pendek (seperti yang Anda lihat dari semua parenting bersarang).
Tetapi, dalam kasus ini, parested bersarang hampir digandakan dalam solusi iteratif dengan panggilan array bersarang, sehingga solusi rekursif lebih pendek.Tidak, solusi berulang memang lebih pendek (lihat di atas).Sebut saja melalui operator eksekusi, seperti
&$a 20
. Hanya panggilan rekursif langsung.sumber
JavaScript (ES6), 66 byte
Versi non-rekursif untuk kecepatan; versi rekursif mungkin lebih pendek tetapi saya akan membiarkannya ditulis orang lain. Saya selalu suka ketika saya bisa menggunakannya
reduce
. Catatan: 1 byte disimpan dengan mengembalikantrue
(yang1
digunakan saat digunakan dalam konteks integer) untuk daria(1)
dana(2)
.sumber
Pyth, 16 byte
Menentukan fungsi
y
.Cobalah online (ditambahkan
yMS20
untuk mencetak 20 nilai pertama)sumber
Keempat, 76 byte
Saya akhirnya berhasil!
Cobalah online
Penjelasan:
Cobalah online (sedikit tidak golf dari atas)
Sayangnya, saling rekursi agak terlalu bertele - tele untuk digunakan untuk bermain golf.
sumber
Maple,
4341 bytePemakaian:
Masalah ini tentu saja merupakan kandidat yang baik untuk memoisasi. Dengan menggunakan cache pilihan , waktu proses dikurangi secara signifikan:
Ini bisa dilihat menggunakan:
sumber
J,
2928 byteMenggunakan definisi rekursif.
Pemakaian
Perintah tambahan digunakan untuk memformat beberapa input / output.
Penjelasan
sumber
dc, 62 byte
Solusi ini memanfaatkan array dan rekursi.
sumber
dc
, beri tahu saya!Erlang, 46 byte
sumber
Lua, 59 byte
sumber