Une autre séquence, un autre défi. *
Définition
Un nombre premier p
est dans cette séquence, appelons-le A
, ssi pour chaque chiffre d
dans p
l'expansion décimale de, vous remplacez d
par des d
copies de d
et l'entier résultant est toujours premier; les zéros ne sont pas autorisés.
Par exemple, 11
est trivialement dans cette séquence (c'est le premier nombre, soit dit en passant). Le suivant dans la séquence est 31
, car 3331
est également premier; puis 53
parce que 55555333
c'est aussi premier, et ainsi de suite.
Défi
Étant donné une entrée n
, retournez A(n)
, c'est-à-dire le n
e élément de cette séquence.
Exemples
Voici les 20 premiers termes pour vous aider à démarrer. C'est A057628 sur OEIS.
11, 31, 53, 131, 149, 223, 283, 311, 313, 331, 397, 463, 641, 691, 937, 941, 1439, 1511, 1741, 1871
Cela signifie A(0) = 11
, A(1) = 31
etc., lorsque vous utilisez l'indexation zéro.
Règles
- Vous pouvez choisir une indexation à zéro ou à base unique; veuillez préciser dans votre réponse laquelle.
- Au lieu de renvoyer uniquement le
n
e élément, vous pouvez choisir de renvoyer les premiersn
termes. - Vous pouvez supposer que l'entrée / sortie ne sera pas supérieure au format entier natif de votre langue; cependant, le nombre premier répété peut être plus grand que le format natif de votre langue, il faudra donc en tenir compte.
- Par exemple,
1871
le dernier nombre d'exemples a un nombre premier correspondant de18888888877777771
, qui est un peu plus grand que l'INT32 standard. - Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
- La sortie peut être vers la console, renvoyée par une fonction, affichée dans une fenêtre d'alerte, etc.
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
* Pour être honnête, j'avais trouvé les premiers termes de la séquence en jouant avec quelques chiffres, puis je suis allé à OEIS pour obtenir le reste de la séquence.
la source
169
lui-même n'est pas premier, il l'est13 * 13
.Réponses:
Husk , 15 octets
Essayez-le en ligne!
Erik l'Outgolfer a enregistré un octet. Utiliser
ṗ
au lieu deεp
sauverait un autre octet, mais cela rend le programme si lent qu'il multiplie notre pair pour n = 2.la source
ṗ
dans l'interprète, c'est fou comment c'est plus lent que de trouver tous les facteurs premiers ...05AB1E ,
1413 octets-1 octet grâce à Emigna !
Essayez-le en ligne!
Explication
la source
Gelée ,
1814 octetsEssayez-le en ligne!
M. Xcoder: -1 octet (tout logique)
Erik the Outgolfer: -2 octets (une ligne au lieu de deux)
HyperNeutrino: -1 octet (retourne les n premiers éléments de la séquence)
Explication
Edit: initialement soumis une réponse qui comprenait des nombres avec 0 dans sa représentation décimale qui n'est spécifiquement pas autorisée.
la source
Wolfram Language (Mathematica) , 100 octets
Essayez-le en ligne!
Jonathan Frech a économisé 3 octets
et -7 octets de JungHwan Min
-15 octets de Martin Ender
merci aussi à Jenny Mathy
la source
Alice ,
7270666256 octetsMerci à Leo d'avoir économisé 5 octets.
Essayez-le en ligne!
Utilise une entrée basée sur 1.
Explication
L'astuce de golf neatest ici (même si elle enregistre seulement quelques octets) est que j'utilise un test de primalité qui donne
0
pour la composition n pour lan
non-composite n . De cette façon, nous n'avons pas à utiliser le résultat directement dans un conditionnel, mais nous pouvons le passer directement à la partie suivante qui vérifie que l'entrée ne contient pas de zéros.la source
Python 2 , 130 octets
Essayez-le en ligne!
Python 2 ,
195179167140138136135134 octetsxrange
au lieu derange
, ainsi contourner aMemoryError
et compacter la fonction principale; l'amélioration du comptage d'indices entiers.|
pour économiser des octetsor
.~-
au lieu de0**
pour inverser l'existence d'un zéro dansj
,&
suivi d'un vrai booléen, isole la propriété booléenne de cette valeur.~-A&B&C
(équivalent à(not A) and B and C
) enA, B, C
étant booléenA<B==C
.Essayez-le en ligne! (1 index)
Explication
Définit une fonction principale
f
qui prend un index entiern
, et une valeur définie par défautj
, la séquence en cours canditate (intitulée9
pour améliorer les performances tout en conservant la taille du programme) et une fonction de vérification principale.Tant qu'il
n
est différent de zéro, l'n
entrée de séquence -th n'est pas encore trouvée. Ilj
est donc incrémenté etn
décrémenté d'une unité sij
un nombre satisfait les propriétés requises.Lorsque la boucle se termine,
j
c'est lan
-ième entrée de séquence et donc imprimée.la source
Pyth , 21 octets
Essayez-le ici!
Assez long car Pyth n'a pas d' expansion décimale intégrée.
.f
), qui:.AKjZT
), et (&
) ...*VK`Z
), réunis et convertis en un entier (ss
) sont prime (P_
) et (&
) ...P_
).la source
e
selon une nouvelle modification de règle.Perl 6 , 51 octets
Essayez-le en ligne!
grep {...}, 2..*
filtre la séquence infinie de nombres naturels à partir de 2 en utilisant la fonction de prédicat entre les accolades.(...)[$_]
indexe dans cette liste filtrée en utilisant l'argument de la fonction$_
.!/0/
filtre les nombres qui contiennent un chiffre zéro.S:g/./{$/ x $/}/
reproduit chaque chiffre dans l'expansion décimale du numéro de test.is-prime $_ & S:g/./{$/ x $/}/
appelle lais-prime
fonction intégrée avec une jonction et$_
, le numéro de test et le numéro résultant de la réplication de ses chiffres. La fonction retournera true si les deux membres de la jonction and sont premiers.la source
J, 81 octets
C'est une de ces situations pour lesquelles je n'ai pas encore trouvé de bonne solution J.
Néanmoins, je poste ceci dans l'espoir d'apprendre quelque chose de nouveau.
f
nous indique si un nombre donné est un "nombre premier répété". Il se décompose comme suit:Et enfin le principal Do ... Bien que le verbe, avec son passe-partout embêtant et apparemment inévitable, qui découle du fait que nous devons utiliser une liste pour stocker nos progrès, ce qui nécessite à la fois des registres "actuels" et "trouvés jusqu'à présent" , puisque notre argument de gauche est déjà pris pour stocker la condition d'arrêt, c'est-à-dire
n
. Cela signifie que nous devons utiliser de nombreux octets précieux pour la tâche simple de spécifier args ([
et]
) et de décompresser notre liste de 2 éléments ({.
et{:
):Essayez-le en ligne!
la source
f
la fonction d'aide entre parenthèses. De plus, j'ai essayé de jouer à la fonction d'aide et j'ai trouvé ce qui1 p:('x',~"."0#])&.":
, malheureusement, n'exclut pas avec succès des nombres premiers avec «0». Avez-vous des pensées? Il faut aussi avoir la'x',~
pièce pour obtenir une précision supplémentaire ...(((0>.-)((*&(1&p:)0&e.|10#.#~),.&.":))([,(+*)~)])/^:_@,&2
, utilisez10x
pour étendre la plage sinon n = 15 sautera 937