Considérons un nombre premier p , écrit en base 10. La mémoire de p est définie comme le nombre de nombres premiers distincts strictement inférieurs à p qui sont contenus en tant que sous-chaînes de p .
Défi
Soit un entier non négatif n comme entrée, trouvez le plus petit nombre premier p tel que p ait la mémoire n . C'est-à-dire que vous trouvez le plus petit nombre premier avec exactement n distincts de nombres premiers strictement inférieurs comme sous-chaînes.
Contribution
L'entrée peut être prise à travers n'importe quel format standard. Vous devez prendre en charge l’entrée jusqu’au n le plus grand, de sorte que la sortie ne déborde pas. Pour référence, 4294967291 est le plus grand nombre premier en 32 bits.
Sortie
La sortie peut être écrite dans STDOUT ou renvoyée par une fonction.
Exemples
Le nombre 2 a la mémoire 0 puisqu'il ne contient pas de nombres premiers strictement inférieurs en tant que sous-chaînes.
Le nombre 113 est le plus petit nombre premier de la mémoire 3. Les nombres 3, 13 et 11 sont les seules sous-chaînes principales et aucun nombre premier inférieur à 113 ne contient exactement 3 nombres premiers en tant que sous-chaînes.
Les 10 premiers termes de la suite, commençant par n = 0, sont
2, 13, 23, 113, 137, 1237, 1733, 1373, 12373, 11317
Remarque
C'est A079397 dans OEIS.
Classement
var QUESTION_ID=55406,OVERRIDE_USER=20469;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Réponses:
Pyth, 22 octets
Démonstration , test harnais
Explication:
la source
P_Y
etP_T
au lieu de}YPY
et}TPT
à l'époque?CJam,
333130 octetsC'est un programme complet qui lit l'entrée en tant qu'argument de ligne de commande.
Essayez-le en ligne dans l' interprète CJam .
Essai
Comment ça marche
la source
CJam, 40 octets
Essayez-le en ligne
Je suis sûr que cela vient comme un choc, mais c'est en fait plus long que la solution affichée par Dennis. Eh bien, pas vraiment, car je n’avais même pas de grands espoirs. Mais je voulais quand même tenter le coup. Et comme ça marche, ça me semble assez raisonnable et que je pense que c'est suffisamment différent pour au moins avoir un intérêt, j'ai pensé que je le posterais quand même.
L'idée de base ici est que je construis une liste de nombres premiers dans une boucle, en ajoutant le prochain nombre plus grand à la liste à chaque étape. Pour vérifier la fin, je compte combien d'éléments autres que le dernier élément de la liste constituent une sous-chaîne du dernier élément. Si ce nombre est égal à l'entrée
n
, nous avons terminé.Explication:
la source
Pyth - 25 octets
Filtre imbriqué, interne pour calculer la mémoire, externe pour rechercher en premier la mémoire requise.
Suite de test .
la source
r2T
au lieu detStT
Octave / Matlab, 126 octets
Essayez-le en ligne
la source
JavaScript ES6, 106 octets
Voici une version non-golfée avec explication:
Bien sûr, cela devient terriblement lent plutôt rapidement. Cependant, le PO a déclaré qu'il n'y avait pas de limite de temps.
la source
a
eti%c
vérification de la primauté. Vous pouvez économiser deux octets en passant{return i}else{a.push(i)}
àreturn i;else a.push(i)
Je pense que les fonctions anonymes sont également autorisées, ce qui économiserait deux octets supplémentaires au début.if...else
logique en l’enveloppant dans une boucle for.i++
aveci%c
?a
et le prochain appel aurait tort,i
par exemple, lorsque nous aurons trouvé 10 nombres premiers, nous itérerons 10 fois pour chaque itération de la boucle externe.Brachylog (2), 12 octets, défi linguistique après la date
Essayez-le en ligne!
C'était auparavant 13 octets, en utilisant
ᶠd
, mais on lui donne maintenant une abréviationᵘ
, ce qui la réduit à 12. Comme la langue postdate de toute façon le défi, et que cette fonctionnalité n'a pas été ajoutée pour ce défi en particulier, je peux aussi utilise le.Comme d'habitude dans Brachylog, il s'agit d'une fonction et non d'un programme complet.
Explication
Cela nous donne le plus petit nombre premier avec la propriété que nous voulons, car
≜
vérifie d'abord les valeurs proches de 0.la source
Python 2,
163154 octetsJe suis trop fatigué pour jouer au golf… Si tout va bien, quand je me lève demain, je peux améliorer ça.
la source
Julia, 86 octets
C'est pratiquement explicite. Boucle sur tous les entiers positifs, et chaque fois qu'un nombre premier est trouvé, additionnez un tableau booléen indiquant si l'ensemble des nombres premiers inférieurs au nombre actuel est des sous-chaînes de celui-ci. S'il en trouve une avec le nombre nécessaire de correspondances, renvoyez cette valeur.
Le temps d'exécution devient lent pour n = 11, et probablement pour la plupart des valeurs supérieures à 11 - spécifiquement, sur mon ordinateur portable, n = 11 prend environ 33 secondes.
la source
2^63
évaluée0
, comme Julia utiliseInt32
par défaut les littéraux entiers sur un système 32 bits - sic!). Le plus court idiome pour faire fonctionner la solution sur un système 32 bits seraitfor i=1:uint(-1)
alors, mais cela coûte 2 octets de plus. Cependant, il est difficile d’exiger de tester des solutions golfées sur toutes les plateformes, donc +1.Haskell,
149147144 octets(127 octets sans compter la
import
déclaration).La sortie ci-dessus a été produite avec la définition plus longue
La nouvelle définition, plus courte de 3 caractères, est beaucoup plus lente, je ne pouvais obtenir que 5 premiers nombres de la séquence avant de perdre patience et d’abandonner.
la source
Haskell ,
119118 octetsEssayez-le en ligne! Utilisation:
f 3
rendements113
.la source
PHP, 124 octets
prend en charge l'argument de la ligne de commande; courir avec
-r
.panne
la source
Python 2 , 108 octets
Essayez-le en ligne!
la source