Примери 'n' цифри


11

Це не має практичних цілей, але грати в гольф може бути цікаво.

Виклик

Враховуючи число n ,

  1. Підрахуйте суму кожної цифри в n і додайте 1 до кожного рахунку
  2. Візьмемо основну факторизацію n
  3. Підраховуйте кількість кожної цифри в основній факторизації n , не враховуючи повторюваних простих чисел
  4. Створіть новий список, множивши разом відповідні елементи списків із кроків 1 та 3
  5. Поверніть суму цього списку

Наприклад, у 121 є два 1s та 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) у списку для цифр, які не відображалися в номері.
  • Це , тому найкоротше рішення в байтах виграє.

Чи 667 (= 23 * 29) робить для двох 2, одну 3 та одну 9 на кроці 3?
Джонатан Аллан

@JonathanAllan Так.
RamenChef

2
@ wizzwizz4 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.
Джонатан Аллан

@JonathanAllan Було б добре, якби я міг порахувати. : - /
wizzwizz4

Відповіді:


2

Желе , 16 байт

ṾċЀØD
ÆfQÇ×Ç‘$S

Спробуйте в Інтернеті!

Розроблений незалежно від та не зовсім такий же, як у інших розчинів Jelly .

Пояснення

Я хочу використовувати 242як приклад.

ṾċЀØD     Helper link
Ṿ          Uneval. In this case, turns it's argument into a string. 
           242Ṿ → ['2','4','2']. [2,11] → ['2', ',', '1', '1']. The ',' won't end up doing anything.
    ØD     Digits: ['0','1',...,'9']
 ċЀ       Count the occurrence of €ach digit in the result of Ṿ

ÆfQÇ×Ç‘$S  Main link. Argument 242
Æf         Prime factors that multiply to 242 → [2,11,11]
  Q        Unique elements → [2,11]
   Ç       Apply helper link to this list → [0,2,1,0,0,0,0,0,0,0]
     Ç‘$   Apply helper link to 242 then add 1 to each element → [1,1,3,1,2,1,1,1,1,1]
    ×      Multiply the two lists element-wise → [0,2,3,0,0,0,0,0,0,0]
        S  Sum of the product → 5

4

Желе ,  18  17 байт

-1 байт завдяки спільноті coirdingaahing і H.PWiz (уникайте сполучення двох векторів)

DF‘ċЀ⁵
ÆfQÇæ.Ç‘$

Монадійне посилання, що приймає додатне ціле число і повертає невід'ємне ціле число.

Спробуйте в Інтернеті!

Як?

DF‘ċЀ⁵ - Link 1, digitalCount: number(s)    e.g. [13,17]
D       - to decimal list (vectorises)            [[1,3],[1,7]]
 F      - flatten                                 [1,3,1,7]
  ‘     - increment (vectorises)                  [2,4,2,8]
      ⁵ - literal ten                             10
    Ѐ  - map across              (implicit range [1,2,3,4,5,6,7,8,9,10])
   ċ    - count                                   [0,2,0,1,0,0,0,1,0,0]

ÆfQÇæ.Ç‘$ - Main link: positive integer, n   e.g. 11999
        $ - last two links as a monad:
      Ç   -   call the last link (1) as a monad   [0,2,0,0,0,0,0,0,0,3]
       ‘  -   increment (vectorises)              [1,3,1,1,1,1,1,1,1,4]
Æf        - prime factorisation                   [13,13,71]
  Q       - deduplicate                           [13,17]
   Ç      - call the last link (1) as a monad     [0,2,0,1,0,0,0,1,0,0]
    æ.    - dot product                           8


Або скористайтеся крапковим продуктом
H.PWiz

2

APL (Діалог) , 43 41 байт

CY'dfns'
+/×/+/¨⎕D∘.=⍕¨(⎕D,r)(∪3pco r←⎕)

Спробуйте в Інтернеті!

Як?

r←⎕ - введення в r

3pco - основні фактори

- унікальний

⎕D,r- rзаздалегідь с0-9

⍕¨ - форматувати коефіцієнти та заданий діапазон

⎕D∘.= - декартові порівняння з кожним елементом струни 0123456789

+/¨ - підсумовуйте кожен рядок з двох сформованих таблиць

×/ - помножте ліві два вектори

+/ - підсумовуємо останній утворений вектор



1

Python 2 , 136 127 байт

lambda a:sum(''.join(u(a)).count(`i`)*-~`a`.count(`i`)for i in range(10))
u=lambda a:[`j`for j in range(2,a)if a%j<1>len(u(j))]

Спробуйте в Інтернеті!

Кредити



@ Mr.Xcoder Оновлено, дякую, що показали мені, що -~я завжди трохи плутався з цього приводу. І мені потрібно почати згадувати <1річ. Дякую за допомогу.
Ніл

Ви подивіться через можете це для -~і пов'язаних з ними речі.
Містер Xcoder
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.