Tăng mã của bạn


37

Đầu vào

không có đầu vào cho thử thách này

Các thách thức

Viết mã xuất ra:
10 số nguyên tố đầu tiên có tổng các chữ số của chúng bằng số byte của mã của bạn

Ví dụ

Hãy nói rằng mã của bạn là Co&%423@k"oo"đó là 13 bytes
mã phải đầu ra của bạn [67, 139, 157, 193, 229, 283, 337, 373, 409, 463]
đó là những 10 số nguyên tố đầu tiên có tổng .... ok bạn đã nhận nó!

Nếu mã của bạn là 8 bytes, bạn phải xuất[17, 53, 71, 107, 233, 251, 431, 503, 521, 701]

Quy tắc

Bạn chỉ phải sử dụng 10 ^ 8 số nguyên tố đầu tiên
, có nghĩa là tất cả các số của bạn phải <2038074743 = 10 ^ số nguyên tố thứ 8

Nếu bạn không thể tìm thấy 10 số nguyên tố trong phạm vi này phù hợp với byte của mình, thì bạn sẽ phải điều chỉnh mã của mình (thậm chí bạn có thể phải thêm một số byte!) Để tìm " số byte hoạt động "

Chỉ cần xuất 10 số nguyên tố theo bất kỳ cách nào bạn muốn

Đây là , vì vậy mã ngắn nhất tính bằng byte sẽ thắng!


1
Không thể chỉnh sửa nhận xét vì vậy tôi chỉ xóa và đăng lại: Đây là một ý chính chứa các số nguyên tố bạn cần đưa ra cho một số lượng cụ thể cũng như các chỉ số của chúng: liên kết Vì tôi đã làm điều đó một cách ngây thơ , tôi chỉ kiểm tra tổng hợp đến 10 ^ 7 số nguyên tố đầu tiên. Giống như một số câu trả lời đã đề cập, có những giá trị bị thiếu có khả năng tương quan với số tiền kỹ thuật số không thể thực hiện được, mặc dù đối với số tiền lớn hơn có thể không phải là trường hợp này (hãy nhớ rằng tôi chỉ kiểm tra 10 ^ 7 số nguyên tố đầu tiên).
cole

"Theo bất cứ cách nào bạn thích" : các số nguyên tố cần phải được đặt hàng?
Arnauld

@Arnauld Không, nhưng chúng phải nhỏ hơn 10 theo bất kỳ thứ tự nào

1
@KevinCruijssen Mặc dù câu trả lời của bạn không hợp lệ, bạn có thể đăng bài để thảo luận với các thành viên khác để giúp bạn tìm ra câu trả lời tốt hơn.

1
@TessellatingHeckler Tôi cũng nghĩ rằng việc cắt 10 ^ 8 là khá tùy tiện. Để xác minh rằng mười số đã cho đều có tổng chữ số 350 và tất cả đều là số nguyên tố, nên nhanh. Tuy nhiên, để xác minh rằng mười cái đó trong thực tế là nhỏ nhất có thể, thể khó hơn, tôi đoán vậy.
Jeppe Stig Nielsen

Câu trả lời:


15

Neim , 10 8 7 byte

-1 byte chỉ nhờ ASCII.

πᛦ𝐋Λ𝐬7𝔼

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

Đầu ra:

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

Điều này (tốt, ít nhất là cách tiếp cận) là không thể hiểu được.

Giải trình

πᛦ𝐋Λ𝐬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
tốt nhất cho đến nay .. !!!

νᛦ𝐋Λ𝐬7𝔼trong 7 ... chỉnh sửa: π-> ν: p
Jonathan Allan

@Jonathan ALLan Có vẻ như bạn đã từng là ninja chỉ bởi ASCII. ;)
hoàn toàn là

Wow thực sự có một hướng dẫn để đẩy n số nguyên tố đầu tiên? Khéo léo!
isaac9A

9

Thạch , 14 byte

‘ÆNDS=14ø⁵#‘ÆN

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

Bản in này:

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

Làm thế nào nó hoạt động

‘Æ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
có được các số nguyên tố!
undergroundmonorail

6

Bình thường , 14 byte

