ตัวเลขเฉพาะของจำนวน


11

นี่มันไม่มีจุดประสงค์ในทางปฏิบัติ แต่มันสนุกกับการเล่นกอล์ฟ

ท้าทาย

ได้รับหมายเลขn ,

  1. นับจำนวนตัวเลขแต่ละหลักในnและเพิ่ม 1 เข้ากับการนับแต่ละครั้ง
  2. ใช้การแยกตัวประกอบเฉพาะของn
  3. นับจำนวนตัวเลขแต่ละหลักในการแยกตัวประกอบเฉพาะของnโดยไม่รวมถึงจำนวนเฉพาะซ้ำ
  4. สร้างรายการใหม่โดยการคูณองค์ประกอบที่เกี่ยวข้องของรายการจากขั้นตอนที่ 1 และ 3
  5. ส่งคืนผลรวมของรายการนั้น

ตัวอย่างเช่น 121 มีสองรายการ1และ 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) ทำสอง 2s หนึ่ง 3 และ 9 ในขั้นตอนที่ 3 หรือไม่
Jonathan Allan

@JanathanAllan ใช่
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

@JanathanAllan มันคงจะดีถ้าฉันนับได้ : - /
wizzwizz4

คำตอบ:


2

เยลลี่ขนาด 16 ไบต์

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

ลองออนไลน์!

การพัฒนาอย่างอิสระจากและไม่ตรงเช่นเดียวกับการแก้ปัญหาวุ้นอื่น

คำอธิบาย

ฉันฆ้องเพื่อใช้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 ไบต์ขอบคุณcaird coinheringaahing & H.PWiz (หลีกเลี่ยงการจับคู่สองเวกเตอร์)

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

ลิงก์ monadic ที่ใช้จำนวนเต็มบวกและส่งคืนจำนวนเต็มที่ไม่ใช่ค่าลบ

ลองออนไลน์!

อย่างไร?

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


หรือใช้ผลิตภัณฑ์ dot
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

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

ลองออนไลน์!

เครดิต

  • ลดลงจาก 136 ไบต์เป็น 127 โดยMr. Xcoder


@ Mr.Xcoder อัปเดตขอบคุณที่แสดงให้ฉันเห็นว่าการใช้งานของ-~ฉันค่อนข้างสับสนอยู่ตลอดเวลา และฉันต้องเริ่มจดจำ<1สิ่งต่าง ๆ ขอบคุณสำหรับความช่วยเหลือ
Neil

คุณสามารถดูผ่านสิ่งนี้สำหรับ-~และสิ่งที่เกี่ยวข้อง
Mr. Xcoder
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.