Đây là cách trình tự Kolakoski (OEIS A000002 ) được định nghĩa:
Chuỗi Kolakoski là một chuỗi chứa
1và2, vànphần tử thứ của chuỗi là độ dài củannhóm thứ của các phần tử bằng nhau (chạy) trong chính chuỗi đó. 20 điều khoản đầu tiên của chuỗi và độ dài tương ứng là:1 2 2 1 1 2 1 2 2 1 2 2 1 1 2 1 1 2 2 1 - --- --- - - --- - --- --- - --- --- - 1 2 2 1 1 2 1 2 2 1 2 2 1Về cơ bản, độ dài của các nhóm phần tử bằng nhau của chuỗi Kolakoski là chính chuỗi Kolakoski.
Cho đến nay, rất tốt, nhưng đó là lý do tại sao chúng ta nên hạn chế 1và 2? Chúng tôi sẽ không đến! Cho hai đầu vào, một mảng các số nguyên dương Avà một số nguyên N, trả về các số hạng đầu tiên Ncủa chuỗi giống Kolakoski được xác định bằng cách quay vòng qua A. Để hiểu rõ hơn về nó, đây là một ví dụ hoạt động với độ dài của các nhóm mới được thêm vào trong ngoặc:
A = [2, 3, 1]
N = 25
2: [[2], 2 ]
3: [ 2 ,[2], 3 , 3 ]
1: [ 2 , 2 ,[3], 3 , 1 , 1 , 1 ]
2: [ 2 , 2 , 3 ,[3], 1 , 1 , 1 , 2 , 2 , 2 ]
3: [ 2 , 2 , 3 , 3 ,[1], 1 , 1 , 2 , 2 , 2 , 3 ]
1: [ 2 , 2 , 3 , 3 , 1 ,[1], 1 , 2 , 2 , 2 , 3 , 1 ]
2: [ 2 , 2 , 3 , 3 , 1 , 1 ,[1], 2 , 2 , 2 , 3 , 1 , 2 ]
3: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 ,[2], 2 , 2 , 3 , 1 , 2 , 3 , 3 ]
1: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 ,[2], 2 , 3 , 1 , 2 , 3 , 3 , 1 , 1 ]
2: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 ,[2], 3 , 1 , 2 , 3 , 3 , 1 , 1 , 2 , 2 ]
3: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 , 2 ,[3], 1 , 2 , 3 , 3 , 1 , 1 , 2 , 2 , 3 , 3 , 3 ]
1: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 , 2 , 3 ,[1], 2 , 3 , 3 , 1 , 1 , 2 , 2 , 3 , 3 , 3 , 1 ]
2: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 , 2 , 3 , 1 ,[2], 3 , 3 , 1 , 1 , 2 , 2 , 3 , 3 , 3 , 1 , 2 , 2 ]
C: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 , 2 , 3 , 1 , 2 , 3 , 3 , 1 , 1 , 2 , 2 , 3 , 3 , 3 , 1 , 2 , 2 ]
Đây là một ví dụ làm việc với một hàng đầu 1:
A = [1, 2, 3]
N = 10
1: [[1]]
2: [ 1 ,[2], 2 ]
3: [ 1 , 2 ,[2], 3 , 3 ]
1: [ 1 , 2 , 2 ,[3], 3 , 1 , 1 , 1 ]
2: [ 1 , 2 , 2 , 3 ,[3], 1 , 1 , 1 , 2 , 2 , 2 ]
C: [ 1 , 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 ]
Như bạn có thể thấy ở trên, kết quả cuối cùng đã được cắt N = 10thành các phần tử. Phần ntử thứ nên là nnhóm phần tử thứ bằng dài bao nhiêu , ngay cả khi chính phần tử đó thuộc về nhóm mà nó đề cập đến. Như trong trường hợp trên, nhóm đầu tiên 1đề cập đến nhóm đầu tiên như vậy 1, và nhóm đầu tiên 2đề cập đến nhóm thứ hai như vậy, bắt đầu với nhóm này.
Quy tắc
- Bạn có thể cho rằng
Asẽ không bao giờ có hai hoặc nhiều phần tử bằng nhau liên tiếp.Acó thể chứa một số nguyên nhiều hơn một lần, nhưng các yếu tố đầu tiên và cuối cùng sẽ không được bình đẳng, vàAsẽ có ít nhất 2 yếu tố (ví dụ[1, 2, 2, 3],[2, 4, 3, 1, 2]và[3]sẽ không được đưa ra). Đó là bởi vì nếu có các phần tử bằng nhau liên tiếp, kết quả cuối cùng sẽ là tiền tố không hợp lệ cho chuỗi như vậy. - Bạn có thể giả sử
Achỉ chứa các số nguyên dương (vì như vậy một chuỗi sẽ không được xác định). - Bạn có thể giả sử
Nlà một số nguyên không âm (N >= 0). - Bạn không thể trả lại nhiều điều khoản hơn yêu cầu.
- Sử dụng bất kỳ một trong những sơ hở tiêu chuẩn đều bị nghiêm cấm.
- Bạn có thể sử dụng bất kỳ phương pháp I / O hợp lý .
- Câu trả lời của bạn không phải hoạt động vượt quá giới hạn ngôn ngữ tự nhiên, nhưng về lý thuyết, thuật toán của bạn sẽ hoạt động với các đầu vào và số nguyên lớn tùy ý .
- Đây là môn đánh gôn , vì vậy câu trả lời ngắn nhất sẽ thắng.
Các trường hợp thử nghiệm
[5, 1, 2], 0 -> []
[2, 3, 1], 25 -> [2, 2, 3, 3, 1, 1, 1, 2, 2, 2, 3, 1, 2, 3, 3, 1, 1, 2, 2, 3, 3, 3, 1, 2, 2]
[1, 2, 3], 10 -> [1, 2, 2, 3, 3, 1, 1, 1, 2, 2]
[1, 2], 20 -> [1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1]
[1, 3], 20 -> [1, 3, 3, 3, 1, 1, 1, 3, 3, 3, 1, 3, 1, 3, 3, 3, 1, 1, 1, 3]
[2, 3], 50 -> [2, 2, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 3, 3, 2, 2, 3, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 2, 3, 3]
[7, 4], 99 -> [7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 7, 7, 7, 7, 4, 4, 4, 4, 7, 7, 7, 7, 4, 4, 4, 4, 7, 7, 7, 7, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4]
[1, 2, 3], 5 -> [1, 2, 2, 3, 3]
[2, 1, 3, 1], 2 -> [2, 2]
[1, 3, 5], 2 -> [1, 3]
[2, 3, 2, 4], 10 -> [2, 2, 3, 3, 2, 2, 2, 4, 4, 4]