Sie haben den Tag mit Ihrem Prim-Sequence-Code gerettet , und der Mathematiklehrer war begeistert. So sehr, dass der Bibliothekar (a / k / a, Ihr Chef) vor eine neue Herausforderung gestellt wurde. Herzlichen Glückwunsch, Sie können die Lösung codieren, damit der Bibliothekar den Mathematiklehrer erneut beeindrucken kann.
Beginnen Sie mit der Folge natürlicher Zahlen in Basis 10, N
0, 1, 2, 3, 4, 5, 6 ...
Ohne 0und 1ist jede Zahl in dieser Folge entweder eine Primzahl, P
2, 3, 5, 7, 11, 13 ...
oder zusammengesetzt, C
4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20 ...
Der Mathematiklehrer dachte darüber nach, wie der Bibliothekar dachte, eine Ganzzahl in die Dezimalerweiterung einer Zahl aus P einzufügen , und erstellte stattdessen eine Funktion G (x, y) , die eine Zahl xaus N mit 1 <= x <= 9und eine Zahl yaus C nimmt und xin die einfügt Dezimalerweiterung yin jeder Position, von links nach rechts, wobei nur eindeutige Zahlen ausgewählt werden.
Zum Beispiel G (3,14) ist 314, 134, 143. Allerdings G (1.14) ist nur 114, 141als ob Sie voranstellen oder Einsatz der 1in 14die gleiche Anzahl 114erzeugt.
Der Mathematiklehrer fragte sich, wie oft Sie diese Permutationen durchführen müssten, bevor Sie eine Zahl in P erhalten , wenn Sie xin aufsteigender Reihenfolge vorgehen. Der Mathematiklehrer nannte dies den Composite-Prime-Index einer Zahl und schrieb ihn als CPI (y) .
Zum Beispiel 4muss nur zweimal getan werden: 14, 41Da 41Primzahl ist, so CPI (4) ist 2. Allerdings 8muss 6 mal durchgeführt werden, 18, 81, 28, 82, 38, 83vor dem Erreichen 83als Primzahl, so CPI (8) ist 6.
Ihre Aufgabe ist es, Code zu schreiben, der diesen Composite-Prime-Index mit einer eingegebenen Nummer ausgibt .
Eingang
- Eine einzelne Ganzzahl
y, z. B. yin C , die über das Funktionsargument STDIN oder ein Äquivalent eingegeben wird.
- Für die Zwecke der Berechnung können Sie davon ausgehen
y, dass sie in die üblichen ganzzahligen Bereiche passen (z. B. 2 31 -1 als Obergrenze annehmen ).
- Verhalten für
ynicht in C ist undefiniert.
Ausgabe
Der sich ergebende Composite-Prime-Index , der wie oben beschrieben berechnet wurde, wird mit zwei Ausnahmen an STDOUT oder einen gleichwertigen Index ausgegeben:
- Wenn die allerletzte Permutation (dh das Anhängen
9an y) diejenige ist, die zu einer Primzahl führt, wird ausgegeben -1. Ein Beispiel, das unten erweitert wird, ist y=14.
- Wenn es keine Permutation gibt (dh G (x, y) ist eine Teilmenge von C für alle
1 <= x <= 9), wird ausgegeben 0. Ein Beispiel, das unten erweitert wird, ist y=20.
Beispiele
y -> operations : output
4 -> 14, 41 : 2
6 -> 16, 61 : 2
8 -> 18, 81, 28, 82, 38, 83 : 6
9 -> 19 : 1
10 -> 110, 101 : 2
12 -> 112, 121, 212, 122, 312, 132, 123, 412, 142, 124, 512, 152, 125, 612, 162, 126, 712, 172, 127 : 19
14 -> 114, 141, 214, 124, 142, 314, 134, 143, 414, 144, 514, 154, 145, 614, 164, 146, 714, 174, 147, 814, 184, 148, 914, 194, 149 : -1
15 -> 115, 151 : 2
16 -> 116, 161, 216, 126, 162, 316, 136, 163 : 8
18 -> 118, 181 : 2
20 -> 120, 210, 201, 220, 202, 320, 230, 203, 420, 240, 204, 520, 250, 205, 620, 260, 206, 720, 270, 207, 820, 280, 208, 920, 290, 209 : 0
Beschränkungen
- Dies ist Codegolf, da Sie dies auf eine Karteikarte übertragen müssen, damit der Bibliothekar dem Mathematiklehrer zeigen kann, und Ihre Hand verkrampft sich leicht.
- Es gelten die üblichen Lückenbeschränkungen. Der Bibliothekar toleriert keine Betrüger.
Bestenliste
var QUESTION_ID=63191,OVERRIDE_USER=42963;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+(?:[.]\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>
19Primzahl, sollte die Ausgabe also nicht 1 sein?