Адаптовано з цієї загадки FiveThirtyEight .
Фон
Вивчіть таку нескінченну послідовність:
3 3 3 2 3 3 3 2 3 3 3 2 3 3 2 3 3 3 2 ...
Скажімо, послідовність є 1-індексованою. iЕ число в послідовності визначає , скільки 3років існує до iго 2і після всіх попередніх 2с. Отже, оскільки послідовність починається з 3послідовності, повинна починатися, 3 3 3 2а оскільки 3на початку послідовності є три s, то послідовність 3 3 3 2повинна повторюватися три рази. Після цього ви досягнете, 3 3 2тому що четверте число в послідовності є 2.
Загадка FiveThirtyEight просить обмежити співвідношення трійки до двох (що я тут не зіпсую), але ви також можете запитати, яке кумулятивне відношення після індексу i. Наприклад, співвідношення at i=4є 3/1 = 3і i=15є 11/4 = 2.75.
Давайте загалом
За даними числами, nі kми можемо скласти подібну послідовність, яка починається з nі точно так само, як описана в початковій послідовності цифра в індексі iвизначає, скільки ns з'явиться перед ith kі після будь-яких попередніх ks.
Приклади:
n=2, k=5 дає послідовність 2 2 5 2 2 5 2 2 2 2 2 5 2 2 5 ...
n=3, k=0 дає 3 3 3 0 3 3 3 0 3 3 3 0 0 3 3 3 0 ...
n=1, k=3 дає 1 3 1 1 1 3 1 3 1 3 1 3 1 1 1 3 1 ...
Змагання
Напишіть функцію / програму і з нею виконайте наступне. Візьміть як вхід:
- додатне ціле число
n - невід’ємне ціле число
k ≠ n - додатне ціле число
i > n
Перші два входи nі kвизначають послідовність, як описано вище, і iє індексом. Я використовую 1-індексацію в прикладах, але ви маєте свободу використовувати 0- або 1-індексацію. Якщо 0-індексовано, тоді обмеження iє i ≥ n.
За допомогою трьох чисел виведіть відношення ns до ks у послідовності до та включення числа в індексі i. Формат виводу може бути або десятковою величиною з принаймні 5 цифрами точності, або точним значенням як співвідношення як 3524/837або 3524:837.
У десятковій формі останню цифру можна округлити, як завгодно. Дозволені нулі та пробіли.
В будь-якій з рядкових форм два числа потрібно нормалізувати, щоб вони були одночасними. Наприклад, якщо коефіцієнт був 22/4, 11/2і 11:2прийнятний, але 22/4не є.
Приклади
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
Це код гольфу на кожній мові, тому найкоротший код у кожній мові є переможцем.
/або :просто додавати зайве ускладнення виклику.