Viết chương trình hoặc hàm được đặt tên sẽ xuất hoặc trả lại chuỗi lên n
số nguyên thứ trong chuỗi Iccanobif, được ghi lại trên OEIS là A014258 . Lưu ý rằng chỉ phần tử zeroth trong chuỗi ( 0
) sẽ được in nếu n
bằng không.
Chuỗi được tạo bằng cách bắt đầu giống như chuỗi Fibonacci tiêu chuẩn, nhưng sau khi thêm hai số trước đó, bạn lật kết quả và thả bất kỳ số 0 đứng đầu nào. Một sự thật thú vị, với tôi ít nhất, là trình tự này không tăng nghiêm ngặt (xem danh sách dưới đây). Nó dường như cũng (và có lẽ là) hoàn toàn lớn hơn hoặc bằng chuỗi Fibonacci.
Đầu vào chương trình của bạn phải là một số nguyên.
20 số đầu tiên của chuỗi được cung cấp ở đây để bạn thưởng thức:
0, 1, 1, 2, 3, 5, 8, 31, 93, 421, 415, 638, 3501, 9314, 51821, 53116, 739401, 715297, 8964541, 8389769
Sơ hở tiêu chuẩn bị cấm.
Chương trình ngắn nhất sẽ thắng.
EDIT: Đã thêm một ghi chú để làm rõ rằng chuỗi bắt đầu bằng phần tử zeroth và nên được bao gồm nếu n
bằng không.
Ví dụ về khả năng IO:
0 -> 0
1 -> 0 1
6 -> 0 1 1 2 3 5 8
17 -> [0, 1, 1, 2, 3, 5, 8, 31, 93, 421, 415, 638, 3501, 9314, 51821, 53116, 739401, 715297]
Bây giờ có một số câu trả lời, dưới đây là các triển khai của tôi trong Python 2 mà tôi đã làm việc chăm chỉ để ẩn với đánh dấu:
Lặp lại:
#Closest vào chương trình ban đầu của tôi. 73 byte. Cũng cần lưu ý rằng chương trình này không thể đạt đến một tràn ngăn xếp. Nó chạy trong n = 5000 trong chưa đầy 10 giây.i,a,b=input(),0,1 print a while i:print b;i,a,b=i-1,b,int(str(a+b)[::-1])
Đệ quy:
# Lưu ý rằng điều này inn
dòng mới. 64 byte. Sẽ gặp lỗi tràn ngăn xếp đối với các giá trị lớn của n.def f(n,i=0,j=1):print i,n and f(n-1,j,int(str(i+j)[::-1]))or'';