Füllen Sie Ihren Code auf


37

Eingang

Keine Eingabe für diese Herausforderung

Die Herausforderung

Schreiben Sie einen Code, der Folgendes ausgibt:
Die ersten 10 Primzahlen, deren Summe der Anzahl der Bytes Ihres Codes entspricht

Beispiele

Nehmen wir an, Ihr Code ist Co&%423@k"oo"der 13 bytes
Code, den Sie ausgeben müssen. Dies [67, 139, 157, 193, 229, 283, 337, 373, 409, 463]
sind die ersten 10 Primzahlen, deren Summe .... ok, Sie haben es verstanden!

Wenn Ihr Code ist 8 bytes, müssen Sie ausgeben[17, 53, 71, 107, 233, 251, 431, 503, 521, 701]

Regeln

Sie dürfen nur die ersten 10 ^ 8 Primzahlen verwenden.
Dies bedeutet, dass alle Ihre Zahlen <2038074743 = 10 ^ 8 Primzahl sein müssen

Wenn Sie in diesem Bereich keine 10 Primzahlen finden , die zu Ihren Bytes passen, müssen Sie Ihren Code anpassen (möglicherweise müssen Sie sogar einige Bytes hinzufügen!), Um eine " funktionierende Anzahl von Bytes " zu finden.

Geben Sie einfach die 10 Primzahlen so aus, wie Sie möchten

Das ist , also gewinnt der kürzeste Code in Bytes!


1
Kommentar kann nicht bearbeitet werden, daher lösche und reposte ich nur: Hier ist eine Übersicht, die die Primzahlen enthält, die Sie für ein bestimmtes bytecount ausgeben müssen, sowie deren Indizes: link Da ich es naiv gemacht habe, habe ich nur nach den Summen gesucht zu den ersten 10 ^ 7 Primzahlen. Wie einige Antworten bereits erwähnt haben, gibt es fehlende Werte, die wahrscheinlich nicht erreichbaren digitalen Summen entsprechen, obwohl dies bei größeren Summen möglicherweise nicht der Fall ist (denken Sie daran, ich habe nur die ersten 10 ^ 7 Primzahlen überprüft).
Cole

"Wie du willst" : Müssen die Primzahlen bestellt werden?
Arnauld

@ Arnauld Nein, aber sie müssen die 10 in beliebiger Reihenfolge kleiner sein

1
@KevinCruijssen Obwohl Ihre Antwort ungültig ist, können Sie sie gerne posten, um eine Diskussion mit anderen Mitgliedern zu führen und eine bessere zu finden.

1
@TessellatingHeckler Ich finde auch, dass der 10 ^ 8 Cutoff eher willkürlich ist. Um zu überprüfen, ob zehn gegebene Zahlen eine Ziffernsumme von 350 haben und alle Primzahlen sind, sollten Sie schnell sein. Es könnte jedoch schwieriger sein , zu überprüfen, ob diese zehn tatsächlich die kleinstmöglichen sind .
Jeppe Stig Nielsen

Antworten:


15

Neim , 10 8 7 Bytes

-1 Byte nur dank ASCII.

πᛦ𝐋Λ𝐬7𝔼

Probieren Sie es online!

Ausgänge:

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

Dies (zumindest der Ansatz) ist nicht golffähig.

Erläuterung

πᛦ𝐋Λ𝐬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
am besten so weit .. !!!

νᛦ𝐋Λ𝐬7𝔼für 7 ... edit: π-> ν: p
Jonathan Allan

@ JonathanAllan Es scheint, dass Sie nur von ASCII ninja'd wurden. ;)
totalhuman

Wow gibt es wirklich eine Anweisung, die ersten n Primzahlen zu schieben? Ordentlich!
Isaac9A

9

Jelly , 14 Bytes

‘ÆNDS=14ø⁵#‘ÆN

Probieren Sie es online!

Dies druckt:

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

