Tất cả chúng ta đều quen thuộc với chuỗi Fibonacci :
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765
Tuy nhiên, thay vì, f(n) = f(n-1) + f(n-2)
chúng tôi sẽ lấy tổng số của 2 mục trước.
Trình tự vẫn nên bắt đầu với 0, 1
, sau đó sự khác biệt là rõ ràng nhanh chóng. Danh sách này được lập chỉ mục 0, bạn cũng có thể sử dụng chỉ mục 1, trạng thái mà bạn đã sử dụng.
f(0) = 0
f(1) = 1
f(2) = 1 # 0 + 1
f(3) = 2 # 1 + 1
f(4) = 3 # 1 + 2
f(5) = 5 # 2 + 3
f(6) = 8 # 3 + 5
f(7) = 13 # 8 + 5
f(8) = 12 # 8 + 1 + 3
f(9) = 7 # 1 + 3 + 1 + 2
f(10) = 10 # 1 + 2 + 7
f(11) = 8 # 7 + 1 + 0
f(12) = 9 # 1 + 0 + 8
f(13) = 17 # 8 + 9
f(14) = 17 # 9 + 1 + 7
f(15) = 16 # 1 + 7 + 1 + 7
f(16) = 15 # 1 + 7 + 1 + 6
f(17) = 13 # 1 + 6 + 1 + 5
f(18) = 10 # 1 + 5 + 1 + 3
f(19) = 5 # 1 + 3 + 1 + 0
f(20) = 6 # 1 + 0 + 5
f(21) = 11 # 5 + 6
f(22) = 8 # 6 + 1 + 1
f(23) = 10 # 1 + 1 + 8
f(24) = 9 # 8 + 1 + 0
f(25) = 10 # 1 + 0 + 9
f(26) = 10 # 9 + 1 + 0
f(27) = 2 # 1 + 0 + 1 + 0
(After this point it repeats at the 3rd term, 0-indexed)
Lưu ý: Tôi đã không nhận thấy sự lặp lại cho đến khi tôi tự đăng tải thử thách và ở đây tôi đã nghĩ rằng không thể viết một thử thách Fibonacci mới lạ khác.
Nhiệm vụ của bạn là, được đưa ra một số n
, xuất ra chữ số thứ n của chuỗi này.
Đầu 3 chữ số: [0,1,1]
,
Mẫu lặp lại gồm 24 chữ số: [2,3,5,8,13,12,7,10,8,9,17,17,16,15,13,10,5,6,11,8,10,9,10,10]
Gợi ý: Bạn có thể khai thác sự lặp lại này để lợi thế của bạn.
Đây là mã golf , số byte thấp nhất là người chiến thắng.
THƯỞNG: Nếu bạn sử dụng sự lặp lại trong câu trả lời của mình, tôi sẽ trao giải cho câu trả lời có số byte thấp nhất tận dụng sự lặp lại trong chuỗi tiền thưởng 100 điểm. Điều này nên được gửi như một phần của câu trả lời ban đầu của bạn, sau câu trả lời ban đầu của bạn. Xem bài đăng này như một ví dụ về những gì tôi đang nói về: https://codegolf.stackexchange.com/a/108972/59376
Để đủ điều kiện nhận phần thưởng này, mã của bạn phải chạy trong thời gian không đổi ( O(1)
) với lời giải thích.
Người chiến thắng tiền thưởng: Dennis https://codegolf.stackexchange.com/a/108967/59376 <Dennis đã thắng.
Thực hiện độc đáo nhất: https://codegolf.stackexchange.com/a/108970/59376
(Cũng sẽ nhận được 100 điểm, hoàn thành sau khi chọn câu trả lời đúng)
%24
giải pháp "bình thường"?
O(1)
. Mã của bạn nên được chạy trong thời gian liên tục, nếu nó thực sự khai thác sự lặp lại.