Bei einer großen Anzahl (in Basis 10), z. B. 1234567891011121314151617, finden Sie darin "Primzahlen".
Eine Primzahl "Subnummer" ist eine aufeinanderfolgende Folge von Ziffern (aus der Eingabe entnommen), die eine Primzahl (in Basis 10) darstellt.
- Eingabe : Eine Zahl (entweder eine Zeichenfolge, eine Datei oder was auch immer Sie möchten).
- Ausgabe : Alle primären Subnummern sind irgendwie getrennt (entweder in einer Liste, einer Datei, durch Kommas getrennte Zeichenfolgen ...). Wenn das Ergebnis leer ist, können Sie eine beliebige Konvention verwenden (fest codierte Zeichenfolge, leere Zeichenfolge, Kauderwelsch, aber das Programm sollte dies nicht tun) Absturz.
- Beispiel
1234 -> 2, 3, 23
6542 -> 5, 2
14 -> [.. leere Ausgabe]
Das ist Code-Golf. Das kürzeste Programm gewinnt!
[bearbeiten]: zusätzliche Regel, Programm muss erklärt werden! Nicht jeder spricht fließend Jelly :)
Antworten:
05AB1E (Legacy) , 3 Bytes
Probieren Sie es online aus!
Teilzeichenfolgen der Eingabe, die prim sind.
quelle
Perl 6 , 28 Bytes
Probieren Sie es online aus!
Das
:ex
("erschöpfende") Flag für den Übereinstimmungsoperator bewirkt,m
dass jede mögliche Übereinstimmung.+
(dh jede Teilzeichenfolge mit einem oder mehreren Zeichen) zurückgegeben wird, auch überlappende. Der Hyperoperator wandelt+«
diese Liste vonMatch
Objekten in Zahlen um, die dann nach Primität gefiltert werdengrep &is-prime
.quelle
{+«m:ex/(.+)<?{$0.is-prime}>/}
Brachylog , 4 Bytes
-1 Byte dank Kroppeb .
Probieren Sie es online aus!
ᶠ
s
Wählen Sie in allen Zeichenfolgenˢ
dieṗ
Reimequelle
sᶠṗˢ
ist ein Byte kürzer. Es findet alle Teilzeichenfolgen und gibt diejenigen zurück, die Primzahlen sind. Siehe hier codegolf.stackexchange.com/a/117871/81957Python 2 ,
6665 BytesProbieren Sie es online aus!
quelle
while k<=n
oder, um 0 Bytes zu kosten,while~n+k
while
Anweisung erklären ? Ich habe diese Art von Codes noch nie gesehen. Auch nicht gesehen, Verwendung von `` , was es tut?while stmt:
wird ausgeführt, solangestmt
ein Wert vorliegt, der von Python als wahr angesehen wird. Die einzige falsche Ganzzahl in Python ist0
. Daher wird der Code als ausgeführt~n+k != 0
.~
ist der bitweise Komplementoperator und~n
entspricht äquivalent zu-n - 1
.~n + k != 0
<=>-n - 1 + k != 0
<=>k != n + 1
. Da wir Inkrementierenk
von1
in jedem Betrieb,k != n + 1
ist in diesem Fall entsprichtk <= n
.`n`
ist das gleiche wierepr(n)
in Python 2. (funktioniert nicht in Python 3).Japt ,
1310 BytesDanke @Shaggy -3 Bytes
Probieren Sie es online aus!
quelle
Gelee ,
54 Bytes-1 danke an Kevin Cruijssen (
Ẓ
ist ein Alias fürÆP
)Ein monadischer Link, der eine Liste von Ziffern * akzeptiert, die eine Liste von Primzahlen ergibt.
* Gehen Sie zu "entweder einer Zeichenfolge, einer Datei oder was auch immer Sie möchten" - um eine Ganzzahl zu verwenden, stellen Sie dem Code ein Präfix voran
D
Probieren Sie es online aus!
Wie?
quelle
ÆP
kann sein,Ẓ
wenn ich mich nicht irre?Java 8,
148147 BytesProbieren Sie es online aus.
Erläuterung:
quelle
MATL , 9 Bytes
Probieren Sie es online aus!
Erläuterung
quelle
Bash + GNU Core Utils:
8077 BytesDies kann nicht der kürzeste sein, aber ich habe Probleme, etwas Besseres zu finden. Stellenangebote!
Wenn ich mich nur an POSIX halte, bekomme ich 82:
quelle
R , 60 Bytes
Probieren Sie es online aus!
Nicht wirklich effizient, inspiriert von der Antwort von @ovs Python 2
quelle
Python 2 ,
115114 BytesProbieren Sie es online aus!
quelle
if~-n*all(n%i for i in range(2,n))
spart 4.Schale , 5 Bytes
Probieren Sie es online aus!
quelle
Sauber , 108 Bytes
Probieren Sie es online aus!
quelle
Pyth, 8 Bytes
Testsuite
Nimmt die Eingabe als Zeichenfolge und gibt eine Liste von Ganzzahlen aus. Kann auch als Eingabe eingegeben
Erläuterung:int
werden, indem`
am Ende ein zusätzliches Byte hinzugefügt wird .Und
`
konvertiert einfachint
zustr
.quelle
Wolfram Language (Mathematica) , 40 Bytes
Probieren Sie es online aus!
Eingabe und Ausgabe sind Listen von Ziffern. Wenn keine Hauptunternummern vorhanden sind, wird die leere Liste
{}
zurückgegeben.Verwendet
@*
fürComposition
Funktionen.Subsequences
gibt eine Liste aller Teilsequenzen der Eingabe an undSelect[PrimeQ@*FromDigits]
ist eine Operatorform,Select
die eine Liste aller ElementePrimeQ@*FromDigits
zurückgibt, für die zurückgegeben wirdTrue
.quelle
Matlab, 89 Bytes
Probieren Sie es online aus!
quelle