Chuyển thể từ câu đố FiveThentyEight này .
Lý lịch
Kiểm tra trình tự vô hạn sau:
3 3 3 2 3 3 3 2 3 3 3 2 3 3 2 3 3 3 2 ...
Giả sử chuỗi này được lập chỉ mục 1. Số i
thứ trong dãy xác định có bao nhiêu 3
s trước i
th 2
và theo sau bất kỳ 2
s nào trước đó . Vì vậy, vì chuỗi bắt đầu bằng một 3
chuỗi phải bắt đầu 3 3 3 2
và vì có ba 3
s ở đầu chuỗi nên chuỗi 3 3 3 2
phải lặp lại ba lần. Sau đó bạn đạt được 3 3 2
vì số thứ tư trong chuỗi là 2
.
Câu đố FiveThentyEight yêu cầu giới hạn tỷ lệ từ ba đến hai lần (mà tôi sẽ không làm hỏng ở đây) nhưng bạn cũng có thể hỏi tỷ lệ tích lũy sau chỉ số là bao nhiêu i
. Ví dụ tỷ lệ tại i=4
là 3/1 = 3
và tại i=15
đó 11/4 = 2.75
.
Chúng ta hãy nói chung
Các số đã cho n
và k
chúng ta có thể tạo một chuỗi tương tự bắt đầu bằng n
và giống như chuỗi ban đầu được mô tả số tại chỉ số i
xác định có bao nhiêu n
s hiển thị trước i
th k
và theo sau bất kỳ k
s nào trước đó .
Ví dụ:
n=2, k=5
đưa ra trình tự 2 2 5 2 2 5 2 2 2 2 2 5 2 2 5 ...
n=3, k=0
cho 3 3 3 0 3 3 3 0 3 3 3 0 0 3 3 3 0 ...
n=1, k=3
cho 1 3 1 1 1 3 1 3 1 3 1 3 1 1 1 3 1 ...
Các thách thức
Viết một hàm / chương trình và với nó làm như sau. Lấy làm đầu vào:
- một số nguyên dương
n
- một số nguyên không âm
k ≠ n
- một số nguyên dương
i > n
Hai đầu vào đầu tiên n
và k
xác định một chuỗi như được mô tả ở trên và i
là một chỉ mục. Tôi đang sử dụng lập chỉ mục 1 trong các ví dụ nhưng bạn có quyền tự do sử dụng lập chỉ mục 0 hoặc 1. Nếu 0-index thì hạn chế i
là i ≥ n
.
Với ba số đầu ra, tỷ lệ của n
s với k
s trong chuỗi lên đến và bao gồm cả số tại chỉ mục i
. Định dạng của đầu ra có thể là giá trị thập phân có ít nhất 5 chữ số chính xác hoặc giá trị chính xác theo tỷ lệ như 3524/837
hoặc 3524:837
.
Ở dạng thập phân, chữ số cuối cùng có thể được làm tròn theo cách bạn muốn. Số 0 và khoảng trắng được phép.
Trong một trong hai dạng chuỗi, hai số cần được chuẩn hóa để chúng là nguyên tố cùng nhau. Ví dụ: nếu tỷ lệ là 22/4, 11/2
và 11:2
được chấp nhận nhưng 22/4
không được.
Ví dụ
n k i output
2 4 15 2.75 or 11/4
6 0 666 5.1101 or 557:109
50 89 64 63 or 63:1
3 2 1000 2.7453 or 733/267
9 12 345 9.4545 or 104/11
Đây là mã golf cho mỗi ngôn ngữ, vì vậy mã ngắn nhất trong mỗi ngôn ngữ là người chiến thắng.
/
hoặc :
chỉ thêm một sự phức tạp không cần thiết cho thử thách.