Đây là cách trình tự Kolakoski (OEIS A000002 ) được định nghĩa:
Chuỗi Kolakoski là một chuỗi chứa
1
và2
, vàn
phần tử thứ của chuỗi là độ dài củan
nhó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 1
Về 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ế 1
và 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 A
và một số nguyên N
, trả về các số hạng đầu tiên N
củ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 = 10
thành các phần tử. Phần n
tử thứ nên là n
nhó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
A
sẽ không bao giờ có hai hoặc nhiều phần tử bằng nhau liên tiếp.A
có 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àA
sẽ 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ử
A
chỉ 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ử
N
là 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]