Первые два MU-числа - это 2 и 3. Любое другое MU-число - это наименьшее число, которое еще не появилось, и которое может быть выражено как произведение двух ранее различных MU-номеров точно одним способом.
Вот первые 10
2, 3, 6, 12, 18, 24, 48, 54, 96, 162
задача
При заданном положительном числе рассчитать и вывести n- ное MU-число.
Это соревнование по коду-гольфу, поэтому вы должны стремиться к тому, чтобы ваш исходный код был как можно меньше.
Ответы:
Pyth,
2221 байтПопробуйте онлайн. Тестирование.
0 индексированные.
объяснение
источник
@
Знак на последней строке смещена. Я не могу сделать предлагаемое редактирование, так как это двухзначное изменение.Haskell,
8077 байтовПопробуйте онлайн!
Как это устроено
источник
Желе , 22 байта
Монадическая ссылка, 1-индексированная.
Попробуйте онлайн!
Как?
источник
R ,
1271181111081051009890 байтов8 байтов благодаря Джузеппе.
Попробуйте онлайн!
источник
<
имеет более низкий приоритет, чем+
я, поэтому я не мог понять, что, черт возьми,+g%in%r<3
делал, и пока я делал это, вы играли в гольф две части, которые я собирался предложить ... +1n=scan()
вместо определения функции для чтения из stdin; это0
CJam (32 байта)
Онлайн демо с 0-индексацией.
Я не уверен, что можно сделать что-то еще, кроме тривиального перевода спецификации, с одним исключением: начиная со списка
[0 1 2 3]
(вместо[2, 3]
), я сразу же сохраняю один байт при инициализации и еще два, когда могу сделать0=|
(добавляя только новый элемент, потому что его частота есть1
и уже есть в списке), но не вводите никаких ложных элементов, потому что для каждогоx
в списке0*x
и1*x
уже есть в списке.источник
Python 2 ,
127118 байтПопробуйте онлайн!
источник
Mathematica, 154 байта
простая модификация кода, найденная по ссылке oeis
источник
PHP , 130 байт
0 индексированные
Попробуйте онлайн!
расширенный
PHP , 159 байт
0 индексированные
Попробуйте онлайн!
PHP , 161 байт
0 индексированные
Попробуйте онлайн!
источник
Mathematica, 140 байт
источник
MATL , 25 байт
Попробуйте онлайн!
объяснение
источник
Perl 6 , 96 байт
Попробуйте онлайн!
2, 3, { ... } ... *
является бесконечной последовательностью, где каждый элемент, начинающийся с третьего, вычисляется с помощью блока кода с разделителями-скобками. Поскольку блок кода принимает свои аргументы через@_
массив slurpy , он получает всю текущую последовательность в этом массиве.@_.combinations(2)
является последовательностью всех 2-элементных комбинаций@_
..classify({ [*] $_ })
классифицирует каждый 2-кортеж по его продукту, создавая хеш, где продукты - это ключи, а значения - список 2-кортежей, имеющих этот продукт..grep(*.value == 1)
выбирает эти пары ключ-значение из хэша, где значение (т. е. список пар, имеющих этот ключ в качестве продукта) имеет размер 1.».key
выбирает только ключи каждой пары. Это список продуктов, которые возникают только из одной комбинации факторов текущей последовательности..sort
сортирует продукты численно.first * ∉ @_, ...
находит первый из тех товаров, которые еще не появились в последовательности.источник
JavaScript (ES6),
119118117 байтРекурсивная функция, которая принимает индекс на основе 0.
Как?
На каждой итерации функции f () мы используем последний член m последовательности и первоначально пустой массив b для идентификации следующего члена. Для каждого произведения d> m из двух ранее различных MU-чисел мы делаем:
а затем сохранить минимальное значение б .
Вышеупомянутое выражение оценивается следующим образом:
Это гарантирует, что продукты, которые можно выразить более чем одним способом, никогда не будут выбраны.
Отформатировано и прокомментировано
демонстрация
Показать фрагмент кода
источник
Haskell ,
117115113 байтовПопробуйте онлайн!
источник
n x=(*)<$>x<*>1:x
Python
32 ,167139136133123121120118 байтПопробуйте онлайн!
Спасибо @ Mr.Xcoder и @LeakyNun за улучшения!
источник
p.count(q)==1
наp.count(q)>0
допустимо, потому что это код, который обеспечивает «точно одно условие» задачи.p.count(q)-~(q in a)<=3
эквивалентноp.count(q)+(q in a)<3