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ố ithứ trong dãy xác định có bao nhiêu 3s trước ith 2và theo sau bất kỳ 2s nào trước đó . Vì vậy, vì chuỗi bắt đầu bằng một 3chuỗi phải bắt đầu 3 3 3 2và vì có ba 3s ở đầu chuỗi nên chuỗi 3 3 3 2phải lặp lại ba lần. Sau đó bạn đạt được 3 3 2vì 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=4là 3/1 = 3và tại i=15đó 11/4 = 2.75.
Chúng ta hãy nói chung
Các số đã cho nvà kchúng ta có thể tạo một chuỗi tương tự bắt đầu bằng nvà giống như chuỗi ban đầu được mô tả số tại chỉ số ixác định có bao nhiêu ns hiển thị trước ith kvà theo sau bất kỳ ks 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 nvà kxác định một chuỗi như được mô tả ở trên và ilà 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ế ilà i ≥ n.
Với ba số đầu ra, tỷ lệ của ns với ks 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/837hoặ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/2và 11:2được chấp nhận nhưng 22/4khô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.