Это не имеет практической цели, но это может быть весело для гольфа.
Вызов
Учитывая число n ,
- Подсчитайте количество каждой цифры в n и добавьте 1 к каждому счету
- Возьмем простую факторизацию n
- Подсчитайте количество каждой цифры в простой факторизации n , не включая повторяющиеся простые числа
- Создайте новый список, умножив вместе соответствующие элементы списков из шагов 1 и 3
- Вернуть сумму этого списка
Например, 121 имеет два 1
s и a 2
, поэтому вы получите следующий список из шага 1:
0 1 2 3 4 5 6 7 8 9
1 3 2 1 1 1 1 1 1 1
Первичная факторизация 121 равна 11 2 , что дает следующий список для шага 3:
0 1 2 3 4 5 6 7 8 9
0 2 0 0 0 0 0 0 0 0
Обратите внимание, как мы не посчитали показатель. Они умножаются вместе, чтобы получить:
0 1 2 3 4 5 6 7 8 9
0 6 0 0 0 0 0 0 0 0
И сумма этого списка составляет 6.
Контрольные примеры
1 -> 0
2 -> 2
3 -> 2
4 -> 1
5 -> 2
10 -> 2
13 -> 4
121 -> 6
Заметки
- Стандартные лазейки запрещены.
- Ввод и вывод могут быть в любом разумном формате.
- Вы должны оставить единицы (или нули для шага 3) в списке для цифр, которые не появились в числе.
- Это код-гольф , поэтому выигрывает самое короткое решение в байтах.
232792560
->[2,1,4,2,1,2,2,2,1,2]
(шаг 1);2*2*2*2*3*3*5*7*14*17*19
(шаг 2); так[0,5,1,2,0,1,0,2,0,1]
(шаг 3); затем[0,5,4,4,0,2,0,4,0,2]
(шаг 4); и, следовательно, должен выводить21
.Ответы:
Желе , 16 байт
Попробуйте онлайн!
Разрабатывается независимо от других желейных растворов и отличается от них .
объяснение
Я собираюсь использовать
242
в качестве примера ввода.источник
Желе ,
1817 байт-1 байт благодаря caird coinheringaahing & H.PWiz (избегайте спаривания двух векторов)
Монадическая ссылка, принимающая положительное целое число и возвращающая неотрицательное целое число.
Попробуйте онлайн!
Как?
источник
APL (Dyalog) ,
4341 байтПопробуйте онлайн!
Как?
r←⎕
- вход вr
3pco
- главные факторы∪
- уникальный⎕D,r
-r
с добавлением0-9
⍕¨
- отформатировать коэффициенты и предварительно выбранный диапазон⎕D∘.=
- декартово сравнение с каждым элементом строки0123456789
+/¨
- суммировать каждую строку двух сформированных таблиц×/
- умножить два вектора слева+/
- сумма последнего вектора, сформированногоисточник
Пип , 44 байта
Принимает данные из аргумента командной строки. Попробуйте онлайн!
источник
Python 2 ,
136127 байтПопробуйте онлайн!
кредиты
источник
-~
я всегда был немного смущен этим. И мне нужно начать вспоминать эту<1
вещь. Спасибо за помощь.-~
и связанные вещи.