이것은 실제적인 목적은 없지만 골프를 즐기는 것은 재미있을 수 있습니다.
도전
숫자 감안할 때 N ,
- 각 숫자의 양을 n으로 세고 각 숫자에 1을 더하십시오.
- n을 소인수 분해합니다
- 중복 소수를 포함하지 않고 n의 소인수 분해에서 각 숫자의 양을 계산합니다.
- 1 단계와 3 단계에서 목록의 각 요소를 곱하여 새 목록을 작성하십시오.
- 해당 목록의 합계를 반환
예를 들어, 121에는 1
s와 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
메모
답변
젤리 , 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
답변
젤리 , 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
답변
APL (Dyalog) , 43 41 바이트
⎕CY'dfns'
+/×/+/¨⎕D∘.=⍕¨(⎕D,r)(∪3pco r←⎕)
어떻게?
r←⎕
-입력 r
3pco
-주요 요인
∪
– 독특한
⎕D,r
– r
접두사0-9
⍕¨
-요인과 선행 범위의 형식을 지정합니다
⎕D∘.=
-문자열의 모든 요소와 직교 비교 0123456789
+/¨
-형성된 두 테이블의 각 행을 합산
×/
-남은 두 벡터를 곱하십시오
+/
-마지막으로 형성된 벡터를 합산
답변
답변
파이썬 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에 의해 136 바이트에서 127로 줄었습니다.