Xem xét một số chuỗi nhị phân, sử dụng 1
và 2
, ví dụ:
1, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1 ...
Hãy viết ra chiều dài của nó:
1, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1 ...
_ _ ____ ____ _ _ _ ____
1, 1, 2, 2, 1, 1, 1, 2, ...
Trong trường hợp này, chúng tôi tình cờ nhận được một chuỗi nhị phân khác. Tất nhiên, điều đó không được đảm bảo (ví dụ: nếu chúng tôi lặp lại quy trình, lần chạy thứ ba sẽ là 3
), nhưng giả sử chúng tôi làm.
Bây giờ câu hỏi là, chúng ta có thể tìm thấy một chuỗi sao cho việc áp dụng loại mã hóa độ dài chạy này nhiều lần sẽ cho chúng ta trở lại trình tự ban đầu không? Đối với độ dài chu kỳ là 1 (tức là một điểm cố định của phép chuyển đổi này), chúng tôi tìm thấy chuỗi Oldenburger-Kolakoski (mục OEIS A0000002 ):
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, ...
(Thực sự có một giải pháp khác: chúng ta cũng có thể bỏ qua phần đầu 1
.)
Một chu kỳ dài 2 thì sao? Điều đó cũng có thể! Hai chuỗi sau đây là danh sách độ dài chạy của nhau:
1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, ...
2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, ...
(Đây là các mục OEIS A025142 và A025143 . Đây là giải pháp duy nhất.)
Chúng ta có thể tìm thấy một chu kỳ dài 3 không? Chắc chắn, ở đây mỗi chuỗi là mã hóa độ dài chạy tiếp theo (và chuỗi thứ ba là mã hóa độ dài chạy của đầu tiên):
1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, ...
1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, ...
2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, ...
Trong trường hợp này có một giải pháp khác. Nó chỉ ra rằng chúng ta có thể tìm thấy một chu kỳ như vậy cho mỗi chiều dài chu kỳ. Trong thực tế, số chu kỳ riêng biệt có độ dài n được đưa ra bởi mục nhập OEIS A001037 (đây không tính sự lựa chọn tùy ý trong đó trình tự trong một chu kỳ được coi là đầu tiên).
Sự thật thú vị: Có vẻ như không có vẻ gì, thử thách này được lấy cảm hứng từ việc nghiên cứu bản đồ phức tạp f(z) = z - 1/z
. Bất cứ ai tìm ra bản đồ đó phải làm gì với thử thách này đều nhận được cookie.
Các thách thức
Cho chiều dài chu kỳ k > 0
và độ dài chuỗi n > 0
, xuất ra các số hạng đầu tiên n
của k
chuỗi nhị phân riêng biệt (vô hạn) tạo thành một chu kỳ theo phép biến đổi độ dài chạy ở trên. Nếu có nhiều chu kỳ tồn tại, bạn có thể xuất bất kỳ một trong số chúng. Tùy thuộc vào bạn bắt đầu chuỗi nào trong chu kỳ và hướng đi của chu kỳ (vì vậy bạn có thể xuất chúng sao cho mỗi chuỗi mô tả tiếp theo hoặc sao cho mỗi chuỗi mô tả chuỗi trước đó theo chu kỳ).
Bạn có thể viết chương trình hoặc hàm, lấy đầu vào qua STDIN (hoặc thay thế gần nhất), đối số dòng lệnh hoặc đối số hàm và xuất kết quả qua tham số STDOUT (hoặc thay thế gần nhất), tham số trả về hàm hoặc tham số hàm (out).
Đầu ra có thể ở bất kỳ định dạng danh sách lồng nhau thuận tiện, rõ ràng, lồng nhau, sao cho kích thước bên ngoài k
và kích thước bên trong là n
.
Luật golf tiêu chuẩn được áp dụng.
Ví dụ bổ sung
Dưới đây là một số ví dụ. Nhưng như tôi đã nói, các giải pháp không phải là duy nhất, vì vậy các giải pháp của riêng bạn có thể khác nhau và vẫn đúng. Có lẽ những điều này sẽ giúp bạn đưa ra một giải pháp mặc dù. Mỗi ví dụ được k n
theo sau bởi các chuỗi, sao cho mỗi dòng mô tả tiếp theo (theo chu kỳ):
4 20
1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2
2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1
2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1
1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1
5 6
2, 2, 1, 2, 2, 1
1, 1, 2, 2, 1, 2
2, 1, 2, 2, 1, 1
1, 1, 2, 1, 1, 2
2, 1, 2, 2, 1, 2
8 20
2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2
1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1
2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2
2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2
1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1
2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2
1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1
2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1
13 50
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2
2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1
1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1
1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1
1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1
1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1
Lưu ý rằng không phải tất cả các dòng trong hai đầu ra cuối cùng đều khác nhau, mặc dù cuối cùng chúng sẽ n
đủ lớn.