Considere um número primo p , escrito na base 10. A memória de p é definida como o número de primos distintos estritamente menores que p que estão contidos como substrings de p .
Desafio
Dado um número inteiro não negativo n como entrada, encontre o menor primo p tal que p tenha memória n . Ou seja, encontre o menor primo com exatamente n primos distintos estritamente menores como substrings.
Entrada
A entrada pode ser obtida através de qualquer formato padrão. Você deve suportar a entrada até o maior n , de forma que a saída não transborde. Para referência, 4294967291 é o maior número primo em 32 bits.
Saída
A saída pode ser gravada em STDOUT ou retornada de uma função.
Exemplos
O número 2 tem memória 0, pois não contém números primos estritamente menores como substrings.
O número 113 é o menor primo da memória 3. Os números 3, 13 e 11 são os únicos substrings primos e nenhum primo menor que 113 contém exatamente 3 primos como substrings.
Os 10 primeiros termos da sequência, começando com n = 0, são
2, 13, 23, 113, 137, 1237, 1733, 1373, 12373, 11317
Nota
Este é A079397 no OEIS.
Entre os melhores
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>
Respostas:
Pitão, 22 bytes
Demonstração , Arnês de Teste
Explicação:
fonte
P_Y
eP_T
, em vez de}YPY
e}TPT
naquela época?CJam,
333130 bytesEste é um programa completo que lê a entrada como um argumento da linha de comandos.
Experimente online no intérprete CJam .
Execução de teste
Como funciona
fonte
CJam, 40 bytes
Experimente online
Tenho certeza de que isso é um choque, mas na verdade é mais longo que a solução que Dennis postou. Bem, na verdade não, já que eu nem tinha grandes esperanças. Mas eu queria tentar de qualquer maneira. E, como está funcionando, parece bastante razoável para mim e acredito que seja suficientemente diferente para pelo menos ter algum interesse, pensei em publicá-lo de qualquer maneira.
A idéia básica aqui é que eu construa uma lista de números primos em um loop, adicionando o próximo número primo maior à lista em cada etapa. Para verificar a terminação, conto quantos elementos, exceto o último elemento da lista, são uma substring do último elemento. Se essa contagem for igual à entrada
n
, terminamos.Explicação:
fonte
Pitão - 25 bytes
Filtro aninhado, interno para calcular a memória, externo para localizar primeiro o que exigiu memória.
Conjunto de Teste .
fonte
r2T
em vez detStT
Oitava / Matlab, 126 bytes
Experimente online
fonte
JavaScript ES6, 106 bytes
Aqui está uma versão ungolfed com explicação:
É claro que isso fica terrivelmente lento e rapidamente. No entanto, o PO declarou que não há limite de tempo.
fonte
a
ei%c
verificação de excelência. Você pode salvar dois bytes mudando{return i}else{a.push(i)}
parareturn i;else a.push(i)
Creio que funções anônimas também são permitidas, o que salvaria mais dois bytes no início.if...else
lógica, envolvendo-a em um loop for.i++
comi%c
?a
e a próxima chamada teria o erro erradoi
, por exemplo, quando encontramos 10 primos, iteraria 10 vezes para cada iteração do loop externo.Brachylog (2), 12 bytes, desafio após a data do idioma
Experimente online!
Isso era 13 bytes anteriormente, usando
ᶠd
, mas agora é uma abreviaçãoᵘ
, reduzindo-a para 12. Como o idioma pós-data o desafio de qualquer maneira, e o recurso é um que não foi adicionado para esse desafio em particular, posso também use-o.Como é habitual no Brachylog, esta é uma função, não um programa completo.
Explicação
Isso nos dá o menor primo com a propriedade que queremos, porque
≜
verifica valores próximos a 0 primeiro.fonte
Python 2,
163154 bytesEstou cansado demais para jogar golfe. Espero que, quando acordo amanhã, possa melhorar isso.
fonte
Julia, 86 bytes
É praticamente auto-explicativo. Faça um loop sobre todos os números inteiros positivos e, cada vez que um primo for encontrado, some uma matriz booleana indicando se o conjunto de primos menor que o atual é substrings do atual. Se encontrar um com o número necessário de correspondências, retorne esse valor.
O tempo de execução fica lento para n = 11 e provavelmente para a maioria dos valores maiores que 11 - especificamente, no meu laptop, n = 11 leva cerca de 33 segundos.
fonte
2^63
avalia0
, como Julia usa o padrãoInt32
para literais inteiros no sistema de 32 bits - sic!). O idioma mais curto para fazer a solução funcionar no sistema de 32 bits seriafor i=1:uint(-1)
então, mas custa 2 bytes a mais. No entanto, é difícil exigir o teste de soluções de golfe em todas as plataformas, então +1.Haskell,
149147144 bytes(127 bytes sem contar a
import
declaração).A saída acima foi produzida com a definição mais longa
A nova definição, 3 caracteres mais curta, é muito mais lenta, eu só conseguia 5 primeiros números na sequência antes de perder a paciência e abortar.
fonte
Haskell ,
119118 bytesExperimente online! Uso:
f 3
rendimentos113
.fonte
PHP, 124 bytes
recebe entrada do argumento da linha de comando; corra com
-r
.demolir
fonte
Python 2 , 108 bytes
Experimente online!
fonte