Ausgehend von einer Reihe positiver Ganzzahlen geben Sie eine stabile Reihe der unterschiedlichen Primfaktoren dieser Ganzzahlen aus. Mit anderen Worten, für jede Ganzzahl in der Eingabe in der angegebenen Reihenfolge müssen die Primfaktoren abgerufen, sortiert und alle Primzahlen, die noch nicht in der Ausgabe enthalten sind, an die Ausgabe angehängt werden.
Testfälle
[1,2,3,4,5,6,7,8,9,10] -> [2,3,5,7]
[10,9,8,7,6,5,4,3,2,1] -> [2,5,3,7]
[100,99,98,1,2,3,4,5] -> [2,5,3,11,7]
[541,60,19,17,22] -> [541,2,3,5,19,17,11]
[1,1,2,3,5,8,13,21,34,45] -> [2,3,5,13,7,17]
[6,7,6,7,6,7,6,5] -> [2,3,7,5]
[1] -> []
[8] -> [2]
[] -> []
Die Ausgabe kann als Array oder Liste von Ganzzahlen oder Zeichenfolgen, als begrenzte Ausgabe oder als andere Standardmethode zum Ausgeben einer geordneten Liste von Zahlen erfolgen.
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
code-golf
array-manipulation
primes
Stephen
quelle
quelle
Antworten:
05AB1E , 3 Bytes
Ausgabe als Liste von Strings.
Probieren Sie es online!
2sable , 3 Bytes
Ja, das funktioniert auch in 2sable. Gibt auch eine Liste von Strings zurück.
Probieren Sie es online!
quelle
f U
. Liebe es.Schale , 3 Bytes
1 Byte gespart dank @Zgarb .
Probieren Sie es online!
Erläuterung
quelle
Σ†
kann seinṁ
.Bash + GNU-Dienstprogramme, 37
Probieren Sie es online aus .
quelle
nl|sort|...
kann getan werden mitawk
:awk '!a[$0]++'
(Drucken, wenn nicht zuvor gesehen; damit die Bestellung nie verloren geht), Einsparung von 15 Bytes. Dann kann dersed
Befehl mit einem etwas längeren Befehl entfernt werdenawk
:factor|awk '!/:/&&!a[$0]++' RS='[ \n]+'
(Aufteilen von Datensätzen auf Leerzeichen und Zeilenumbrüche, Überspringen von Datensätzen mit:
), Speichern weiterer 4 Bytes.tr
factor|tr \ \\n|awk '!/:/&&!a[$0]++'
MATL , 6 Bytes
Probieren Sie es online!
Erläuterung:
Interessante MATL-Leckerbissen: Generell lassen sich alle Funktionen genauso einfach auf Vektoren (Arrays) anwenden. Aber in diesem Fall ist die Anzahl der Faktoren für jede Eingabe variabel, und Matlab und damit auch MATL befassen sich im Allgemeinen nur mit quadratischen Matrizen, sodass ich eine for-Schleife verwenden musste
"
.Darüber hinaus verfügt MATL über zwei Hauptverkettungsoperatoren:
h
undv
horizontale und vertikale Verkettung. Ihr Verhalten unterscheidet sich erheblich:v
Verkettet den gesamten Stapel, auch wenn er nur ein Element enthält, wie in unserer ersten Iteration.h
Nimmt genau zwei Elemente und schlägt fehl, wenn nur eines vorhanden ist, was es für diese Anwendung ungeeignet macht.quelle
Brachylog , 6 Bytes
Probieren Sie es online!
Brachylog , 6 Bytes
Probieren Sie es online!
Erläuterung
quelle
Pyth ,
54 BytesProbieren Sie es hier aus! oder Überprüfen Sie alle Testfälle.
Alternative:
{sPM
Erläuterung
quelle
PowerShell , 102 Byte
Probieren Sie es online!
(Idee zur Faktorisierung von Ausleihen aus TessellatingHecklers Antwort über "Lass dich hinter mich, Satan-Prime!")
Übernimmt die Eingabe als Literal-Array
$x
. Erstellt ein neues leeres Array$a
. Schleifen vorbei$x
. Bei jeder Iteration durchlaufen wir eine Schleife2
bis zur aktuellen Zahl, prüfen, ob es sich um einen-and
Primfaktor handelt,|sort
geben diesen als Ergebnis aus und hängen ihn an$a
. Wenn wir gehen durch getan$x
, wir geben dann$a
aber|select
nur die-u
nique Zahlen davon. Dies nutzt die Tatsache aus, dass die Eindeutigkeit von links nach rechts erfolgt, wobei das erste Vorkommen beibehalten wird, das mit der Problembeschreibung übereinstimmt. Diese Zahlen verbleiben in der Pipeline und die Ausgabe ist implizit.quelle
CJam, 11 Bytes
Funktion, die ein Array von Eingaben annimmt und ein Array von Eingaben ausgibt.
Testversion
quelle
S*
in die Klammer ein.Gaia , 4 Bytes
Probieren Sie es online!
Erläuterung
quelle
Gelee ,
54 Bytes1 Byte dank klatschen.
Probieren Sie es online!
quelle
Æf
, damit Sie wahrscheinlich ein Byte mitÆfFQ
Pyke , 4 Bytes
Probieren Sie es hier aus!
Erläuterung
quelle
Mathematica, 64 Bytes
Eingang
quelle
Select[#&@@@Gather[#&@@@Join@@FactorInteger@#],#>1&]&
Haskell, 77 Bytes
Erläuterung:
x!y
Operator gibt eine Liste aller Primfaktoren zurückx
, die größer oder gleich sindy
(!2)
Funktion gibt eine Liste aller Primfaktoren ihres Arguments zurückProbieren Sie es online aus.
quelle
Brachylog , 6 Bytes
Probieren Sie es online!
Erläuterung
quelle
[10,9,8,7,6,5,4,3,2,1]
. Es sollte[2, 5, 3, 7]
nicht sein[2, 3, 5, 7]
ḋᵐoᵐcd
Ohm v2 , 3 Bytes
Noch ein 3-Byte (dank Sprachen mit automatischer Vektorisierung).
Probieren Sie es online!
Erläuterung
quelle
Japt , 6 Bytes
Probier es aus
Erläuterung
Implizite Eingabe eines Arrays
U
. Map (m
) darüber, um die Faktoren (k
) jedes Elements zu erhalten. Flatten (c
), erhält die eindeutigen Elemente (â
) und gibt sie implizit aus.quelle
Python 3 ,
128 125116 BytesDies ist eine reine Python-Lösung. Keine Pakete. Vielen Dank an Halvard für das Speichern von 9 Bytes.
Probieren Sie es online!
Python 2 ,
133 127126 BytesProbieren Sie es online!
Python 2 ,
142 138134 BytesProbieren Sie es online!
Sehr überrascht, dass es noch keine Python-Antwort gab. Golf spielen.
quelle
Deorst , 16 Bytes
Probieren Sie es online!
Fertig mit Hilfe von @cairdcoinheringaahing im Deorst-Chatroom (beachten Sie, dass die Lösungen unterschiedlich sind).
Erläuterung
quelle
Deorst , 16 Bytes
Probieren Sie es online!
Mit Hilfe von @ Mr.Xcoder erledigt. Für eine Pseudogolf-Sprache ist das viel zu lang.
Wie es funktioniert
quelle
Pyke , 4 Bytes
Probieren Sie es hier aus!
quelle
Oktave, 61 Bytes
Probieren Sie es online!
quelle
MY, 17 Bytes
Probieren Sie es online!
Wie?
⎕
ausgewertete EingabeḊ
Teiler (vektorisiert / spezifiziert)ḟ
ebnen’⊢f(‘
dekrementieren, filtern, inkrementieren (entfernt1
)53ǵ'
Die Zeichenfolge'P'
in der MY-Codepage, bei der es sich um einen Primärtest handelt. Leider0x35=53
ist es die 16. Primzahl, und es gibt keinen Befehl,16
um zum Stapel> _ <zu gelangen.ƒ
als eine Funktionf(
danach filternū
eindeutig machen←
Ausgabequelle
C ++, 118 Bytes
Muss die Eingabe in a übergeben werden
std::vector<int>
, gibt eine anderestd::vector<int>
für die Ausgabe zurück.quelle
J, 10 Bytes
Ich bin sicher, dass ein kluger J-er dies verkürzen könnte.
quelle
Eigentlich 5 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Python 2,
88119103 BytesAuf geht's. Mit der richtigen Sortierung.
Anscheinend kann ich es nicht auf TIO zum Laufen bringen, weil das Paket nicht unterstützt wird. Es läuft auf meiner Maschine. Hier sind meine Testausgaben:
Irgendwie konnte ich die Funktion nicht als Lambda-Funktion ausführen. Immer wenn ich versuche, das Listenverständnis zurückzugeben, wird [None, None, ...] zurückgegeben. Wenn ich nur etwas übersehen habe, könnte jemand auf diesen Fehler hinweisen? Danke für die Rückmeldung!
Bearbeiten:
Mit dem Sortieralgorithmus von Mr. Xcoder konnte ich den Code um 16 Bytes reduzieren. Danke für diesen Teil.
quelle
[2, 5, 3, 7]
. Die Reihenfolge der Ausgänge ist wichtig.sorted(set().union(*map(primefac,l)))
s.append(x) for
->s.append(x)for
,primefac(i)) for
->primefac(i))for
,[]) if
->[])if
Braingolf, 7 bytes
Try it online!
Oh look, it's basically a chain of 4 built-ins
Explanation
quelle
[10,9,8,7,6,5,4,3,2,1]
. - The order matters: you should return[2, 5, 3, 7]
instead of[2, 3, 5, 7]
.K
only makes harm here.APL (Dyalog Extended), 4 bytesSBCS
Try it online!
quelle