Từ Fibonacci vô hạn là một chuỗi cụ thể, vô hạn các chữ số nhị phân, được tính bằng cách ghép lặp lại các từ nhị phân hữu hạn.
Hãy để chúng tôi xác định rằng một từ dãy Fibonacci-type (hoặc chuỗi FTW ) là bất kỳ chuỗi ⟨W n ⟩ mà được hình thành như sau.
Bắt đầu với hai mảng tùy ý của các chữ số nhị phân. Chúng ta hãy gọi các mảng này là W -1 và W 0 .
Đối với mỗi n> 0 , chúng ta hãy W n ≔ W n-1 ∥ W n-2 , nơi ∥ biểu thị nối.
Một hệ quả của định nghĩa đệ quy là W n luôn là tiền tố của W n + 1 và do đó, trong tất cả các W k sao cho k> n . Trong một nghĩa nào đó, phương tiện này chuỗi ⟨W n ⟩ hội tụ đến một từ vô hạn.
Chính thức, chúng ta hãy W ∞ là mảng chỉ vô hạn mà W n là tiền tố của W ∞ cho tất cả n ≥ 0 .
Chúng tôi sẽ gọi bất kỳ từ vô hạn nào được hình thành bởi quá trình trên là FTW vô hạn .
Bài tập
Viết một chương trình hoặc chức năng chấp nhận hai chữ nhị phân W -1 và W 0 như là đầu vào và in W ∞ , tuân thủ những điều sau, bổ sung, quy tắc:
Bạn có thể chấp nhận các từ theo thứ tự bất kỳ; như hai mảng, một mảng các mảng, hai chuỗi, một chuỗi các chuỗi hoặc một chuỗi với một dấu phân cách bạn chọn.
Bạn có thể in các chữ số của từ vô hạn mà không có dấu phân cách hoặc có dấu phân cách nhất quán giữa mỗi cặp chữ số liền kề.
Đối với tất cả các mục đích, giả sử rằng mã của bạn sẽ không bao giờ hết bộ nhớ và các loại dữ liệu của nó không bị tràn.
Cụ thể, điều này có nghĩa là bất kỳ đầu ra nào cho STDOUT hoặc STDERR là kết quả của sự cố sẽ bị bỏ qua.
Nếu tôi chạy mã của bạn trên máy của mình (Intel i7-3770, RAM 16 GiB, Fedora 21) trong một phút và chuyển đầu ra của nó sang
wc -c
, nó phải in ít nhất một triệu chữ số W ∞ cho (W -1 , W 0 ) = (1, 0) .Tiêu chuẩn quy tắc golf-golf áp dụng.
Thí dụ
Đặt W -1 = 1 và W 0 = 0 .
Khi đó W 1 = 01 , W 2 = 010 , W 3 = 01001 , W 4 = 01001010 , và W ∞ = 010010100100101001010 .
Đây là những Fibonacci từ vô hạn.
Các trường hợp thử nghiệm
Tất cả các trường hợp thử nghiệm chứa 1.000 chữ số đầu tiên của FTW vô hạn.
Input: 1 0
Output: 0100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001
Input: 0 01
Output: 0100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001
Input: 11 000
Output: 0001100000011000110000001100000011000110000001100011000000110000001100011000000110000001100011000000110001100000011000000110001100000011000110000001100000011000110000001100000011000110000001100011000000110000001100011000000110000001100011000000110001100000011000000110001100000011000110000001100000011000110000001100000011000110000001100011000000110000001100011000000110001100000011000000110001100000011000000110001100000011000110000001100000011000110000001100000011000110000001100011000000110000001100011000000110001100000011000000110001100000011000000110001100000011000110000001100000011000110000001100000011000110000001100011000000110000001100011000000110001100000011000000110001100000011000000110001100000011000110000001100000011000110000001100011000000110000001100011000000110000001100011000000110001100000011000000110001100000011000000110001100000011000110000001100000011000110000001100011000000110000001100011000000110000001100011000000110001100000011000000110001100000011000110000001100000011
Input: 10 010
Output: 0101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001001010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010010100101001001010010100100101001001010010100100101001010010010100100101001010010010100100101001010010010100101001001010010010100101001001010010100100101001001010
Input: 101 110
Output: 1101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101101011101011101101011101101011101011101101011101011101101011101