Đây là một bản đăng lại của một thách thức cũ , để điều chỉnh các yêu cầu I / O theo các tiêu chuẩn gần đây của chúng tôi. Điều này được thực hiện trong nỗ lực cho phép nhiều ngôn ngữ tham gia vào một thách thức về trình tự phổ biến này. Xem bài đăng meta này để thảo luận về repost.
Trình tự Kolakoski là một chuỗi tự giới thiệu thú vị, có vinh dự là trình tự OEIS A000002 (và nó dễ hiểu và dễ thực hiện hơn A000001). Chuỗi bắt đầu bằng 1 , chỉ gồm 1 s và 2 s và phần tử chuỗi a (n) mô tả độ dài của lần chạy thứ n là 1 s hoặc 2 s trong chuỗi. Điều này xác định duy nhất chuỗi sẽ là (với một hình ảnh trực quan của các lần chạy bên dưới):
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,1, 2, 1, 2, 2, 1, 2, 2, 1,1, 2, 1,1, 2, 2, 1, 2, 1,...
Nhiệm vụ của bạn là, tất nhiên, để thực hiện trình tự này. Bạn có thể chọn một trong ba định dạng để làm như vậy:
- Lấy một đầu vào n và xuất ra số hạng thứ n của chuỗi, trong đó n bắt đầu từ 0 hoặc 1 .
- Lấy một đầu vào n và xuất các thuật ngữ lên đến và bao gồm số hạng thứ n của chuỗi, trong đó n bắt đầu từ 0 hoặc 1 (nghĩa là in n đầu tiên hoặc n + 1 đầu tiên ).
- Giá trị đầu ra từ chuỗi vô thời hạn.
Trong trường hợp thứ hai và thứ ba, bạn có thể chọn bất kỳ định dạng danh sách hợp lý, rõ ràng. Thật tốt nếu không có dấu phân cách giữa các phần tử, vì chúng luôn luôn là một chữ số duy nhất theo định nghĩa.
Trong trường hợp thứ ba, nếu trình của bạn là một hàm, bạn cũng có thể trả về một danh sách vô hạn hoặc một trình tạo bằng các ngôn ngữ hỗ trợ chúng.
Bạn có thể viết chương trình hoặc chức năng và sử dụng bất kỳ phương pháp tiêu chuẩn nào để nhận đầu vào và cung cấp đầu ra. Lưu ý rằng các sơ hở này bị cấm theo mặc định.
Đây là môn đánh gôn , vì vậy câu trả lời hợp lệ ngắn nhất - được đo bằng byte - thắng.