Wie es funktioniert

‘Æ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
hol die Primzahlen!
undergroundmonorail

6

Pyth , 14 Bytes

.f&qsjZT14P_ZT

Probieren Sie es hier aus.

Dies ist 14 Bytes und druckt:

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

Pyth , 16 Bytes

.f&qssM`Z16P_ZTZ

Probieren Sie es hier aus!

Es ist zu beachten, dass dies 15 Bytes sein .f&qssM`Z16P_ZTZkönnen. Es gibt jedoch keine Primzahlen mit 15 als Summe ihrer Ziffern, da dies 15durch teilbar ist 3, was bedeuten würde, dass die Zahl auch durch teilbar wäre 3und daher keine Primzahl ist.

Dies ist 16 Bytes lang und gibt Folgendes aus:

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

Wie?

Erklärung 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.

Erklärung 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
Gut gemacht! und schnell!

"Sehr wenige Primzahlen, die 15 als Summe ihrer Ziffern haben" - in der Tat, weil eine durch 3 teilbare Ziffer die Teilbarkeit durch 3 impliziert :)
Lynn

@Lynn Oh sicher> _> - Es tut mir leid, ich bin dumm. Feste
Herr Xcoder

6

Schale , 13 Bytes

↑10fȯ=13ΣdfṗN

Probieren Sie es online!

Erläuterung

            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.

Fast auf 10 Bytes golfen, aber eines der Ergebnisse ist falsch :( tio.run/##yygtzv7//1HbREODtPxDyywftU04sqHg/38A
Leo

@Leo Heh, wäre sehr ordentlich, wenn das funktioniert :)
Martin Ender

6

Haskell , 77 71 Bytes

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

Probieren Sie es online!

6 Bytes dank Laikoni gespart

Für 71 Bytes:

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

Alle Ihre Nummern müssen <2038074743 sein

1999999999 ist die Zahl mit der maximalen Anzahl von Stellen im zulässigen Bereich, und diese Summe beträgt 82. Alle Programme, die mehr als 82 Byte umfassen, erfüllen die Bedingung nicht. Ich hoffe, dass 77 Bytes in Ordnung sind, aber ich weiß es nicht (es läuft immer noch auf meinem Computer).

EDIT: Eine leicht optimierte Version ergab für 77 Bytes:

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

6

Jelly ,  14  13 Bytes

DS⁼13
.ȷÆRÇÐf

Probieren Sie es online!

Wie?

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 Bytes

83LØʒSOTQ}

Probieren Sie es online!

Das }wird als Füllzeichen verwendet, da 9 eine ungültige Byteanzahl ist.

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

Erläuterung

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

Fast 8 Bytes

Dies wäre gültig, wenn ein weiteres Byte abgeschaltet werden könnte.

žyLØʒSO8Q

Probieren Sie es online!

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

Erläuterung

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

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

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

Danke an @Kein Baum für -6 Bytes


