Số 'n' Chữ số


11

Điều này không có mục đích thực tế nhưng nó có thể là niềm vui để chơi gôn.

Thử thách

Cho một số n ,

  1. Đếm số lượng của mỗi chữ số trong n và thêm 1 vào mỗi số
  2. Lấy thừa số nguyên tố của n
  3. Đếm số lượng của mỗi chữ số trong hệ số nguyên tố của n , không bao gồm các số nguyên tố trùng lặp
  4. Tạo một danh sách mới bằng cách nhân các yếu tố tương ứng của các danh sách từ bước 1 và 3
  5. Trả lại tổng của danh sách đó

Ví dụ: 121 có hai 1s và a 2, vì vậy bạn sẽ nhận được danh sách sau từ bước 1:

0 1 2 3 4 5 6 7 8 9
1 3 2 1 1 1 1 1 1 1

Hệ số nguyên tố của 121 là 11 2 , đưa ra danh sách sau cho bước 3:

0 1 2 3 4 5 6 7 8 9
0 2 0 0 0 0 0 0 0 0

Lưu ý cách chúng tôi không tính số mũ. Chúng nhân với nhau để có được:

0 1 2 3 4 5 6 7 8 9
0 6 0 0 0 0 0 0 0 0

Và tổng của danh sách này là 6.

Các trường hợp thử nghiệm

1 -> 0
2 -> 2
3 -> 2
4 -> 1
5 -> 2
10 -> 2
13 -> 4
121 -> 6

Ghi chú

  • Sơ hở tiêu chuẩn bị cấm.
  • Đầu vào và đầu ra có thể ở bất kỳ định dạng hợp lý.
  • Bạn nên để những cái (hoặc số không cho bước 3) trong danh sách cho các chữ số không xuất hiện trong số.
  • Đây là , vì vậy giải pháp ngắn nhất tính bằng byte sẽ thắng.

667 (= 23 * 29) có tạo ra hai 2, một 3 và một 9 ở bước 3 không?
Jonathan Allan

@Jonathan Allan Có.
RamenChef

2
@ wizzwizz4 232792560-> [2,1,4,2,1,2,2,2,1,2](bước 1); 2*2*2*2*3*3*5*7*14*17*19(bước 2); vì vậy [0,5,1,2,0,1,0,2,0,1](bước 3); sau đó [0,5,4,4,0,2,0,4,0,2](Bước 4); và do đó nên đầu ra 21.
Jonathan Allan

@Jonathan ALLan Thật tuyệt nếu tôi có thể đếm được. : - /
wizzwizz4

Câu trả lời:


2

Thạch , 16 byte

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

Hãy thử trực tuyến!

Được phát triển độc lập từ và không hoàn toàn giống như các giải pháp Jelly khác .

Giải trình

Tôi đang gồng mình để sử dụng 242làm ví dụ đầu vào.

ṾċЀØ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

Thạch ,  18  17 byte

-1 byte nhờ caird coinheringaahing & H.PWiz (tránh ghép hai vectơ)

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

Một liên kết đơn âm lấy một số nguyên dương và trả về một số nguyên không âm.

Hãy thử trực tuyến!

Làm sao?

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


Hoặc sử dụng sản phẩm chấm
H.PWiz

2

APL (Dyalog) , 43 41 byte

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

Hãy thử trực tuyến!

Làm sao?

r←⎕ - đặt vào r

3pco - thừa số nguyên tố

- độc nhất

⎕D,r- được chuẩn bị rtrước0-9

⍕¨ - định dạng các yếu tố và phạm vi được chuẩn bị trước

⎕D∘.= - so sánh cartesian với mọi phần tử của chuỗi 0123456789

+/¨ - tổng hợp từng hàng của hai bảng được hình thành

×/ - nhân hai vectơ còn lại

+/ - tổng các vectơ cuối cùng hình thành



1

Python 2 , 136 127 byte

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))]

Hãy thử trực tuyến!

Tín dụng

  • Giảm từ 136 byte xuống 127 bởi Mr. Xcoder


@ Mr.Xcoder Cập nhật, cảm ơn vì đã cho tôi thấy việc sử dụng -~tôi luôn có một chút bối rối về điều đó. Và tôi cần phải bắt đầu ghi nhớ <1điều đó. Cảm ơn đã giúp đỡ.
Neil

Bạn có thể xem qua điều này cho -~và những thứ liên quan.
Ông Xcoder
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.