Prime Up รหัสของคุณ


37

อินพุต

ไม่มีการป้อนข้อมูลสำหรับความท้าทายนี้

ความท้าทาย

เขียนรหัสที่แสดงผล:
หมายเลขเฉพาะ 10 หมายเลขแรกที่ผลรวมของตัวเลขเท่ากับจำนวนไบต์ของรหัสของคุณ

ตัวอย่าง

สมมติว่ารหัสของคุณCo&%423@k"oo"ซึ่งเป็น13 bytes
ผลผลิตของคุณต้องรหัส[67, 139, 157, 193, 229, 283, 337, 373, 409, 463]
เหล่านี้จะเป็นครั้งแรก 10 ตัวเลขที่สำคัญที่มีผลรวม .... ตกลงคุณได้รับมัน!

หากรหัสของคุณคือ8 bytesคุณจะต้องออก[17, 53, 71, 107, 233, 251, 431, 503, 521, 701]

กฎระเบียบ

คุณต้องใช้เฉพาะหมายเลขเฉพาะ 10 ^ 8
ซึ่งหมายความว่าหมายเลขทั้งหมดของคุณจะต้องเป็น <2038074743 = 10 ^ ที่ 8 หลัก

หากคุณไม่พบจำนวนเฉพาะ 10 หมายเลขในช่วงนี้ที่พอดีกับไบต์ของคุณคุณจะต้องปรับรหัสของคุณ (คุณอาจต้องเพิ่มบางไบต์!) เพื่อหา " จำนวนการทำงานของไบต์ "

เพียงแสดง 10 ช่วงเวลาในแบบที่คุณต้องการ

นี่คือดังนั้นโค้ดที่สั้นที่สุดเป็นไบต์จะชนะ!


1
ไม่สามารถแก้ไขความคิดเห็นดังนั้นฉันแค่ลบและโพสต์ใหม่: นี่คือส่วนสำคัญที่มีช่วงเวลาที่คุณต้องการแสดงผลตามจำนวนเงินที่กำหนดและดัชนีของพวกเขา: ลิงก์เนื่องจากฉันทำไม่ได้เลยฉันตรวจสอบยอดรวม เป็น 10 ^ 7 ครั้งแรก เช่นเดียวกับบางคำตอบที่กล่าวมามีค่าที่หายไปซึ่งมีความสัมพันธ์กับผลบวกดิจิตอลที่ไม่น่าเชื่อถึงแม้ว่าสำหรับผลรวมที่มากขึ้นนี่อาจไม่ใช่กรณี (จำไว้ว่าฉันตรวจสอบเฉพาะช่วง 10 ^ 7 ครั้งแรก)
โคล

"ในแบบที่คุณชอบ" : จำเป็นต้องสั่งจ่ายเฉพาะช่วงเวลาหรือไม่?
Arnauld

@Arnauld ไม่ แต่พวกเขาจะต้องเป็น 10 ที่เล็กกว่าในการสั่งซื้อใด ๆ

1
@KevinCruijssen ถึงแม้ว่าคำตอบของคุณจะไม่ถูกต้อง แต่คุณสามารถโพสต์เพื่อที่จะได้พูดคุยกับสมาชิกคนอื่น ๆ เพื่อช่วยให้คุณค้นพบสิ่งที่ดีกว่า

1
@TessellatingHeckler ฉันยังคิดว่าการตัด 10 ^ 8 นั้นค่อนข้างเป็นการกำหนดเอง ในการตรวจสอบว่าหมายเลขสิบที่ให้มาทั้งหมดนั้นมีผลรวมหลัก 350 และทั้งหมดเป็นช่วงเวลาที่ควรจะเร็ว อย่างไรก็ตามในการตรวจสอบว่าผู้ที่สิบในความเป็นจริงที่เป็นไปได้น้อยที่สุดอาจจะยากที่ผมคิดว่า
Jeppe Stig Nielsen

คำตอบ:


15

Neim , 10 8 7 ไบต์

-1 ไบต์ต้องขอบคุณ ASCII-only

πᛦ𝐋Λ𝐬7𝔼

ลองออนไลน์!

ขาออก:

[7 43 61 151 223 241 313 331 421 601]

(อย่างน้อยก็วิธีการนี้) ไม่น่ารังเกียจ

คำอธิบาย

πᛦ𝐋Λ𝐬7𝔼

π        push 13 (yes, very unintuitive :P)
 ᛦ       square (13² = 169)
  𝐋      push the first 169 primes
   Λ     filter those that when the following are executed, evaluate to 1
    𝐬    sum its digits and...
     7𝔼  check for equality against 7

