Адаптировано из этой загадки 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
Это код гольф для каждого языка, поэтому самый короткий код на каждом языке является победителем.
/
или:
просто добавляли ненужное усложнение к задаче.Ответы:
Шелуха , 16 байт
Попробуйте онлайн!
Принимает входные данные в том же порядке, что и контрольные примеры. Выводит рациональное число. Я чувствую, что здесь слишком много надстрочных знаков, но я не знаю, как от них избавиться ...
объяснение
источник
Python 3 ,
94928987 байтПопробуйте онлайн!
кредиты
источник
.count(n)
?Желе , 22 байта
Попробуйте онлайн!
Полная программа. Принимает аргументы
n
,k
,i
.Есть ошибка, из-за которой это должно быть излишне длиннее на 1 байт.
источник
`
ее использование работает. Да, и ваш ответ отличается от того, что я забыл внедрить гольф, который нашел на другом языке> _>Желе ,
2516 байтов-9 байт ~ 50%, относящиеся к ответу Эрика Эголога на желе (1. быстрое использование ключа new-ish
ƙ
даже с ошибкой в интерпретаторе, которая в настоящее время стоит байт; 2. использование сопоставленного повторения, чтобы избежать подсчета и индексации в текущей последовательности .) Иди дай ему кредит!Полная программа принимает три аргумента:
n
,k
,i
который выводит результат.Попробуйте онлайн!
Как?
Пример запуска с входами
n=2
,k=3
,i=30
:источник
Mathematica, 85 байт
Попробуйте онлайн!
источник
APL (Dyalog Unicode) ,
12670 байтПопробуйте онлайн!
Что ж, спасибо @ Adám за удаление 56 байтов из этого ответа.
Это niladic Tradfn ( трады itional х unctio п ) с 1 входом, который является списком 3 элемента.
⎕PP←5
не добавляются к счетчику байт , так как он используется только для ограничения Р Ринт P recision до 5 цифр.∇f
и∇
не добавляются в счетчик байтов, потому что они не являются частью кода, а только разделителями для tradfn.Как это устроено:
источник
R , 88 байт
Попробуйте онлайн!
источник
for
тела цикла, так как есть только одно утверждение.Swift , 152 байта
Это будет короче чем Java?
объяснение
источник
Рубин ,
777170 байтПопробуйте онлайн!
Возвращает Rational, который работает как число и преобразуется в точную приведенную дробь.
источник
Pyth , 24 байта
Тестирование.
Фиксированная точка
[n]
под определенной функцией массива.источник
Зефир , 284 байта
Берет три числа из стандартного ввода в три отдельные строки. Выводит точное соотношение, такое как
104/11
или63
.Ungolfed
источник