Название новейшего видео Numberphile , 13532385396179 , является фиксированной точкой следующей функции f на натуральных числах:
Пусть n будет положительным целым числом. Запишите простую факторизацию обычным способом, например, 60 = 2 2 · 3 · 5, в которой простые числа записаны в порядке возрастания, а показатели степени 1 опущены. Затем приведите экспоненты к строке и пропустите все знаки умножения, получив число f (n). [...] например, f (60) = f (2 2 · 3 · 5) = 2235.
(Вышеприведенное определение взято из Задачи 5 из пяти Задач на 1000 долларов - Джон Х. Конвей )
Обратите внимание, что f (13532385396179) = f (13 · 53 2 · 3853 · 96179) = 13532385396179.
задача
Возьмите положительное составное целое число n
как вход и выход f(n)
.
Другой пример
48 = 2 4 · 3, так что F (48) = 243.
Testcases
Больше тестов доступно здесь .
4 -> 22
6 -> 23
8 -> 23
48 -> 243
52 -> 2213
60 -> 2235
999 -> 3337
9999 -> 3211101
источник
Ответы:
Python,
166162159 байтВы, ребята, намного лучше. Это то, что я использовал! (алгоритм, который решил это называет это)
источник
Брахилог , 8 байт
Попробуйте онлайн!
объяснение
Вы можете использовать
ℕ₂ˢ
( выберите все целые числа, большие или равные 2 ) вместо;1x
, что, вероятно, более читабельно и больше в духе брахилога.источник
Желе , 6 байт
Попробуйте онлайн!
объяснение
источник
V
= "объединить в одну строку и оценить как желе"Ḍ
(Конвертировать из десятичного в целое)?FḌ
в прошлом - это хороший совет!Mathematica,
4336 байтПопробуйте онлайн!
источник
DeleteCases
долго, вы можете использовать/.1->""
или/.1->##&[]
(альтернативная форма/.1->Nothing
1
чтобы предотвратить его разбор как... / (0.1)
.CJam , 8 байт
Попробуйте онлайн!
объяснение
источник
e_
чтобы сгладить, потому что это то, что он там, но это не меняет счет.e_
использовать только для глубокого выравнивания и использовать:~
всякий раз, когда это только один уровень.05AB1E , 10 байтов
Попробуйте онлайн!
источник
05AB1E ,
1211 байтПопробуйте онлайн!
объяснение
источник
48
.Pyth, 12 байт
Попытайся!
альтернатива, 12 байт
Попробуй это!
объяснение
источник
Pyth, 11 байт
Попробуй здесь
источник
Python 2 , 99 байт
Попробуйте онлайн!
Если входные данные ограничены, чтобы быть ниже
2147483659
, обаstr(...)
могут быть заменены`...`
сохранением 6 байтов (эта программа будет очень медленной для чисел, затронутых в любом случае!).источник
Ом , 11 байт
Попробуйте онлайн!
объяснение
источник
Japt , 19 байт
Проверьте это онлайн!
объяснение
источник
PHP , 88 байт
Попробуйте онлайн!
источник
C #,
206100 байтПолная / Отформатированная версия:
источник
Javascript - 91 байт
объяснение
источник
Java 8, 103 символа
Довольно простое решение.
Ungolfed:
источник
Октава , 69 байт
Попробуйте онлайн!
Закончилось довольно долго, но это даст желаемый результат.
По сути, мы используем функцию гистограммы для подсчета количества вхождений уникальных значений в простую факторизацию входного значения.
factor()
функции дает основные факторы в порядке возрастанияunique()
значения в этом массивеhist()
возвращает количество вхожденийКогда у нас есть два массива (один для уникальных факторов, один для подсчета), мы объединяем массивы по вертикали (один поверх другого), а затем выравниваем. Это чередует факторы с количеством.
Наконец, мы отображаем результат в виде строки, гарантирующей пропуск любых 1 в окончательном массиве. Единственное время, которое может появиться 1, это если счет был 1, потому что 1 никогда не будет основным фактором. Это исключение выполняется перед преобразованием в строку, поэтому оно не повлияет на такие вещи, как число 10.
источник
Рубин , 45 + 7 байт
Требуется флаг
-rprime
.Попробуйте онлайн!
источник
Pyth - 16 байт
Попытайся
Другое решение:
источник
FN
наV
.r8
(длина кодирования) кажется полезным.R , 72 байта
Требуется
pracma
пакет, который не установлен на TIO.источник