1
Sie können sagen, Selectwie viele Dinge Sie zurückgeben möchten:Select[Prime@Range[10^6],Tr@IntegerDigits@#==52&,10]
Kein Baum

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

2

J, 29 Bytes

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

Probieren Sie es online!

Funktioniert definitiv mit der REPL, funktioniert wahrscheinlich auch mit einem regulären Programm (nicht sicher, wie J die Ausgabe ausführt, um ehrlich zu sein).

Erster Durchgang, nicht besonders ideal, aber ich kann mir keine klügeren Ansätze vorstellen. Wir werden untersuchen, wie man eine kleinere Sequenz hartcodiert.

Erläuterung

(#~(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 garantiert, dass nur die ersten 10 Primzahlen mit einer digitalen Summe von 29 verwendet werden.


2

V , 73 71 Bytes

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

Probieren Sie es online!

Einfache Komprimierung der Ersetzung von Teilzeichenfolgen - Ich habe alle möglichen Antwortausgaben überprüft und dann einige Tests durchgeführt, bei denen "eine einfache Ersetzung von Zeichenfolgen verwendet wird, die die meisten Zeichen spart". zB diese Tabelle erzeugen . [edit: Ich schaute noch einmal auf den Tisch und sah, dass ich stattdessen die 71-Byte-Version machen könnte].

Die höheren Primzahlen enthalten mehr lange Reihen von 9 Zeichen, und das Beste, was ich gefunden habe, war, dass die Ziffern 73 ergeben. Das Muster 89999 -> 1 Zeichen verringert den Text von 99 Byte auf 63 Byte. Die Suche nach einem Weg, 'a' -> '89999' in den verbleibenden 10 Bytes rückgängig zu machen, führte mich zu V.


1

Japt , 19 Bytes

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

Probier es aus


Explantaion

L²õ

Generieren Sie ein Array von Ganzzahlen õ( L) im Quadrat von 1 bis 100 ( ).

f_          Ã

Filter ( f) durchläuft jeweils eine Funktion, wobei Zdas aktuelle Element ist.

j

Überprüfen Sie, ob Zes sich um eine Primzahl handelt.

©

Logisches UND ( &&).

Zìx

In Zein Array von Ziffern aufteilen ( ì) und durch Addition reduzieren ( x).

¥19

Prüfen Sie auf Gleichheit mit 19.

¯A

Slice ( ¯) bis zum 10. Element und gibt das resultierende Array implizit aus.


1

Japt , 19 Bytes

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

Probieren Sie es online! mit dem -QFlag, um das Array zu formatieren.

Gibt die ersten 10 Primzahlen aus, deren Ziffern addieren zu 19:

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

Beachten Sie, dass dies auf 18 Bytes ( ì xìx) beschränkt sein kann, aber keine Primzahlen mit einer Ziffernsumme von 18 existieren.

Erläuterung

Ordnen Sie das Array [0, ..., 9]mit der folgenden Funktion zu, wobei Xder aktuelle Wert ist.

  _              }a

Geben Sie die erste Ganzzahl zurück, die true aus der folgenden Funktion zurückgibt. Dabei Zhandelt es sich um den aktuellen Wert

   j ©

Überprüfen Sie, ob diese Zahl Primzahl ist, und ...

      19¥Zì x

Die Summe ( x) der Ziffern ( ì) in Zequals ( ¥) 19,

              «X´

Und Xist falsch ( «ist "und nicht", oder &&!). Dies dekrementiert auch X( ´).

Das resultierende Array wird implizit ausgegeben.


Oh schön; Wir haben mit unterschiedlichen Ansätzen gearbeitet.
Shaggy

1

PARI / GP, 40 Bytes

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

Nicht viel Golf (wählen Sie die xmit der Summe der Ziffern 40 unter den ersten 8600 Primzahlen). Ausgabe ist:

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


1

Ruby 2.4.1, 74 Bytes

Ich würde nie eine der Codegolf-optimierten Sprachen schlagen, aber es hat trotzdem Spaß gemacht, es in Ruby zu machen. Es ist frustrierend, dass Prime nicht in Core, sondern in der Standardbibliothek enthalten ist. Ich bin auch frustriert, dass ich Haskell nicht schlagen kann.

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 Byte (CP-1252)

5h¶fφTBŠT=

Probieren Sie es 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

Etwas fraglich, da alle Zahlen ohne Trennzeichen gedruckt werden. Ein 11-Byte-Programm, das jede Zahl in einer eigenen Zeile ausgibt:

nIè¶fφTBŠE=

Erwähnenswert ist nur die Obergrenze, die etwas schwieriger zu konstruieren ist: 18² = 324.


0

Bubblegum , 37 Bytes

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

Probieren Sie es online!

Ausgabe ist 29989,39799,39979,48799,48889,49789,56989,58699,58789,58897

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.