2
ดีที่สุดจนถึงตอนนี้ .. !!!

νᛦ𝐋Λ𝐬7𝔼สำหรับ 7 ... แก้ไข: π-> ν: p
Jonathan Allan

@JonathanAllan ดูเหมือนว่าคุณจะเป็นนินจาเท่านั้นโดย ASCII เท่านั้น ;)
ทั้งหมด

ว้าวมีคำแนะนำจริงๆที่จะผลักดันช่วงเวลาแห่งแรกหรือไม่? เรียบร้อย!
isaac9A

9

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

‘ÆNDS=14ø⁵#‘ÆN

ลองออนไลน์!

ภาพพิมพ์นี้:

[59, 149, 167, 239, 257, 293, 347, 383, 419, 491]

มันทำงานอย่างไร

‘ÆNDS=14ø⁵#‘ÆN
          #     Count the first 
         ⁵        10
                Non-negative integers which meet:
‘ÆN               the (z+1)-th prime  (1-indexed :*()
   D              digits
    S             sum
     =            equals
      14          14
           ‘ÆN  Get those primes

8
รับช่วงเวลาเหล่านั้น!
undergroundmonorail

6

Pyth , 14 ไบต์

.f&qsjZT14P_ZT

ลองที่นี่

นี่คือ 14 ไบต์และพิมพ์:

[59, 149, 167, 239, 257, 293, 347, 383, 419, 491]

Pyth , 16 ไบต์

.f&qssM`Z16P_ZTZ

ลองที่นี่!

โปรดทราบว่านี่อาจเป็น 15 ไบต์: .f&qssM`Z16P_ZTZแต่ไม่มีช่วงเวลาใดที่มี 15 เป็นผลรวมของตัวเลขของพวกเขาเนื่องจาก15สามารถหารด้วย3ซึ่งจะหมายความถึงจำนวนก็จะหารด้วย3ดังนั้นจึงไม่ได้เป็นนายก

นี่คือความยาว 16 ไบต์และพิมพ์:

[79, 97, 277, 349, 367, 439, 457, 547, 619, 673]

อย่างไร?

คำอธิบาย 1

.f&qsjZT16P_ZT - Full program.

.f&           T  - First 10 numbers that satisfy the following:

           P_Z     - Are prime and
    sjZT           - And their sum of digits
   q     14        - Equals 14.

คำอธิบาย 2

.f&qssM`Z16P_ZTZ - Full program.

.f&           T  - First 10 numbers that satisfy the following:

           P_Z     - Are prime and
    ssM`Z          - And their sum of digits
   q     16        - Equals 16.

1
ทำได้ดี! และรวดเร็ว!

“ จำนวนเต็มจำนวนน้อยมากที่มี 15 เป็นผลรวมของตัวเลขของพวกเขา” - แน่นอนเพราะผลรวมตัวเลขที่หารด้วย 3 หมายถึงการหารหารด้วย 3 :)
ลินน์

@Lynn โอ้แน่นอน> _> - ฉันเป็นคนโง่ขอโทษ คงที่
Mr. Xcoder

6

Husk , 13 ไบต์

↑10fȯ=13ΣdfṗN

ลองออนไลน์!

คำอธิบาย

            N    Take the (infinite) list of all natural numbers.
          fṗ     Select only the primes.
   fȯ            Filter again by the result of composing the following three functions:
         d         Get the decimal digits.
        Σ          Sum them.
     =13           Check whether the sum equals 13.
↑10              Take the first 10 primes in the result.

เกือบตีกอล์ฟถึง 10 ไบต์ แต่ผลลัพธ์อย่างใดอย่างหนึ่งผิด :( tio.run/##yygtzv7//1HbREODtPxDyywftU04sqHg/38A
Leo

@Leo Heh จะเรียบร้อยมากถ้าที่ทำงาน :)
มาร์ตินเอนเดอร์

6

Haskell , 77 71 ไบต์

x=take 10[i|i<-[1..],sum(read.pure<$>show i)==71,all((>0).rem i)[2..i-1]]

ลองออนไลน์!

บันทึก 6 ไบต์ขอบคุณ Laikoni

สำหรับ 71 ไบต์:

[89999999,99899999,99998999,99999989,189989999,189998999,189999989,197999999,199898999,199979999]

หมายเลขทั้งหมดของคุณต้องเป็น <2038074743

1999999999 เป็นตัวเลขที่มีผลรวมสูงสุดของตัวเลขในช่วงที่อนุญาตและผลรวมนั้นคือ 82 โปรแกรมใดก็ตามที่เกิน 82 ไบต์จะไม่เป็นไปตามเงื่อนไข ฉันหวังว่า 77 ไบต์ใช้ได้ แต่ฉันไม่รู้ (มันยังทำงานอยู่ในคอมพิวเตอร์ของฉัน)

