Kodunuzu doldurun


37

Giriş

bu zorluk için girdi yok

Meydan okuma

Çıktıyı kodlayın:
Sayılarının toplamı kodunuzun bayt sayısına eşit olan ilk 10 asal sayı

Örnekler

Diyelim ki kodunuz Co&%423@k"oo"hangisinin 13 bytes
kodunu vermelidir , bunlar [67, 139, 157, 193, 229, 283, 337, 373, 409, 463]
toplamı olan ilk 10 asal sayıdır.

Eğer kodunuz, 8 bytesçıktısını almanız gerekir.[17, 53, 71, 107, 233, 251, 431, 503, 521, 701]

kurallar

Sen gerekir sadece ilk 10 ^ 8 asal sayıları kullanmak
tüm sayılar <2038074743 = 10 ^ 8 asal olmalıdır demektir

Eğer varsa bu aralıkta 10 asal sayıları bulamıyorum senin bayt uyacak, o zaman "bulmak için (hatta bazı bayt! Eklemek gerekebilir) kodunuzu ayarlamak zorunda kalacak bayt çalışan sayısını "

Sadece çıkış 10 asal istediğiniz herhangi bir şekilde

Bu , yani bayttaki en kısa kod kazanıyor!


1
Yorumu düzenleyemiyorum, bu yüzden sadece siliyorum ve tekrar gönderiyorum: Burada, belirli bir bytecount için indekslerinin yanı sıra çıktısını almanız gereken primerleri içeren bir özet var: link Naif bir şekilde yaptığımdan, sadece toplamları kontrol ettim. ilk 10 ^ 7 astar için. Bazı cevaplarda bahsedildiği gibi, ulaşılamayan dijital toplamlarla ilişkili olabilecek eksik değerler vardır, ancak daha büyük toplamlar için durum böyle olmayabilir (unutmayın, yalnızca ilk 10 ^ 7 primi kontrol ettim).
cole

"İstediğiniz herhangi bir şekilde" : Asalların sıralanması gerekiyor mu?
Arnauld

@Arnauld Hayır, ancak her siparişte 10 daha küçük olmalıdır

1
@KevinCruijssen Cevabınız geçersiz olsa da, daha iyi bir tane bulmanıza yardımcı olmak için diğer üyelerle görüşmek üzere gönderebilirsiniz.

1
@TessellatingHeckler Ayrıca 10 ^ 8 sınırının oldukça keyfi olduğunu düşünüyorum. Verilen on sayının hepsinin 350 basamak toplamına sahip olduğunu ve hepsinin asal olduğunu doğrulamak için hızlı olması gerekir. Ancak, bu onların aslında en küçük olduklarını doğrulamak için, daha zor olabilir sanırım.
Jeppe Stig Nielsen

Yanıtlar:


15

Neim , 10 8 7 bayt

Sadece ASCII sayesinde -1 bayt.

πᛦ𝐋Λ𝐬7𝔼

Çevrimiçi deneyin!

Çıktılar:

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

Bu (en azından yaklaşım) ungolfable.

açıklama

πᛦ𝐋Λ𝐬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
Şimdiye kadarki en iyi .. !!!

νᛦ𝐋Λ𝐬7𝔼7 için ... düzenleme: π-> ν: p
Jonathan Allan

@JonathanAllan Görünüşe göre ASCII tarafından sadece ninja'd oldunuz. ;)
totallyhuman

Vay canına, ilk n harfleri itmek için bir talimat var mı? Temiz!
isaac9A,

9

Jöle , 14 bayt

‘ÆNDS=14ø⁵#‘ÆN

Çevrimiçi deneyin!

Bu yazdırır:

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

Nasıl çalışır

‘Æ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
Asal olanları al!
undergroundmonorail

6

Pyth , 14 bayt

.f&qsjZT14P_ZT

Burada dene.

Bu 14 bayttır ve yazdırır:

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

Pyth , 16 bayt

.f&qssM`Z16P_ZTZ

Burada dene!

Bunun 15 bayt olabileceğine dikkat edin: .f&qssM`Z16P_ZTZancak rakamların toplamı olarak 15 olan bir prim yoktur, çünkü sayılar 15bölünebilir durumdadır, bu 3da sayının bölünmeyeceği anlamına gelir 3, dolayısıyla asal olmamak.

Bu 16 bayt uzunluğunda ve yazdırır:

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

Nasıl?

Açıklama 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.

Açıklama 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
Aferin! ve hızlı!

“Sayılarının toplamı 15 olan çok az sayıda tam sayı” - gerçekten, çünkü 3 ile bölünebilen bir rakam toplamı 3 ile bölünebilirlik anlamına gelir :)
Lynn

@Lynn Oh emin> _> - Aptalım, özür dilerim. Sabit
Bay Xcoder

6

Kabuğu , 13 bayt

↑10fȯ=13ΣdfṗN

Çevrimiçi deneyin!

açıklama

            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.

Neredeyse 10 bayta kadar golf oynadı, ancak sonuçlardan biri yanlış :( tio.run/##yygtzv7//1HbREODtPxDyywftU04sqHg/38A
Leo

@Leo Heh, eğer işe yaradıysa çok temiz olurdu :)
Martin Ender

6

Haskell , 77 71 bayt

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

Çevrimiçi deneyin!

Laikoni sayesinde 6 bayt kaydedildi

71 bayt için:

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

tüm numaraların <2038074743 olması gerekir