.f&qsjZT14P_ZT

Hãy thử nó ở đây.

Đây là 14 byte và bản in:

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

Bình thường , 16 byte

.f&qssM`Z16P_ZTZ

Hãy thử nó ở đây!

Lưu ý rằng đây có thể là 15 byte: .f&qssM`Z16P_ZTZnhưng không có số nguyên tố nào có 15 là tổng các chữ số của chúng, vì 15nó chia hết cho 3, có nghĩa là số này cũng sẽ chia hết 3, do đó không phải là số nguyên tố.

Đây là 16 byte dài và in:

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

Làm sao?

Giải thích 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.

Giải thích 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
Làm tốt! và nhanh chóng

Rất ít số nguyên tố có 15 là tổng các chữ số của họ - thực sự, bởi vì tổng một chữ số chia hết cho 3 hàm ý chia hết cho 3 :)
Lynn

@Lynn Oh chắc chắn> _> - Tôi xin lỗi, xin lỗi. Đã sửa lỗi
Ông Xcoder

6

Husk , 13 byte

↑10fȯ=13ΣdfṗN

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

Giải trình

            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.

Gần như đánh gôn tới 10 byte, nhưng một trong những kết quả là sai :( tio.run/##yygtzv7//1HbREODtPxDyywftU04sqHg/38A
Leo

@Leo Heh, sẽ rất gọn gàng nếu nó hoạt động :)
Martin Ender

6

Haskell , 77 71 byte

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

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

Đã lưu 6 byte nhờ Laikoni

Đối với 71 byte:

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

tất cả các số của bạn phải <2038074743

1999999999 là số có tổng các chữ số tối đa trong phạm vi được phép và tổng đó là 82. Bất kỳ chương trình nào vượt quá 82 byte sẽ không thỏa mãn điều kiện. Tôi hy vọng rằng 77 byte là ổn, nhưng tôi không biết (nó vẫn đang chạy trên máy tính của tôi).

EDIT: một phiên bản được tối ưu hóa một chút cho 77 byte:

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

6

Thạch ,  14  13 byte

DS⁼13
.ȷÆRÇÐf

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

Làm sao?

DS⁼13 - Link 1, test digit sum equals thirteen: number, n
D     - get a list of the decimal digits of n
 S    - sum them
  ⁼13 - equals thirteen?

.ȷÆRÇÐf - Main link: no arguments
.ȷ      - literal 500
  ÆR    - prime range (all primes less than or equal to 500)
     Ðf - filter keep if:
    Ç   -   call last link (1) as a monad


5

05AB1E , 10 byte

83LØʒSOTQ}

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

Cái }này được sử dụng làm phụ, vì 9 là số byte không hợp lệ.

Đầu ra: [19, 37, 73, 109, 127, 163, 181, 271, 307, 433]

Giải trình

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

Gần 8 byte

Điều này sẽ hợp lệ nếu thêm một byte có thể được đánh gôn.

žyLØʒSO8Q

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

Đầu ra: [17, 53, 71, 107, 233, 251, 431, 503, 521, 701]

Giải trình

ž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

Toán học, 52 byte

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

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

thanx đến @ Không phải là một cây cho -6 byte