แก้ไข:รุ่นที่ได้รับการปรับปรุงเล็กน้อยให้ 77 ไบต์:

[699899999,779999999,788999999,789999989,797999999,798899999,799898999,799899899,799999799,879999899]



5

05AB1E , 10 ไบต์

83LØʒSOTQ}

ลองออนไลน์!

}ถูกนำมาใช้เป็นสารตัวเติมตั้งแต่ 9 นับไบต์ที่ไม่ถูกต้อง

เอาท์พุท: [19, 37, 73, 109, 127, 163, 181, 271, 307, 433]

คำอธิบาย

83L        Push array [1, ..., 83], since 433 is the 83rd prime
   Ø       Map each to the nth prime
    ʒ      Get elements that return 1
     SO     When the sum of the digits
        Q   Equals
       T    10

เกือบ 8 ไบต์

สิ่งนี้จะถูกต้องหากมีอีกหนึ่งไบต์ที่สามารถตีกอล์ฟได้

žyLØʒSO8Q

ลองออนไลน์!

เอาท์พุท: [17, 53, 71, 107, 233, 251, 431, 503, 521, 701]

คำอธิบาย

žy          Push number 128, since 701 is the 125th prime
  L         Push array [1, ..., 128]
   ØʒSO8Q   Map to nth primes and filter to those with a digit sum of 8 (see above)

3

Mathematica, 52 ไบต์