1999999999, izin verilen aralıktaki maksimum hane sayısı olan sayıdır ve bu toplam 82'dir. Umarım 77 bayt iyidir, ama bilmiyorum (hala bilgisayarımda çalışıyor).

EDIT: 77 byte için biraz optimize edilmiş versiyon:

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

6

Jöle ,  14  13 bayt

DS⁼13
.ȷÆRÇÐf

Çevrimiçi deneyin!

Nasıl?

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 bayt

83LØʒSOTQ}

Çevrimiçi deneyin!

}Şekil 9, geçersiz bir bayt sayısı olduğu, bir dolgu maddesi olarak kullanılır.

Çıktı: [19, 37, 73, 109, 127, 163, 181, 271, 307, 433]

açıklama

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

Neredeyse 8 bayt

Bir bayt daha golf atılabiliyorsa bu geçerli olur.

žyLØʒSO8Q

Çevrimiçi deneyin!

Çıktı: [17, 53, 71, 107, 233, 251, 431, 503, 521, 701]

açıklama

ž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 bayt

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

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

thanx to @Not -6 bayt için bir ağaç yok


1
SelectKaç tane şey geri dönmek istediğini söyleyebilirsin :Select[Prime@Range[10^6],Tr@IntegerDigits@#==52&,10]
Bir ağaç değil

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

2

J, 29 bayt

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

Çevrimiçi deneyin!

Kesinlikle REPL üzerinde çalışır, muhtemelen düzenli bir program da çalışır (J'nin programların dürüst olması için çıktılarının ne olduğundan emin değilim).

İlk geçiş, özellikle ideal değil ama daha akıllıca bir yaklaşım düşünemiyorum. Sabit kodlamanın daha küçük bir diziyi araştıracağı.

açıklama

(#~(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, yalnızca dijital toplamı 29 olan ilk 10 astarın kullanılacağını garanti eder.


2

V , 73 71 bayt

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

Çevrimiçi deneyin!

Basit alt grup değiştirme sıkıştırması - Olası tüm cevap çıktılarını kontrol ettim ve daha sonra bazılarında "çoğu karakterden en çok tasarruf sağlayan basit bir dize değişimini" test ettim. örneğin bu masayı oluşturmak . [edit: Yeniden masaya baktım ve bunun yerine 71 byte versiyonunu yapabileceğimi gördüm]

Daha yüksek primazlar, daha uzun 9 sıralarında bulunur ve en iyi bulduğum rakam rakamların 73'e kadar çıkmasıydı, 89999 -> 1 karakter kalıbı metni 99 bayttan 63 bayta indirir. Kalan 10 baytta 'a' -> '89999' geri almak için bir yol bulmak beni V'e yönlendirdi.


1

Japt , 19 bayt

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

Dene


Explantaion

L²õ

õ1 - 100 ( L) kare arasında bir tamsayı dizisi oluşturun .

f_          Ã

fBir işlevden her birini geçirerek ( ) Zgeçerli öğenin nerede olduğunu süzün ( ) .

j

ZAsal olup olmadığını kontrol edin .

©

Mantıksal VE ( &&).

Zìx

ZBir basamak dizisine ( ì) bölün ve ekleme ( x) ile azaltın .

¥19

İle eşitliği kontrol edin 19.

¯A

Dilim ( ¯) 10 öğeye ve dolaylı olarak sonuç dizisinin çıktısını alın.


1

Japt , 19 bayt

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

Çevrimiçi deneyin! -Qdiziyi biçimlendirmek için bayrakla işaretleyin.

Rakamları eklendiği ilk 10 astarı yazar 19:

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

Bunun 18 byte'a ( ì xìx) golf oynayabileceğini , ancak toplamda 18 rakam olan bir priming bulunmadığını unutmayın.

açıklama

Diziyi [0, ..., 9]şu fonksiyonla eşleyin X, güncel değer nerede .

  _              }a

ZGeçerli fonksiyonun olduğu , şu fonksiyondan gerçek değeri döndüren ilk tamsayıyı döndür

   j ©

Bu sayının asal olup olmadığını kontrol edin ve ...

      19¥Zì x

xRakamların ( ì) toplamı ( ) Zeşittir ( ¥) 19,

              «X´

Ve Xsahtedir ( «"değildir" değildir &&!). Bu da azalır X( ´).

Sonuç dizisi dolaylı olarak verilir.


Oh iyi; farklı yaklaşımlarla bağladık.
Shaggy

1

PARI / GP, 40 bayt

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

Bu konuda çok fazla golf yok ( xilk 8600 priming arasından 40 rakamı olanları seçin ) Çıktı:

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


1

Yakut 2.4.1, 74 Bayt

Codegolf'un optimize ettiği dillerden birini asla yenemeyecektim, ama Ruby'de bunu yapmak yine de eğlenceliydi. Prime'ın Çekirdek içinde değil, standart kütüphanede olması sinir bozucu. Ayrıca Haskell'i yenemediğim için sinirleniyorum.

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

Paradok (v0.2.7 +), 10 bayt (CP-1252)

5h¶fφTBŠT=

Çevrimiçi deneyin!

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

Aralarında ayırıcı olmayan tüm sayıları yazdırdığı için biraz sorgulanabilir. Her numarayı ayrı bir satıra basan 11 baytlık bir program:

nIè¶fφTBŠE=

Bahsetmeye değer tek şey, inşa edilmesi biraz daha zor olan üst sınırdır: 18² = 324.


0

Ciklet , 37 bayt

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

Çevrimiçi deneyin!

Çıktı 29989,39799,39979,48799,48889,49789,56989,58699,58789,58897

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.