Вдохновленный этой записью Numberphile
Фон
Число расстояний куба целого числа n определяется здесь как набор целых чисел, которые находятся на расстоянии x³ для данного x . Для простого примера, с n=100
и x=2
, что номер куб расстояния является {92,108}
.
Это может быть расширено до большего набора, просто меняя x . При x ∈ {1,2,3,4}
том же n=100
и у нас получился результирующий набор {36,73,92,99,101,108,127,164}
.
Давайте определим CD (n, x) как множество всех целых чисел n ± z³
с z ∈ {1,2,3,...,x}
.
Теперь мы можем сосредоточиться на некоторых специальных свойствах этих чисел кубического расстояния . Из многих специальных свойств, которые могут иметь числа, два свойства, которые нас интересуют, это простота и простые делители .
Для приведенного выше примера CD (100,4) , обратите внимание, что 73, 101, 127
все простые. Если мы удалим их из набора, мы останемся с {36,92,99,108,164}
. Все простые делители этих чисел (по порядку) {2,2,3,3,2,2,23,3,3,11,2,2,3,3,3,2,2,41}
, что означает, что у нас есть 5 различных простых делителей {2,3,23,11,41}
. Таким образом , мы можем определить , что CD (100,4) имеет ravenity 1 из 5
.
Задача здесь состоит в том, чтобы написать функцию или программу с наименьшим количеством байтов, которая выводит последовательность данных.
вход
- Два натуральных числа
n
иx
в любом удобном формате.
Выход
- Одно целое число, описывающее ravenity двух входных чисел, при расчете с CD (n, x) .
правила
- Ввод / вывод может быть любым подходящим способом .
- Стандартные ограничения лазейки применяются.
- Для простоты расчета можно предположить, что входные данные будут такими, что CD (n, x) будет иметь только положительные числа в наборе (т. Е. Ни один CD (n, x) никогда не будет иметь отрицательные числа или ноль).
- Функция или программа должны иметь возможность обрабатывать входные числа, чтобы они
n + x³
соответствовали целочисленному типу данных вашего языка. Например, для 32-разрядного целого типа соn + x³ < 2147483648
знаком возможны все входные числа с .
Примеры
n,x - output
2,1 - 0 (since CD(2,1)={1,3}, distinct prime divisors={}, ravenity=0)
5,1 - 2
100,4 - 5
720,6 - 11
Сноски
1 - Так назван потому, что нас интересует не кардинальность сета, а другой тип птицы. Поскольку мы имеем дело с «общими» делителями, я решил использовать общий ворон .
100,4
5? Число расстояний куба этого набора равно36,164
, и главные факторы этого набора равны2,3,41
(так как факторы этого набора равны{2, 3, 4, 6, 9, 12, 18, 36}
и{2, 4, 41, 82, 164}
, соответственно). Поэтому на выходе должно быть 3, а не 5.100,4
- пример, который ОП объясняет в разделе «Фон». Ваша ошибка, кажется, заключается в том, что вы должны рассмотреть все1..x
, поэтому[1,2,3,4]
для этого случая.Ответы:
Желе, 16 байт
Принимает x и n в качестве аргументов командной строки, в этом порядке. Попробуйте онлайн!
Как это устроено
источник
Pyth -
211918 байтИнтересно, есть ли хитрость?
Тестовый пакет .
источник
Юлия, 107 байт
Это функция, которая принимает два целых числа и возвращает целое число.
Ungolfed:
источник
05AB1E ,
2019 байтовКод:
Входные данные в виде
x
,n
. Использует кодировку CP-1252 .Попробуйте онлайн!
источник
MATL , 21 байт
Ввод
x
,n
разделенный новой строкой.Попробуйте онлайн!
объяснение
источник
J, 30 байт
Это двоичный глагол, используемый следующим образом:
Попробуй это здесь.
объяснение
источник
@:+(
почему такой грустный, крутой парень?Python 3.5,
218198 байт:( Спасибо @Blue за то, что сэкономили мне 20 байт.)
Хорошая однорядная лямбда-функция, хотя она может быть немного длинной. Поскольку я использовал Python, мне пришлось придумать свой собственный способ поиска композитов для первого шага, а затем простых делителей для последнего шага, так что это было не очень легко, и это был самый короткий я, сам по себе , мог бы получить это. Тем не менее, он делает то, что ему нужно, и я горжусь этим. :) Тем не менее, любые советы для игры в гольф немного больше приветствуются.
источник
PARI / GP , 79 байт
Вот моя оригинальная прямая реализация. Оптимизированная версия выше объединяет два вектора в один, немного более сложный вектор.
источник
f
(нравитсяf=(n,x)->...
), то вы можете проверить это сf(100,4)
. Кроме того, вы можете вызвать его в одной строке с((n,x)->...)(100,4)
.Рубин, 138 байт
Это был маленький вызов. :-)
источник
Рубин,
132120114 байтовЯ хорошо знаю, что это решение все еще нуждается в большом количестве игры в гольф. Любые советы по игре в гольф приветствуются.
Ungolfing:
источник
Python 3,5 -
177175159 байтЛюбые советы по гольфу приветствуются :)
Ungolfed:
источник
Wolfram Language (Mathematica) , 90 байтов
Попробуйте онлайн!
не в гольф: код читается в основном справа налево,
источник