1
Bạn có thể cho biết có Selectbao nhiêu thứ bạn muốn trả lại:Select[Prime@Range[10^6],Tr@IntegerDigits@#==52&,10]
Không phải là một cái cây vào

1
Select[Prime@Range[77705],Tr@IntegerDigits@#==50&]
Lynn

2

J, 29 byte

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

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

Chắc chắn hoạt động trên REPL, có thể cũng hoạt động một chương trình thông thường (không chắc J làm thế nào để đầu ra trung thực cho các chương trình).

Vượt qua đầu tiên, không đặc biệt lý tưởng nhưng tôi không thể nghĩ ra bất kỳ cách tiếp cận thông minh nào nữa. Đi để điều tra mã hóa một chuỗi nhỏ hơn.

Giải trình

(#~(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 đảm bảo rằng chỉ 10 số nguyên tố đầu tiên có tổng số kỹ thuật số là 29 sẽ được sử dụng.


2

V , 73 71 byte

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

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

Nén thay thế chuỗi con đơn giản - Tôi đã kiểm tra tất cả các đầu ra câu trả lời có thể, và sau đó thực hiện một số thử nghiệm "thay thế chuỗi nào đơn giản giúp tiết kiệm hầu hết các ký tự". ví dụ: tạo bảng này . [sửa: Tôi nhìn lại bảng và thấy tôi có thể thực hiện phiên bản 71 byte thay thế].

Các số nguyên tố cao hơn có số lần chạy dài hơn là 9 trong số đó, và số tốt nhất tôi tìm thấy là nơi các chữ số thêm tới 73, mẫu 89999 -> 1 char đưa văn bản giảm từ 99 byte xuống còn 63 byte. Tìm cách hoàn tác 'a' -> '89999' trong 10 byte còn lại đã đưa tôi đến V.


1

Japt , 19 byte

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

Kiểm tra nó


Giải thích

L²õ

Tạo một mảng các số nguyên ( õ) từ 1 đến 100 ( L) bình phương.

f_          Ã

Lọc ( f) bằng cách chuyển từng thông qua một hàm, trong đó Zlà phần tử hiện tại.

j

Kiểm tra nếu Zlà một nguyên tố.

©

Logic VÀ ( &&).

Zìx

Chia Zthành một mảng các chữ số ( ì) và giảm bằng phép cộng ( x).

¥19

Kiểm tra sự bình đẳng với 19.

¯A

Slice ( ¯) đến phần tử thứ 10 và ngầm xuất mảng kết quả.


1

Japt , 19 byte

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

Hãy thử trực tuyến! với -Qcờ để định dạng mảng.

Xuất ra 10 số nguyên tố đầu tiên có chữ số thêm vào 19:

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

Lưu ý rằng điều này có thể được đánh tới 18 byte ( ì xìx), nhưng không tồn tại số nguyên tố nào với tổng số chữ số là 18.

Giải trình

Ánh xạ mảng [0, ..., 9]theo hàm sau, Xgiá trị hiện tại ở đâu.

  _              }a

Trả về số nguyên đầu tiên trả về true từ hàm sau, trong đó Zgiá trị hiện tại

   j ©

Kiểm tra xem số này có phải là số nguyên tố không, và ...

      19¥Zì x

Tổng ( x) của các chữ số ( ì) Zbằng ( ¥) 19,

              «X´

Xlà giả ( «là "và không", hoặc &&!). Điều này cũng giảm X( ´).

Mảng kết quả là hoàn toàn xuất ra.


Ồ, tốt đẹp; chúng tôi gắn liền với các phương pháp khác nhau.
Xù xì

1

PARI / GP, 40 byte

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

Không có nhiều golf về nó (chọn những người xcó tổng các chữ số 40 trong số 8600 số nguyên tố đầu tiên). Đầu ra là:

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


1

Ruby 2.4.1, 74 byte

Tôi sẽ không bao giờ đánh bại một trong những ngôn ngữ được tối ưu hóa của Codegolf, nhưng vẫn rất vui khi làm điều đó trong Ruby. Thất vọng rằng Prime không nằm trong Core mà thay vào đó là trong thư viện tiêu chuẩn. Tôi cũng thất vọng vì tôi không thể đánh bại 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

Nghịch lý (v0.2.7 +), 10 byte (CP-1252)

5h¶fφTBŠT=

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

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

Hơi nghi ngờ vì nó in tất cả các số không có dấu phân cách giữa chúng. Một chương trình 11 byte in mỗi số trên một dòng riêng biệt:

nIè¶fφTBŠE=

Điều duy nhất đáng nói về nó là giới hạn trên khó xây dựng hơn một chút: là 18² = 324.


0

Bong bóng , 37 byte

00000000: 0dc6 3901 4031 0c80 5043 9dfe 9180 7f63  ..9.@1..PC.....c
00000010: 6579 f028 9ed7 352d e7a3 4f48 37ff 9164  ey.(..5-..OH7..d
00000020: 4c96 04f7 02                             L....

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

Đầu ra là 29989,39799,39979,48799,48889,49789,56989,58699,58789,58897

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.