소수 자릿수


11

이것은 실제적인 목적은 없지만 골프를 즐기는 것은 재미있을 수 있습니다.

도전

숫자 감안할 때 N ,

  1. 각 숫자의 양을 n으로 세고 각 숫자에 1을 더하십시오.
  2. n을 소인수 분해합니다
  3. 중복 소수를 포함하지 않고 n의 소인수 분해에서 각 숫자의 양을 계산합니다.
  4. 1 단계와 3 단계에서 목록의 각 요소를 곱하여 새 목록을 작성하십시오.
  5. 해당 목록의 합계를 반환

예를 들어, 121에는 1s와 a 가 2 개 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

메모

  • 표준 허점 은 금지되어 있습니다.
  • 입력 및 출력은 임의의 합리적인 형식 일 수 있습니다.
  • 숫자에 표시되지 않은 숫자는 목록에 1 (또는 3 단계의 경우 0)을 남겨 두어야합니다.
  • 이것은 이므로 바이트 단위의 최단 솔루션이 이깁니다.

667 (= 23 * 29)은 3 단계에서 2 개, 1 개 3 개 및 9 개를 만듭니다.
Jonathan Allan

@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.
Jonathan Allan

@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 바이트

caird coinheringaahing & H.PWiz 덕분에 -1 바이트 (두 벡터를 페어링하지 마십시오)

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 (Dyalog) , 43 41 바이트

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

온라인으로 사용해보십시오!

어떻게?

r←⎕ -입력 r

3pco -주요 요인

- 독특한

⎕D,r- r접두사0-9

⍕¨ -요인과 선행 범위의 형식을 지정합니다

⎕D∘.= -문자열의 모든 요소와 직교 비교 0123456789

+/¨ -형성된 두 테이블의 각 행을 합산

×/ -남은 두 벡터를 곱하십시오

+/ -마지막으로 형성된 벡터를 합산



1

파이썬 2 , 136127 바이트

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일을 기억하기 시작해야합니다 . 도와 주셔서 감사합니다.
Neil

-~ 내용과 관련 내용 을 살펴볼 수 있습니다 .
Mr. Xcoder
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.