задача
Существует набор чисел x
, такой, который x^2
делит 7^x-1
.
Ваша задача найти эти цифры. При вводе n код напечатает n-е число, следующее за этим правилом.
Примеры 1-индекс
In Out
3 3
9 24
31 1140
Соответствующая последовательность может быть найдена здесь .
правила
Кратчайший ответ будет победителем *
Применяются стандартные правила игры в гольф
Лазейки не допускаются
Ваш ответ может быть 0 или 1 проиндексирован, пожалуйста, укажите в своем ответе
n
? Я могу дать правильный результат сn=9
, ноn=10
уже вызывает у меня проблемы.n=10
дает мне 32; это потому, что он начинает использовать double вместо целых чисел, и после этого мод становится неправильным. :(Ответы:
Haskell, 34 байта
При этом используется индексирование на основе 0. Пример использования:
([x|x<-[1..],mod(7^x-1)(x^2)<1]!!) 30
->1140
.Это прямая реализация определения. Он строит список всех чисел
x
и выбирает ихn
.источник
Pyth , 10 байт
Программа, которая принимает ввод целого числа и печатает одноиндексное значение.
Попробуйте онлайн!
Как это устроено
источник
JavaScript (ES7), 40 байт
Это теряет точность довольно быстро из-за того, что JS теряет точность по
7**19
. Вот версия ES6 почти произвольной точности:Это заканчивается примерно за секунду для контрольного примера 31.
Несколько более длительных подходов:
источник
05AB1E , 11 байт
Попробуйте онлайн!
По какой-то причине я не могу попасть
½
на работуµ7Nm<NnÖ½N
или меня связывают с Пифом.,
источник
Ö
в моем списке исправлений в течение нескольких месяцев, но я никогда не удосужился разобраться с этим. В любом случае, вам не нужно ,N
какµ
автоматически выводит последние ,N
если стек пуст.Python 2 ,
4846 байтСпасибо @Dennis за -2 байта!
Одноиндексированная рекурсивная функция, которая принимает входные данные через аргумент и возвращает результат.
Попробуйте онлайн!(Предел рекурсии увеличен для запуска финального контрольного примера)
Как это устроено
n
желаемый индекс, иi
является переменной подсчета.Выражение
~-7**i%i**2<1
возвращаетTrue
(эквивалентно1
), еслиi^2
делит7^i - 1
, иFalse
(эквивалентно0
) в противном случае. Каждый раз, когда вызывается функция, результат выражения вычитается изn
, уменьшаясь приn
каждом обнаружении попадания;i
также увеличивается.Короткое замыкание
and
означает, что когдаn
есть0
,0
возвращается; это базовый случай. Как только это достигается, рекурсия останавливается, и текущее значениеi
возвращается исходным вызовом функции. Вместо того, чтобы явно использоватьi
это, это делается с использованием того факта, что для каждого вызова функции выполняется приращение-~
перед вызовом;0
i
время приращения даетi
, по мере необходимости.источник
(~-7**i%i**2<1)
сохраняет пару байтов.Python 2 ,
575351 байт-4 байта благодаря ETHproductions
-2 байта благодаря TuukkaX
Попробуйте онлайн!
последовательность 1-индексирована
источник
(7**i)
? Я удалил их, и это сработало для тех, которые я попробовал.**
имеет более высокий приоритет , чем~
и-
Python 2, 57 байт
Это занимает очень, очень много времени для больших значений. Он также использует много памяти, потому что он строит весь список дальше, чем необходимо. Результат индексируется нулем.
Попробуйте онлайн
источник
2**n+1
верхнего предела?2**50
. Я мог бы использовать9**n+9
, но это занимает гораздо больше времени. Я начал бегатьf(20)
некоторое время назад (с2**n+1
); это все еще не закончено.Mathematica, 43 байта
В настоящее время у меня есть три разных решения с таким количеством байтов:
источник
Divisible
.Cases[Range[#^3],x_/;x^2∣(7^x-1)][[#]]&
на основе эвристического аргумента, что n ^ 3 является верхней границей. Я обнаружил поистине изумительное доказательство этого, которое слишком узко для этого поля :)PARI / GP , 42 байта
Довольно просто. 1-индексированный, хотя это можно легко изменить.
или
источник
Python 3 , 45 байт
Верните True для входа 1 , что разрешено по умолчанию .
Попробуйте онлайн!
источник
R 35 байт
Это работает только для
n<=8
.Однако вот более длинная версия, которая работает
n<=25
на 50 байтов :источник
8
потому, что он стал длинным int?gmp
, который допускает произвольно большие целые числа. Тем не менее, я быстро исчерпал ОЗУ для вычисления чего-либо вышеn=25
.PHP,
4749 байтРаботает только для n <9 (
7**9
больше, чемPHP_INT_MAX
с 64 бит)62 байта с использованием целых чисел произвольной длины: (не проверено; PHP на моей машине не имеет bcmath)
Беги с
php -nr '<code>' <n>
.псевдокод
источник
Пайк, 10 байт
Попробуй это здесь!
источник
Clojure , 83 байта
Попробуйте онлайн!
Это создает бесконечный список Java BigIntegers начиная с 1 и фильтрует их по определению. Он использует индексирование с нуля для выбора n- го значения из отфильтрованного списка.
источник
Perl 5, 35 байт
Ну, этого не было, так что вот оно:
map{$_ if!((7**$_-1)%($_**2))}1..<>
источник
Powershell, слишком много байтов
Просто чтобы увидеть, возможно ли это и так ли это.
источник
Perl 6 ,
3534 байта0 индексированные.
Скинул один байт благодаря Брэду Гилберту.
источник
{grep(…)}
QBIC , 39 байт
Я не смог заставить его работать в QBasic 4.5, но, кажется, он работает нормально в QB64. По какой-то необъяснимой причине QBasic отказывается чисто делить 13 841 287 200 на 144, а вместо этого дает остаток -128. Затем он возвращает 16 как 7-й член этой последовательности вместо 12 ...
источник
Чудо , 28 байт
Zero-индексироваться. Использование:
Фильтрует из списка натуральных чисел с предикатом, который определяет,
x^2
делится ли на7^x-1
, а затем получает n-й элемент в этом списке.источник
Tcl , 73 байта
Попробуйте онлайн!
источник