Lý lịch
Hầu hết mọi người đều quen thuộc với các số Fibonacci F(n)
:
0, 1, 1, 2, 3, 5, 8, 13, 21 ...
Chúng được hình thành bởi hàm đệ quy F(n) = F(n-1) + F(n-2)
với F(0)=0
và F(1)=1
. A000045
Một chuỗi liên quan chặt chẽ là các số Lucas L(m)
:
2, 1, 3, 4, 7, 11, 18, 29 ...
Chúng được hình thành bởi hàm đệ quy L(m) = L(m-1) + L(m-2)
với L(0)=2
và L(1)=1
. A000032
Chúng ta có thể xen kẽ giữa hai chuỗi dựa trên các chỉ số chẵn / lẻ, với việc xây dựng
A(x) = F(x)
nếu x mod 2 = 0
và A(x) = L(x)
nếu không. Ví dụ, A(4)
bằng F(4)
từ 4 mod 2 = 0
. Chúng tôi sẽ gọi chuỗi này là Số Lucas-nacci , A(x)
:
0, 1, 1, 4, 3, 11, 8, 29, 21, 76 ...
Điều này có thể được hình thành bởi các chức năng đệ quy A(x) = 3*A(x-2) - A(x-4)
với A(0)=0
, A(1)=1
, A(2)=1
, và A(3)=4
. A005013
Thử thách
Cho đầu vào n
, đầu ra chuỗi n+1
số lên đến và bao gồm A(n)
như mô tả ở trên. Ít byte nhất (hoặc tương đương byte, chẳng hạn như LabVIEW , như được xác định riêng lẻ trên Meta) sẽ thắng.
Đầu vào
Một số nguyên không âm n
.
Đầu ra
Một danh sách các số tương ứng với các số Lucas-nacci từ A(0)
đến A(n)
. Danh sách phải theo thứ tự tuần tự như mô tả ở trên.
Quy tắc
- Quy tắc tiêu chuẩn golf-golf và hạn chế kẽ hở áp dụng.
- Quy tắc đầu vào / đầu ra tiêu chuẩn được áp dụng.
- Số đầu vào có thể ở bất kỳ định dạng phù hợp nào: đơn nguyên hoặc thập phân, đọc từ STDIN, đối số hàm hoặc dòng lệnh, v.v. - lựa chọn của bạn.
- Đầu ra có thể được in thành STDOUT hoặc trả về do kết quả của chức năng gọi. Nếu được in, các dấu phân cách phù hợp để phân biệt các số phải được đưa vào (được phân tách bằng dấu cách, được phân tách bằng dấu phẩy, v.v.).
- Ngoài ra, nếu đầu ra cho STDOUT, khoảng trắng xung quanh, dòng mới, v.v ... đều là tùy chọn.
- Nếu đầu vào là một số nguyên không hoặc số nguyên âm, chương trình có thể làm bất cứ điều gì hoặc không có gì, vì hành vi không được xác định.
Ví dụ
Input -> Output
0 -> 0
5 -> 0, 1, 1, 4, 3, 11
18 -> 0, 1, 1, 4, 3, 11, 8, 29, 21, 76, 55, 199, 144, 521, 377, 1364, 987, 3571, 2584