Адаптировано из этой загадки FiveThirtyEight .
Фон
Изучите следующую бесконечную последовательность:
3 3 3 2 3 3 3 2 3 3 3 2 3 3 2 3 3 3 2 ...
Допустим, последовательность имеет 1 индекс. Число i
th в последовательности определяет, сколько 3
s существует до i
th 2
и после любых предыдущих 2
s. Таким образом, поскольку последовательность начинается с a, 3
последовательность должна начинаться, 3 3 3 2
и поскольку 3
в начале последовательности есть три s, подпоследовательность 3 3 3 2
должна повторяться три раза. После этого вы достигнете, 3 3 2
потому что четвертый номер в последовательности 2
.
Загадка FiveThirtyEight требует ограничения отношений троек и двоек (что я не буду здесь баловать), но вы также можете спросить, каково совокупное соотношение после индекса i
. Например, соотношение в i=4
это 3/1 = 3
и в i=15
это 11/4 = 2.75
.
Давай вообще
С учетом числа n
и k
мы можем сделать подобную последовательность , которая начинается с n
и так же , как исходная последовательность описана число в индексе i
определяет , сколько n
ей показать до i
го k
и после всех предыдущих k
с.
Примеры:
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
IS i ≥ n
.
С помощью трех чисел выведите отношение n
s к k
s в последовательности, включая число в индексе 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
Это код гольф для каждого языка, поэтому самый короткий код на каждом языке является победителем.
/
или :
просто добавляли ненужное усложнение к задаче.