Select[Prime@Range[10^6],Tr@IntegerDigits@#==52&,10]

{799999,998989,999979,1789999,1798999,1979899,1989979,1997899,1999969,2599999}

thanx ถึง @ ไม่ต้นไม้สำหรับ -6 ไบต์


1
คุณสามารถบอกได้Selectว่าคุณต้องการกลับมากี่สิ่ง:Select[Prime@Range[10^6],Tr@IntegerDigits@#==52&,10]
ไม่ใช่ต้นไม้

1
Select[Prime@Range[77705],Tr@IntegerDigits@#==50&]
ลินน์

2

J, 29 ไบต์

(#~(29=[:+/"."0@":)"0)p:i.872

ลองออนไลน์!

ใช้งานกับ REPL ได้อย่างแน่นอนอาจทำงานเป็นโปรแกรมปกติด้วย (ไม่แน่ใจว่า J จะแสดงผลอย่างไรเพื่อให้โปรแกรมซื่อสัตย์

บัตรผ่านแรกไม่เหมาะอย่างยิ่ง แต่ฉันไม่สามารถนึกถึงวิธีที่ฉลาดกว่านี้ได้อีก จะตรวจสอบฮาร์ดโค้ดที่มีขนาดเล็กลง

คำอธิบาย

(#~(29=[:+/"."0@":)"0)p:i.872
                      p:i.872  First 872 primes
 #~                            Filter by
   (29=[:+/"."0@":)"0            Digital sum = 29
                   "0              For each
                ":                 Convert to string
           "."0                    Convert each character to a number
         +/                        Sum results
    29=                            Equate to 29

872 รับประกันว่าเฉพาะ 10 ช่วงแรกเท่านั้นที่จะใช้ผลรวมดิจิตอลเป็น 29


2

V , 73 71 ไบต์

i8aa9
998a99
a98a
aa89
18998a9
18a8a
18a9989
197aa
199898a
1a7a9Ía/999

ลองออนไลน์!

การบีบอัดการแทนที่ substring แบบง่าย - ฉันตรวจสอบผลลัพธ์คำตอบที่เป็นไปได้ทั้งหมดจากนั้นทำการทดสอบ "แบบที่หนึ่งมีการแทนที่สตริงแบบง่ายที่บันทึกอักขระส่วนใหญ่" เช่นสร้างตารางนี้ [แก้ไข: ฉันดูอีกครั้งที่โต๊ะและเห็นว่าฉันสามารถทำรุ่น 71 ไบต์แทน]

ช่วงเวลาที่สูงกว่านั้นมีระยะเวลานานกว่า 9 ในนั้นและสิ่งที่ดีที่สุดที่ฉันพบคือที่ตัวเลขเพิ่มขึ้นถึง 73 รูปแบบ 89999 -> 1 ถ่านนำข้อความลงมาจาก 99 ไบต์ถึง 63 ไบต์ การหาวิธีเลิก 'a' -> '89999' ใน 10 ไบต์ที่เหลือทำให้ฉันไปที่ V.


1

Japt , 19 ไบต์

L²õ f_j ©Zìx ¥19ïA

ทดสอบมัน


Explantaion

L²õ

สร้างอาร์เรย์ของจำนวนเต็ม ( õ) จาก 1 ถึง 100 ( L) ยกกำลังสอง

f_          Ã

ตัวกรอง ( f) โดยการส่งผ่านแต่ละฟังก์ชั่นโดยที่Zองค์ประกอบปัจจุบันเป็น

j

ตรวจสอบว่าZเป็นนายก

©

ตรรกะ AND ( &&)

Zìx

แยกZไปยังอาร์เรย์ของตัวเลข ( ì) และลดตามการเพิ่ม ( x)

¥19

19ตรวจสอบเพื่อความเท่าเทียมกันด้วย

¯A

Slice ( ¯) ไปยังองค์ประกอบที่ 10 และส่งออกอาร์เรย์ผลลัพธ์โดยปริยาย


1

Japt , 19 ไบต์

AÆ_j ©19¥Zì x «X´}a

ลองออนไลน์! ด้วย-Qธงเพื่อจัดรูปแบบอาร์เรย์

แสดงผล 10 ช่วงแรกที่มีตัวเลขที่เพิ่ม19:

[199, 379, 397, 487, 577, 739, 757, 829, 883, 919]

โปรดทราบว่าสิ่งนี้สามารถเล่นกอล์ฟได้ถึง 18 ไบต์ ( ì xìx) แต่ไม่มีช่วงเวลาที่มีผลรวมหลักเท่ากับ 18

คำอธิบาย

แม็พอาร์เรย์[0, ..., 9]ด้วยฟังก์ชันต่อไปนี้โดยที่Xเป็นค่าปัจจุบัน

  _              }a

ส่งคืนเลขจำนวนเต็มแรกที่คืนค่าจริงจากฟังก์ชันต่อไปนี้โดยที่Zเป็นค่าปัจจุบัน

   j ©

ตรวจสอบว่าหมายเลขนี้เป็นจำนวนเฉพาะและ ...

      19¥Zì x

ผลรวม ( x) ของตัวเลข ( ì) เป็นZเท่ากับ ( ¥) 19

              «X´

และXเป็นเท็จ ( «คือ "และไม่" หรือ&&!) สิ่งนี้ยังลดลงX( ´)

อาร์เรย์ผลลัพธ์จะถูกเอาต์พุตโดยปริยาย


ดี; เราเชื่อมโยงกับวิธีการต่าง ๆ
ปุย

1

PARI / GP 40 ไบต์

select(x->sumdigits(x)==40,primes(8600))

มีสนามกอล์ฟไม่มากนัก (เลือกผู้ที่xมีผลรวมของตัวเลข 40 ระหว่าง 8600 ครั้งแรก) ผลลัพธ์คือ:

[49999, 68899, 69997, 77899, 78889, 78979, 79699, 79987, 85999, 88789]


1

Ruby 2.4.1, 74 ไบต์

ฉันไม่เคยเอาชนะภาษาที่ดีที่สุด Codegolf แต่ก็ยังสนุกที่จะทำใน Ruby น่าผิดหวังว่า Prime ไม่ได้อยู่ใน Core แต่แทนที่จะเป็นในไลบรารีมาตรฐาน ฉันรู้สึกหงุดหงิดที่ฉันไม่สามารถเอาชนะ Haskell ได้

2.4.1 :014 > require'prime';2.step.lazy.select{|n|n.digits.sum==74&&n.prime?}.first(10)
=> [389999999, 398999999, 498989999, 498998999, 499898999, 499899989, 499979999, 499989989, 579989999, 588999899]

0

Paradoc (v0.2.7 +), 10 ไบต์ (CP-1252)

5h¶fφTBŠT=

ลองออนไลน์!

5h         .. 5 hundred
  ¶        .. Check if a number is prime...
   f       .. ...filter by the preceding block; converts 500
           .. to the range [0, 1, ..., 499]
    φ      .. Filter by the following block:
     T     .. Ten
      B    .. Base; convert to base-10 digits
       Š   .. Sum, resulting in the digit sum
        T  .. Ten
         = .. Check if (the digit sum and ten are) equal

ค่อนข้างน่าสงสัยเพราะมันพิมพ์ตัวเลขทั้งหมดโดยไม่มีตัวคั่นระหว่างมัน โปรแกรม 11- ไบต์ที่พิมพ์แต่ละหมายเลขในบรรทัดแยก:

nIè¶fφTBŠE=

สิ่งเดียวที่ควรค่าแก่การกล่าวถึงคือขอบบนที่ยากต่อการสร้างเล็กน้อย: 18² = 324


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