Urutan pengulangan biner adalah urutan yang didefinisikan secara rekursif dari bentuk berikut:
Ini adalah generalisasi dari deret Fibonacci ( x = 1, y = 2, a = [1, 1], alpha = 1, beta = 1
) dan deret Lucas ( x = 1, y = 2, a = [2, 1], alpha = 1, beta = 1
).
Tantangan
Mengingat n
, x
, y
, a
, alpha
, dan beta
, dalam format yang wajar, output n
jangka th urutan kekambuhan yang sesuai biner.
Aturan
- Anda dapat memilih urutan yang akan diindeks 1 atau 0, tetapi pilihan Anda harus konsisten di semua input, dan Anda harus membuat catatan pilihan Anda dalam jawaban Anda.
- Anda dapat mengasumsikan bahwa tidak ada input yang tidak valid yang akan diberikan (seperti urutan yang berakhir sebelum
n
, atau urutan yang referensi istilah yang tidak ditentukan, sukaF(-1)
atau diF(k)
manak > n
). Akibatnya,x
dany
akan selalu positif. - Input dan output akan selalu berupa bilangan bulat, dalam batas tipe bilangan bulat alami bahasa Anda. Jika bahasa Anda memiliki bilangan bulat tanpa batas, input dan output akan berada dalam kisaran
[2**31, 2**31-1]
(yaitu kisaran untuk integer komplemen dua bertanda tangan 32-bit yang ditandatangani). a
akan selalu berisiy
nilai persis (sesuai definisi).
Uji Kasus
Catatan: semua test case diindeks 0.
x = 1, y = 2, a = [1, 1], alpha = 1, beta = 1, n = 6 => 13
x = 1, y = 2, a = [2, 1], alpha = 1, beta = 1, n = 8 => 47
x = 3, y = 5, a = [2, 3, 5, 7, 11], alpha = 2, beta = 3, n = 8 => 53
x = 1, y = 3, a = [-5, 2, 3], alpha = 1, beta = 2, n = 10 => -67
x = 5, y = 7, a = [-5, 2, 3, -7, -8, 1, -9], alpha = -10, beta = -7, n = 10 => 39
a
pesanan terbalik dianggap masuk akal?Jawaban:
Jelly , 11 byte
Cobalah online! 1 | 2 | 3 | 4 | 5
Bagaimana itu bekerja
sumber
Python 2, 62 byte
Solusi rekursif langsung. Semua input diambil dari STDIN kecuali untuk
n
sebagai argumen fungsi, pemisahan yang diizinkan secara default (meskipun kontroversial).Sepertinya tidak ada cara untuk menghemat byte dengan
and/or
di tempatif/else
karenal[n]
bisa jadi palsu sebagai 0.sumber
Python 2, 59 byte
Uji di Ideone .
sumber
JavaScript (ES6),
5144 bytePerhatikan bahwa fungsi ini sebagian dikerjakan, misalnya
f(1,2,[1,1],1,1)(8)
mengembalikan 34. Akan memakan biaya 2 byte untuk membuat fungsi antara tidak saling tergantung satu sama lain (saat ini hanya fungsi yang dihasilkan terakhir yang bekerja dengan benar).Sunting: Disimpan 7 byte berkat @Mego menunjukkan bahwa saya telah mengabaikan bahwa array yang lewat selalu berisi
y
elemen pertama dari hasilnya.sumber
Haskell,
5448 bytesumber
J, 43 byte
Dengan urutan awal istilah A , hitung istilah berikutnya n kali menggunakan parameter x , y , α , dan β . Setelah itu, ia memilih istilah ke- n dalam urutan yang diperluas dan hasilnya sebagai hasilnya.
Pemakaian
Karena J hanya mendukung 1 atau 2 argumen, saya mengelompokkan semua parameter sebagai daftar daftar kotak. Nilai benih awal A adalah yang pertama, diikuti oleh parameter x dan y sebagai daftar, diikuti oleh parameter α dan β sebagai daftar, dan diakhiri dengan nilai n .
sumber