Étant donné un tableau d'entiers positifs, affichez un tableau stable des facteurs premiers distincts de ces entiers. En d'autres termes, pour chaque entier de l'entrée dans l'ordre, obtenez ses facteurs premiers, triez-les et ajoutez à la sortie tous les nombres premiers qui ne sont pas déjà dans la sortie.
Cas de test
[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]
[] -> []
La sortie peut être un tableau ou une liste d'entiers ou de chaînes, une sortie délimitée ou tout autre moyen standard de sortie d'une liste ordonnée de nombres.
C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
code-golf
array-manipulation
primes
Stephen
la source
la source
Réponses:
05AB1E , 3 octets
Sorties sous forme de liste de chaînes.
Essayez-le en ligne!
2sable , 3 octets
Oui, cela fonctionne également dans 2sable. Renvoie également une liste de chaînes.
Essayez-le en ligne!
la source
f U
. Aimer.Husk , 3 octets
1 octet enregistré grâce à @Zgarb .
Essayez-le en ligne!
Explication
la source
Σ†
peut êtreṁ
.Utilitaires Bash + GNU, 37
Essayez-le en ligne .
la source
nl|sort|...
peut être fait en utilisantawk
:awk '!a[$0]++'
(imprimer s'il n'est pas vu auparavant, donc l'ordre n'est jamais perdu), en économisant 15 octets. Ensuite, lased
commande peut être éliminée en utilisant une commande légèrement plus longueawk
:factor|awk '!/:/&&!a[$0]++' RS='[ \n]+'
(fractionner les enregistrements sur les espaces et les sauts de ligne, sauter les enregistrements avec:
), en économisant encore 4 octets.tr
:factor|tr \ \\n|awk '!/:/&&!a[$0]++'
(c'est deux espaces après la première barre oblique inverse)MATL , 6 octets
Essayez-le en ligne!
Explication:
Quelques informations MATL intéressantes: généralement, toutes les fonctions s'appliquent aux vecteurs (tableaux) tout aussi facilement. Mais dans ce cas, le nombre de facteurs est variable pour chaque entrée, et Matlab et par extension MATL ne traitent généralement que des matrices carrées, j'ai donc dû utiliser une boucle for
"
.De plus, MATL a deux principaux opérateurs de concaténation:
h
etv
, la concaténation horizontale et verticale. Leur comportement diffère considérablement:v
concatène toute la pile, même si elle n'a qu'un seul élément comme lors de notre première itération.h
prend exactement deux éléments et échouera si un seul est présent, le rendant inapproprié pour cette application.la source
Brachylog , 6 octets
Essayez-le en ligne!
Brachylog , 6 octets
Essayez-le en ligne!
Explication
la source
Pyth ,
54 octetsEssayez-le ici! ou Vérifiez tous les cas de test.
Alternative:
{sPM
Explication
source
PowerShell , 102 octets
Essayez-le en ligne!
(Idée de factorisation des emprunts issue de la réponse de TessellatingHeckler sur "Mettez-vous derrière moi Satan-Prime!")
Prend l'entrée comme un tableau littéral
$x
. Crée un nouveau tableau vide$a
. Boucles$x
. À chaque itération, nous bouclons2
jusqu'au nombre actuel, vérifiant si c'est un facteur-and
premier, puis|sort
la sortie de celui-ci, et ajoutons-le à$a
. Lorsque nous aurons terminé en passant par$x
, nous avons alors sortie ,$a
mais|select
seulement-u
numéros de ceux - ci nique. Cela exploite le fait que l'unicité va de gauche à droite, en conservant la première occurrence, qui correspond à la description du problème. Ces chiffres sont laissés sur le pipeline et la sortie est implicite.source
CJam, 11 octets
Fonction qui prend un tableau d'ints et génère un tableau d'ints.
Version de test
source
S*
à l'intérieur du crochet de fermeture.Gaia , 4 octets
Essayez-le en ligne!
Explication
source
Gelée ,
54 octets1 octet grâce au clap.
Essayez-le en ligne!
source
Æf
, vous pouvez donc probablement laisser tomber un octet avecÆfFQ
Pyke , 4 octets
Essayez-le ici!
Explication
source
Mathematica, 64 octets
contribution
la source
Select[#&@@@Gather[#&@@@Join@@FactorInteger@#],#>1&]&
Haskell, 77 octets
Explication:
x!y
opérateur renvoie une liste de tous les facteurs premiersx
qui sont supérieurs ou égaux ày
(!2)
fonction renvoie une liste de tous les facteurs premiers de son argumentEssayez-le en ligne.
la source
Brachylog , 6 octets
Essayez-le en ligne!
Explication
la source
[10,9,8,7,6,5,4,3,2,1]
. Ce devrait être[2, 5, 3, 7]
, non[2, 3, 5, 7]
ḋᵐoᵐcd
Ohm v2 , 3 octets
Encore un 3 octets (grâce aux langages avec auto-vectorisation).
Essayez-le en ligne!
Explication
la source
Japt , 6 octets
Essaye-le
Explication
Entrée implicite du tableau
U
. Map (m
) dessus, obtenant les facteurs (k
) de chaque élément. Aplatir (c
), obtenir les éléments uniques (â
) et les afficher implicitement.la source
Python 3 ,
128 125116 octetsIl s'agit d'une pure solution Python. Pas de colis. Merci à Halvard d'avoir économisé 9 octets.
Essayez-le en ligne!
Python 2 ,
133 127126 octetsEssayez-le en ligne!
Python 2 ,
142 138134 134 octetsEssayez-le en ligne!
Très surpris qu'il n'y ait pas encore de réponse Python. Travailler sur le golf.
la source
Deorst , 16 octets
Essayez-le en ligne!
Fait avec l'aide de @cairdcoinheringaahing dans le salon de discussion Deorst (notez que les solutions sont différentes).
Explication
la source
Deorst , 16 octets
Essayez-le en ligne!
Fait avec l'aide de @ Mr.Xcoder. C'est beaucoup trop long pour un langage de pseudogolf.
Comment ça fonctionne
la source
Pyke , 4 octets
Essayez-le ici!
la source
Octave, 61 octets
Essayez-le en ligne!
la source
MY, 17 octets
Essayez-le en ligne!
Comment?
⎕
entrée évaluéeḊ
diviseurs (vectorise / précise)ḟ
aplatir’⊢f(‘
décrémenter, filtrer, incrémenter (supprime1
)53ǵ'
la chaîne'P'
dans la page de codes de MY, qui est un test de primalité. C'est malheureusement0x35=53
le 16e nombre premier, et il n'y a pas de commande pour pousser16
vers la pile> _ <.ƒ
en tant que fonctionf(
filtrer par çaū
unifier←
productionla source
C ++, 118 octets
Doit être passé l'entrée dans un
std::vector<int>
, renvoie un autrestd::vector<int>
pour la sortie.la source
J, 10 octets
Je suis sûr qu'un J-er intelligent pourrait raccourcir la durée.
la source
En fait , 5 octets
Essayez-le en ligne!
Explication:
la source
Python 2,
88119103 103 octetsEt c'est parti. Avec le bon tri.
Apparemment, je ne peux pas le faire fonctionner sur TIO, car le package n'est pas pris en charge. Il fonctionne sur ma machine. Voici mes sorties de test:
D'une certaine manière, je n'ai pas pu faire de la fonction une fonction lambda. Chaque fois que j'essaie de renvoyer la liste, elle renvoie [Aucun, Aucun, ...]. Si je néglige quelque chose, quelqu'un pourrait-il signaler cette erreur? Merci pour les commentaires!
Éditer:
En utilisant l'algorithme de tri de M. Xcoders, j'ai pu réduire le code de 16 octets. Merci pour cette partie.
la source
[2, 5, 3, 7]
. L'ordre des sorties est important.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
la source
[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!
la source