Persiapkan kode Anda

37

Memasukkan

tidak ada masukan untuk tantangan ini

Tantangan

Tulis kode yang menampilkan:
10 bilangan prima pertama yang jumlah digitnya sama dengan jumlah byte kode Anda

Contohnya

Katakanlah kode Anda Co&%423@k"oo"adalah 13 bytes
kode yang harus Anda keluarkan[67, 139, 157, 193, 229, 283, 337, 373, 409, 463]
mereka adalah 10 bilangan prima pertama yang jumlahnya .... ok Anda mendapatkannya!

Jika kode 8 bytesAnda, Anda harus menampilkan[17, 53, 71, 107, 233, 251, 431, 503, 521, 701]

Aturan

Anda hanya harus menggunakan 10 ^ 8 bilangan prima pertama
yang berarti semua bilangan Anda harus <2038074743 = 10 ^ 8 prime

Jika Anda tidak dapat menemukan 10 bilangan prima dalam kisaran ini yang sesuai dengan byte Anda, maka Anda harus menyesuaikan kode Anda (Anda bahkan mungkin harus menambahkan beberapa byte!) Untuk menemukan " jumlah byte yang bekerja "

Keluarkan 10 bilangan prima dengan cara apa pun yang Anda suka

Ini adalah , jadi kode terpendek dalam byte menang!


sumber
1
Tidak dapat mengedit komentar jadi saya hanya menghapus dan memposting ulang: Berikut adalah inti yang berisi bilangan prima yang perlu Anda hasilkan untuk bytecount yang diberikan serta indeksnya: tautan Karena saya melakukannya dengan naif, saya hanya memeriksa jumlahnya ke 10 ^ 7 bilangan prima pertama. Seperti beberapa jawaban yang telah disebutkan, ada nilai-nilai yang hilang yang kemungkinan berkorelasi dengan jumlah digital yang tidak dapat diraih, meskipun untuk jumlah yang lebih besar ini mungkin tidak terjadi (ingat, saya hanya memeriksa 10 ^ 7 bilangan prima pertama).
cole
"dengan cara apa pun yang Anda suka" : apakah bilangan prima perlu dipesan?
Arnauld
@Arnauld Tidak, tetapi mereka harus menjadi 10 lebih kecil dalam urutan apa pun
1
@KevinCruijssen Meskipun jawaban Anda tidak valid, Anda dipersilakan mempostingnya untuk berdiskusi dengan anggota lain untuk membantu Anda menemukan yang lebih baik.
1
@ TessellatingHeckler Saya juga berpikir cutoff 10 ^ 8 agak sewenang-wenang. Untuk memverifikasi bahwa sepuluh angka yang diberikan semuanya memiliki angka 350, dan semuanya bilangan prima, harus cepat. Namun, untuk memverifikasi bahwa sepuluh itu sebenarnya adalah yang terkecil yang mungkin, bisa lebih sulit, saya kira.
Jeppe Stig Nielsen

Jawaban:

15

Neim , 10 8 7 byte

-1 byte berkat ASCII saja.

πᛦ𝐋Λ𝐬7𝔼

Cobalah online!

Output:

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

Ini (yah, setidaknya pendekatannya) tidak dapat diserang.

Penjelasan

πᛦ𝐋Λ𝐬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
benar-benar manusiawi
sumber
2
terbaik sejauh ini .. !!!
νᛦ𝐋Λ𝐬7𝔼untuk 7 ... edit: π-> ν: p
Jonathan Allan
@ JonathanAllan Sepertinya Anda telah menjadi ninja hanya oleh ASCII. ;)
totallyhuman
Wow benar-benar ada instruksi untuk mendorong bilangan prima pertama? Rapi!
isaac9A
9

Jelly , 14 byte

‘ÆNDS=14ø⁵#‘ÆN

Cobalah online!

Ini mencetak:

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

Bagaimana itu bekerja

‘Æ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
fireflame241
sumber
8
dapatkan bilangan prima itu!
undergroundmonorail
6

Pyth , 14 byte

.f&qsjZT14P_ZT

