Il s'agit de la séquence A054261 .
Le ème nombre de confinement premier est le plus petit nombre qui contient les premiers nombres premiers comme sous-chaînes. Par exemple, le nombre est le nombre le plus bas qui contient les 3 premiers nombres premiers comme sous-chaînes, ce qui en fait le 3ème nombre de confinement principal.
Il est trivial de comprendre que les quatre premiers nombres premiers de confinement sont , , et , mais cela devient plus intéressant. Étant donné que le premier nombre premier est 11, le numéro de confinement premier suivant n'est pas , mais il est car il est défini comme le plus petit nombre avec la propriété.
Cependant, le vrai défi vient quand vous allez au-delà de 11. Le prochain nombre de confinement principal est . Notez que dans ce nombre, les sous - chaînes et se chevauchent. Le nombre chevauche également le nombre .11
13
3
13
Il est facile de prouver que cette séquence est en augmentation, car le nombre suivant doit remplir tous les critères du nombre précédent et avoir une sous-chaîne de plus. Cependant, la séquence n'est pas strictement croissante, comme le montrent les résultats pour n=10
et n=11
.
Contribution
Un seul entier n>0
(je suppose que vous pourriez aussi l'avoir indexé 0, puis faire n>=0
)
Production
Soit le n
numéro de confinement principal, soit une liste contenant les n
premiers numéros de confinement principaux.
Les chiffres que j'ai trouvés jusqu'à présent sont les suivants:
1 => 2
2 => 23
3 => 235
4 => 2357
5 => 112357
6 => 113257
7 => 1131725
8 => 113171925
9 => 1131719235
10 => 113171923295
11 => 113171923295
12 => 1131719237295
Notez que n = 10
et n = 11
sont le même nombre, puisque est le nombre le plus bas qui contient tous les nombres , mais il contient également .
Puisqu'il s'agit du golf à code marqué, faites du golf! Les solutions de force brute sont autorisées, mais votre code doit fonctionner pour n'importe quelle entrée en théorie (ce qui signifie que vous ne pouvez pas simplement concaténer les n premiers nombres premiers). Bon golf!
P
opérateur crée-t-il un mappage explicite pour vérifier les nombres premiers dans le nombre (au lieu de vérifier si le nombre est dans le tableau des nombres premiers)? C'est une belle solution, je doute que vous puissiez faire n'importe quelle solution en utilisant moins de commandes.P
est un produit. Il multiplie essentiellement toutes les valeurs d'une liste. LeÅp
va créer une liste avec le premiern
nombre de nombres premiers, oùn
est l'entréeI
dans ce cas. Leå
vérifiera pour chaque nombre dans cette liste de nombres premiers s'ils sont dans le nombre actuel de la liste infinie, où il donnera1
pour véridique et0
pour falsey. Ainsi, le produit vérifie essentiellement si tous sont véridiques; si tous les nombres premiers sont à l'intérieur du nombre actuel. S'il y en a 0, leP
résultat est également falsey. Mais si tous le sont1
, lesP
résultats sont véridiques et la.Δ
boucle s'arrête.1µNIÅpåP
. Pour ceux qui ne connaissent pas 05AB1E, une explication pour la mienne aussi:1µ
- jusqu'à ce que la variable compteur atteigne 1 (elle commence à 0, augmentezN
progressivement de 1 et effectuez:NIÅpåP
- vérifiez si tous les premiers <input> premiers apparaissent dansN
et , si c'est le cas, incrémentez automatiquement la variable compteur. Renvoie la valeur finale de N.X
au lieu de1
, pour des raisons), mais je suis passé à cela car je n'ai jamais eu l'occasion de l'utiliser∞
auparavant :)Gelée , 11 octets
Essayez-le en ligne!
Force brute simple. Je ne sais pas exactement comment fonctionne l
#
'arité, il peut donc y avoir une marge d' amélioration.Comment ça marche
la source
wⱮẠ¥1#ÆN€
enregistre deux octets.Java 8, 143 octets
Essayez-le en ligne.
REMARQUES:
n=7
.n=9
raison de la taille limite deint
(maximum de2,147,483,647
).int
en along
, le maximum est augmenté à une sortie ci-dessous9,223,372,036,854,775,807
(environn=20
je pense?)java.math.BigInteger
le maximum peut être augmenté à n'importe quelle taille (en théorie), mais il sera d'environ +200 octets au moins en raison de la verbosité desjava.math.BigInteger
méthodes de.Explication:
la source
JavaScript (ES6),
105 ... 9291 octetsEssayez-le en ligne!
Comment?
Nous construisons récursivement une concaténation de conditions basée sur le premiern premiers nombres premiers:
On cherche alors le plus petitn tel que toutes les conditions soient fausses :
Commenté
la source
Rubis , 58 octets
Essayez-le en ligne!
Brute-force, fonctionne jusqu'à 7 sur TIO.
la source
Pyth , 14 octets
Extrêmement, extrêmement lent, expire pourn > 5 sur TIO.
Essayez-le en ligne!
Pyth , 15 octets
Légèrement plus rapide mais 1 octet de plus.
Essayez-le en ligne!
la source
Gelée , 14 octets
Essayez-le en ligne!
la source
Fusain , 42 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Construisez les
n
premiers nombres premiers par division d'essai de tous les entiers par tous les nombres premiers trouvés précédemment.Parcourez tous les entiers jusqu'à ce que nous en trouvions un qui contienne tous les nombres premiers sous forme de sous-chaînes.
Convertissez le résultat en chaîne et imprimez implicitement.
La vitesse du programme peut être doublée au prix d'un octet en remplaçant le dernier
≦⊕η
par≦⁺²η
mais elle est encore trop lente à calculern>6
.la source
Perl 6 ,
6359 octets-4 octets grâce à nwellnhof
Essayez-le en ligne!
Une solution de force brute qui expire sur TIO pour les nombres supérieurs à 5, mais je suis presque sûr que cela fonctionne correctement. Recherche le premier nombre positif qui contient les premiers
n
nombres premiers. Voici une solution qui n'expire pasn=6
.Explication:
la source
Python 2 , 131 octets
Essayez-le en ligne!
f
est la fonction.la source
Python 2 , 91 octets
Essayez-le en ligne!
la source
SAS, 149 octets
L'entrée est entrée après l'
cards;
instruction, comme ceci:Génère un jeu de données
p
, avec le résultatv
, avec une ligne de sortie pour chaque valeur d'entrée. Devrait techniquement fonctionner pour tous les cas de test donnés (l'entier max avec une précision totale dans SAS est 9,007,199,254,740,992), mais j'ai abandonné après l'avoir laissé réfléchir pendant 5 minutes sur n = 8.Explication:
la source
Haskell , 102 octets
Essayez-le en ligne!
Explication / Non golfé
Puisque nous avons déjà
Data.List
importé, nous pourrions aussi bien l'utiliser: au lieu du bon vieux,take n[p|p<-[2..],all((>0).mod p)[2..p-1]]
nous pouvons utiliser une autre façon de générer tous les nombres premiers dont nous avons besoin. À savoir, nous générons une quantité suffisante de composites et les utilisons avec(\\)
:Utiliserπ( n ) < n2Journal( n2) . Le reste n'est qu'une simple compréhension de liste:
n*n
suffit carla source
Japt,
2018 octetsLoin de mon meilleur travail, j'étais simplement heureux de le faire fonctionner après la journée que j'ai passée. Je suis sûr que je finirai par taper dans le boozer plus tard!
Essayez-le - il faut 13 secondes pour exécuter une entrée de
7
, jette un tremblement après cela (la version mise à jour craque5
pour moi, mais cela pourrait bien être mon téléphone).la source
F.h()
lui-même et il semble être cassé; ETH a dû changer quelque chose.