Man betrachte eine Primzahl p , die in der Basis 10 geschrieben ist. Der Speicher von p ist definiert als die Anzahl verschiedener Primzahlen, die streng kleiner als p sind und als Teilzeichenfolgen von p enthalten sind .
Herausforderung
Wenn eine nicht negative ganze Zahl n als Eingabe gegeben wird, finde die kleinste Primzahl p, so dass p den Speicher n hat . Das heißt, finden Sie die kleinste Primzahl mit genau n verschiedenen streng weniger Primzahlen als Teilzeichenfolgen.
Eingang
Die Eingabe kann über jedes Standardformat erfolgen. Sie müssen die Eingabe bis zum größten n unterstützen , damit die Ausgabe nicht überläuft. Als Referenz ist 4294967291 die größte Primzahl in 32 Bits.
Ausgabe
Die Ausgabe kann in STDOUT geschrieben oder von einer Funktion zurückgegeben werden.
Beispiele
Die Nummer 2 hat Speicher 0, da sie keine streng kleineren Primzahlen als Teilzeichenfolgen enthält.
Die Zahl 113 ist die kleinste Primzahl mit Speicher 3. Die Zahlen 3, 13 und 11 sind die einzigen Primteilzeichenfolgen, und keine Primzahl kleiner als 113 enthält genau 3 Primzahlen als Teilzeichenfolgen.
Die ersten 10 Terme der Sequenz, die mit n = 0 beginnen, sind
2, 13, 23, 113, 137, 1237, 1733, 1373, 12373, 11317
Hinweis
Dies ist A079397 in OEIS.
Bestenliste
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>
Antworten:
Pyth, 22 Bytes
Demonstration , Testgeschirr
Erläuterung:
quelle
P_Y
undP_T
statt}YPY
und}TPT
damals?CJam,
333130 BytesDies ist ein vollständiges Programm, das die Eingabe als Befehlszeilenargument liest.
Probieren Sie es online im CJam-Interpreter aus .
Testlauf
Wie es funktioniert
quelle
CJam, 40 Bytes
Probieren Sie es online aus
Ich bin mir sicher, dass dies ein großer Schock ist, aber es ist in der Tat länger als die Lösung, die Dennis gepostet hat. Naja, nicht wirklich, da ich selbst keine großen Hoffnungen hatte. Aber ich wollte es trotzdem versuchen. Und da es funktioniert, für mich ziemlich vernünftig aussieht und ich glaube, es ist ausreichend anders, um zumindest von Interesse zu sein, dachte ich, ich würde es trotzdem posten.
Die Grundidee hier ist, dass ich eine Liste von Primzahlen in einer Schleife erstelle und der Liste in jedem Schritt die nächstgrößere Primzahl hinzufüge. Um auf Terminierung zu prüfen, zähle ich, wie viele andere Elemente als das letzte Element in der Liste eine Teilzeichenfolge des letzten Elements sind. Wenn diese Anzahl der Eingabe entspricht
n
, sind wir fertig.Erläuterung:
quelle
Pyth - 25 Bytes
Geschachtelter Filter, inner, um den Speicher zu berechnen, äußer, um zuerst den Speicher zu finden, der benötigt wird.
Test Suite .
quelle
r2T
statttStT
Oktave / Matlab, 126 Bytes
Probieren Sie es online aus
quelle
JavaScript ES6, 106 Bytes
Hier ist eine ungolfed Version mit Erklärung:
Natürlich wird das ziemlich schnell schrecklich langsam. Das OP hat jedoch erklärt, dass es keine zeitliche Begrenzung gibt.
quelle
a
undi%c
Überprüfung auf Primität. Sie könnten zwei Bytes sparen, indem Sie,{return i}else{a.push(i)}
wiereturn i;else a.push(i)
ich glaube, auch anonyme Funktionen zulassen, wodurch am Anfang zwei weitere Bytes gespart würden.if...else
Logik zu entfernen, indem ich sie in eine for-Schleife einpacke.i++
mit kombiniereni%c
?a
und der nächste Aufruf den falschen Werti
hat. Wenn wir beispielsweise 10 Primzahlen gefunden haben, wird dies für jede Iteration der äußeren Schleife 10 Mal iteriert.Brachylog (2), 12 Bytes, Sprachnachstellung
Probieren Sie es online!
Früher waren es 13 Bytes,
ᶠd
aber jetzt wurde eine Abkürzung verwendetᵘ
, die es auf 12 reduziert. Da die Sprache die Herausforderung sowieso datiert und die Funktion nicht speziell für diese Herausforderung hinzugefügt wurde, kann ich das auch benutze es.Wie in Brachylog üblich, ist dies eine Funktion, kein vollständiges Programm.
Erläuterung
Dies gibt uns die kleinste Primzahl mit der gewünschten Eigenschaft, da zuerst
≜
Werte nahe 0 überprüft werden.quelle
Python 2,
163154 BytesIch bin zu müde, um Golf zu spielen. Hoffentlich kann ich das verbessern, wenn ich morgen aufwache.
quelle
Julia, 86 Bytes
Es ist praktisch selbsterklärend. Durchlaufen Sie alle positiven Ganzzahlen und addieren Sie jedes Mal, wenn eine Primzahl gefunden wird, ein boolesches Array, das angibt, ob die Menge der Primzahlen, die kleiner als die aktuelle ist, Teilzeichenfolgen der aktuellen sind. Wenn es eine mit der erforderlichen Anzahl von Übereinstimmungen findet, geben Sie diesen Wert zurück.
Die Laufzeit wird für n = 11 langsam, und wahrscheinlich für die meisten Werte über 11 - speziell bei meinem Laptop dauert n = 11 ungefähr 33 Sekunden.
quelle
2^63
ergibt sich0
, dass JuliaInt32
auf 32-Bit-Systemen standardmäßig ganzzahlige Literale verwendet - sic!). Die kürzeste Zeit, um die Lösung auf einem 32-Bit-System zum Laufen zu bringenfor i=1:uint(-1)
, wäre dann, aber es kostet 2 Bytes mehr. Es ist jedoch schwierig, Golf-Lösungen auf allen Plattformen zu testen, also +1.Haskell,
149147144 Bytes(127 Bytes ohne
import
Deklaration).Die obige Ausgabe wurde mit der längeren Definition erzeugt
Die neue, 3 Zeichen kürzere Definition ist viel langsamer, ich konnte nur 5 erste Zahlen in der Sequenz erhalten, bevor ich die Geduld verlor und abbrach.
quelle
Haskell ,
119118 BytesProbieren Sie es online! Verbrauch:
f 3
Erträge113
.quelle
PHP, 124 Bytes
Nimmt Eingaben vom Kommandozeilenargument entgegen; renn mit
-r
.Nervenzusammenbruch
quelle
Python 2 , 108 Bytes
Probieren Sie es online!
quelle