Coba di sini.

Ini adalah 14 byte dan cetak:

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

Pyth , 16 byte

.f&qssM`Z16P_ZTZ

Coba di sini!

Perhatikan bahwa ini bisa 15 byte:, .f&qssM`Z16P_ZTZtetapi tidak ada bilangan prima yang memiliki 15 sebagai jumlah digit mereka, karena 15dapat dibagi dengan 3, yang akan menyiratkan jumlah juga akan habis dibagi 3, sehingga tidak menjadi prima.

Ini panjangnya 16 byte dan dicetak:

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

Bagaimana?

Penjelasan 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.

Penjelasan 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.
Tuan Xcoder
sumber
1
Sudah selesai dilakukan dengan baik! dan cepat!
“Sangat sedikit bilangan bulat utama yang memiliki 15 sebagai jumlah digit mereka” - memang, karena jumlah digit yang dapat dibagi dengan 3 menyiratkan keterbagian dengan 3 :)
Lynn
@ Lynn Oh tentu> _> - Saya bodoh, maaf. Diperbaiki
Mr. Xcoder
6

Sekam , 13 byte

↑10fȯ=13ΣdfṗN

Cobalah online!

Penjelasan

            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.
Martin Ender
sumber
Hampir golf sampai 10 byte, tetapi salah satu hasilnya salah :( tio.run/##yygtzv7//1HbREODtPxDyywftU04sqHg/38A
Leo
@ Leo Heh, akan sangat rapi jika itu berhasil :)
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]]

Cobalah online!

Disimpan 6 byte berkat Laikoni

Untuk 71 byte:

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

semua nomor Anda harus <2038074743

1999999999 adalah angka dengan jumlah digit maksimum dalam rentang yang diizinkan, dan jumlah itu adalah 82. Program apa pun yang melebihi 82 byte tidak akan memenuhi ketentuan tersebut. Saya harap 77 byte tidak masalah, tetapi saya tidak tahu (masih berjalan di komputer saya).

EDIT: versi yang sedikit dioptimalkan memberikan 77 byte:

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

Jelly ,  14  13 byte

DS⁼13
.ȷÆRÇÐf

Cobalah online!

Bagaimana?

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
Jonathan Allan
sumber
5

05AB1E , 10 byte

83LØʒSOTQ}

Cobalah online!

Ini }digunakan sebagai pengisi, karena 9 adalah jumlah byte yang tidak valid.

Keluaran: [19, 37, 73, 109, 127, 163, 181, 271, 307, 433]

Penjelasan

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

Hampir 8 byte

Ini akan berlaku jika satu byte lagi dapat di-golf-kan.

žyLØʒSO8Q

Cobalah online!

Keluaran: [17, 53, 71, 107, 233, 251, 431, 503, 521, 701]

Penjelasan

ž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)
Justin Mariner
sumber
3

Mathematica, 52 byte

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

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

thanx ke @Tidak pohon untuk -6 byte

J42161217
sumber
1
Anda dapat mengetahui Selectberapa banyak hal yang ingin Anda kembalikan:Select[Prime@Range[10^6],Tr@IntegerDigits@#==52&,10]
Bukan sebatang pohon
1
Select[Prime@Range[77705],Tr@IntegerDigits@#==50&]
Lynn
2

J, 29 byte

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

Cobalah online!

Jelas bekerja pada REPL, mungkin juga bekerja pada program reguler (tidak yakin bagaimana J menghasilkan output untuk program yang jujur).

Pass pertama, tidak terlalu ideal tetapi saya tidak bisa memikirkan pendekatan yang lebih pintar. Akan menyelidiki hardcoding urutan yang lebih kecil.

Penjelasan

(#~(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 menjamin bahwa hanya 10 bilangan prima pertama dengan jumlah digital 29 yang akan digunakan.

cole
sumber
2

V , 73 71 byte

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

Cobalah online!

Kompresi penggantian substring sederhana - Saya memeriksa semua kemungkinan jawaban, dan kemudian melakukan beberapa "yang mana memiliki penggantian string sederhana yang menyimpan sebagian besar karakter" pengujian. misalnya menghasilkan tabel ini . [edit: Saya melihat lagi ke meja dan melihat saya bisa melakukan versi 71 byte sebagai gantinya].

Bilangan prima yang lebih tinggi memiliki bentang 9 yang lebih panjang di dalamnya, dan yang terbaik yang saya temukan adalah di mana angka-angka tersebut bertambah hingga 73, pola 89999 -> 1 char membawa teks turun dari 99 byte menjadi 63 byte. Menemukan cara untuk membatalkan 'a' -> '89999' di 10 byte yang tersisa membawa saya ke V.

TessellatingHeckler
sumber
1

Japt , 19 byte

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

Menguji


Penjelasan

L²õ

Buat array bilangan bulat ( õ) dari 1 hingga 100 ( L) kuadrat.

f_          Ã

Filter ( f) dengan melewati masing-masing fungsi, di mana Zelemen saat ini.

j

Periksa apakah Zprime.

©

Logis DAN ( &&).

Zìx

Pisahkan Zmenjadi array angka ( ì) dan kurangi dengan penambahan ( x).

¥19

Periksa kesetaraan dengan 19.

¯A

Iris ( ¯) ke elemen ke-10 dan secara implisit menampilkan array yang dihasilkan.

Shaggy
sumber
1

Japt , 19 byte

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

Cobalah online!dengan-Q bendera untuk memformat array.

Menghasilkan 10 primes pertama yang digitnya ditambahkan ke 19:

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

Perhatikan bahwa ini dapat di-golf hingga 18 byte (ì xìx ), tetapi tidak ada bilangan prima dengan jumlah digit 18.

Penjelasan

Petakan array [0, ..., 9]dengan fungsi berikut, di mana Xnilai saat ini.

  _              }a

Kembalikan integer pertama yang mengembalikan true dari fungsi berikut, di mana Znilai saat ini

   j ©

Periksa apakah nomor ini prima, dan ...

      19¥Zì x

Jumlah ( x) dari digit ( ì) Zsama dengan ( ¥) 19,

              «X´

Dan Xitu falsy ( «is "and not", atau &&!). Ini juga mengurangi X(´ ).

Array yang dihasilkan secara implisit dikeluarkan.

Justin Mariner
sumber
Oh bagus; kami terikat dengan pendekatan yang berbeda.
Shaggy
1

PARI / GP, 40 byte

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

Tidak banyak golf tentang hal itu (pilih orang x- orang dengan jumlah angka 40 di antara 8600 prima pertama). Output adalah:

[49999, 68899, 69997, 77899, 78889, 78979, 79699, 79987, 85999, 88789]
Jeppe Stig Nielsen
sumber
1

Pyke , 10 byte

~p#.cTq)T>

Coba di sini!

~p         -   primes
  #.cTq)   -  filter(^)
   .c      -    digit_sum
     Tq    -   ^ == 10
        T> - [:10]
Biru
sumber
1

Ruby 2.4.1, 74 Bytes

Saya tidak akan pernah bisa mengalahkan salah satu bahasa yang dioptimalkan Codegolf, tapi tetap menyenangkan melakukannya di Ruby. Frustasi bahwa Prime tidak ada di Core tetapi di justru di perpustakaan standar. Saya juga frustrasi bahwa saya tidak bisa mengalahkan 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]
cpt_peter
sumber
0

Paradoc (v0.2.7 +), 10 byte (CP-1252)

5h¶fφTBŠT=

Cobalah online!

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

Agak dipertanyakan karena mencetak semua angka tanpa pemisah di antara mereka. Program 11 byte yang mencetak setiap angka pada baris terpisah:

nIè¶fφTBŠE=

Satu-satunya hal yang layak disebutkan tentang itu adalah batas atas yang sedikit lebih sulit dibangun: adalah 18² = 324.

betaveros
sumber
0

Permen karet , 37 byte

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

Cobalah online!

Output adalah 29989,39799,39979,48799,48889,49789,56989,58699,58789,58897

ovs
sumber