Tarefa
Sua tarefa é imprimir ou imprimir todos os números positivos nos quais cada substring de vários dígitos em sua representação decimal também é primo. Se o número tiver pelo menos 2 dígitos, isso implicaria que o próprio número também precisa ser primo.
Exemplo
6197
está na sequência porque cada vários dígitos substr na6197
for primo, ou seja:61
,19
,97
,619
,197
,6197
(si).- Observe que
6
não é primo, mas6197
ainda está na sequência porque6
não é uma substring de vários dígitos6197
. 8
também está na sequência, porque cada substring de vários dígitos8
é primo. Não há substring de vários dígitos8
, portanto, este é um caso de verdade vazia .
Especificações
- As brechas padrão se aplicam, exceto que você tem permissão para codificar a saída ou armazenar informações relacionadas à saída em seu programa.
- Os números na saída podem estar em qualquer ordem .
- Os números na saída podem ter duplicatas.
- Você pode usar qualquer separador , se optar por imprimir em vez de imprimir.
- Você tem permissão para prefixar e / ou postfix a saída, se optar por imprimir em vez da saída.
- O separador e o prefixo e o postfix não podem conter dígitos (U + 0030 a U + 0039).
Lista completa (58 itens)
1
2
3
4
5
6
7
8
9
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
113
131
137
173
179
197
311
313
317
373
379
419
431
479
613
617
619
673
719
797
971
1373
3137
3797
6131
6173
6197
9719
Referência
- OEIS A131648 (lista incompleta)
Como sempre, sinta-se à vontade para abordar nos comentários qualquer coisa que eu deva esclarecer.
Respostas:
Braquilog , 18 bytes
Experimente online!
Então ... eu estou pronto para a "recompensa" ? : D
fonte
05AB1E ,
1513 bytesCódigo:
Explicação:
Usa a codificação CP-1252 . Experimente online! (pode demorar alguns segundos).
fonte
Brachylog ,
1817151615 bytesExperimente online!
-1 byte após uma discussão com Fatalize me inspirou a ver o que acontece se eu trocar o
l
e o<
resto.Esse predicado gera a saída através da variável de entrada, desde que a variável de saída seja deixada sem restrição. Como duplicatas são permitidas, cada número é gerado com multiplicidade igual a 2 à potência do número de seus dígitos, que são números primos.
Versões mais antigas:
fonte
8ḟ⟦₁{sᶠ{Ḋ|ṗ}ᵐ&}ˢ
Braquilog , 18 bytes
Outra solução Brachylog. Eu não conseguia ficar mais curto que a solução Brachylog de Erik The Outgolfer; é exatamente o mesmo comprimento, mas se aproxima da geração na direção oposta.
Parece que Unrelated String venceu isso por muitos personagens, a quem eu parabenizo.
Explicação:
Experimente online!
fonte
Gelatina , 17 bytes
Minha primeira resposta Jelly! Guardado 3 bytes graças a @Leaky Nun !
Experimente online
Explicação:
fonte
RÇÐf
pode ser substituído porÇ€T
.ṖÐfḌÆP€
pode ser substituído porḌḟDÆP
.Java 8, 182 bytes
Resposta C (gcc) do porto de gastropner , por isso não deixe de votar em sua resposta!
Experimente online.
Explicação:
fonte
PowerShell v2 +,
107104 bytesAtenção: Kinda Slow
Faz um loop de
11
até1e4
(ou seja,10000
) e extrai números usando oWhere-Object
seletor (|?{...}
). A cláusula é de dois componentes - os primeiros loops do11
número atual e os utilizamWhere-Object
para extrair os números que formam uma subcadeia do número atual (por meio do-match
operador regex). Armazenamos essas substrings em$x
. A segunda parte percorre$x
e usaWhere-Object
para retirar todos os números primos usando o regex principal . Em seguida, analisamos os.count
dois e a verificação é realmente se esses são-eq
ual. Por exemplo,971
terá$x = (71,97,971)
e cada um deles é primo, assim3-eq3
é$TRUE
e, portanto971
, será selecionado.Esse resultado é concatenado com um intervalo
1..10
. A matriz resultante é deixada no pipeline e a saída é implícita, com uma nova linha entre os elementos por padrão.fonte
Japonês , 15 bytes
Teste-o
fonte
C (gcc) ,
144142140136134132 bytes-2 graças a Kevin Cruijssen. -2 graças a ceilingcat
... E inspirados nisso, podemos obter outros 2 bytes a partir do loop for.
Também descaradamente cortou o melhor verificador principal da resposta de Kevin Cruijssen para mais -4.
Experimente online!
fonte
||n<10
pode ser|n<10
efor(n=1;n<1e4;n++)
pode serfor(n=0;++n<1e4;)
de -2 bytes.Malbolge Unshackled (variante de rotação de 20 trit), bytes 2.5254e7 ou 1.9809e7 bytes
O tamanho desta resposta excede o tamanho máximo do programa postável (eh); portanto, o código está localizado no meu repositório GitHub (nota: não copie o código usando CTRL + A e CTRL + C, basta clicar com o botão direito e clicar em "Salvar elemento de destino como. .. ").
Como executar isso?
Isso pode ser uma parte complicada, porque o intérprete ingênuo de Haskell levará anos e anos para executá-lo. O TIO possui um intérprete decente do Malbogle Unshackled, mas, infelizmente, não poderei usá-lo (limitações).
O melhor que eu pude encontrar é a variante fixa de largura de rotação de 20 trit, com um desempenho muito bom.
Para tornar o intérprete um pouco mais rápido, removi todas as verificações do interpretador Malbolge Unshackled de Matthias Lutter.
Notas de desempenho
O aplicativo foi executado cerca de 40 minutos na minha máquina, produzindo números HEX da sequência. Parei em torno de uma hora de cálculos e terminou em 0x11.
Note que esta resposta difere da minha outra, porque esta realmente calcula os números e pode ser feita para calculá-los indefinidamente.
O aplicativo aloca o buffer de spinup, com cerca de 7 gigabytes de tamanho, para preparar melhor sua RAM grátis.
Variante alternativa
A variante alternativa usa cerca de 2 gigabytes de memória a menos, mas produz a saída na forma de caracteres ASCII (0 = ASCII (0x0), 10 = nova linha, etc ...) e está disponível aqui . Porém, não compete, devido a requisitos desafiadores
fonte
Python 3 , 118 bytes
Experimente online!
Explicação
Aviso: nenhuma string real envolvida nesta solução.
fonte
Ruby, 81 + 8 = 89 bytes
+8 bytes para
-rprime
.Veja em repl.it: https://repl.it/CniR/2
fonte
Perl 6 ,
47 4443 bytesExplicação:
fonte
C #,
261249247 bytesEconomizou 12 bytes graças a Leaky Nun
Isso compila para um
Func<List<int>>
.A versão formatada se parece com:
fonte
false
outrue
, use0>1
e #0<1
Swift 4 , 144 bytes
Experimente online!
Explicação
fonte
JavaScript (Node.js) , 130 bytes
se eu posso assumir pilha infinita
i*i<=n&&
pode ser removido ei*i>n
voltas parai>=n
o que reduz o código por 9 bytes e talvez converter principal função recursiva: https://tio.run/##LYpBDoIwEEX33AMyAxVbXUmccgX2xkWDRYeQaSPqyrvXkrj5ef/lze7j1vHJ8bWTcPMpTQRMWjm6XJFs0/DZ@EM/ASunBmCsKtfG9/rIiJ0rIoEoJpNbKXPdx@1jx5akGEiytqdNYp2nNFr / wR @ xHkD2Rn81dpLGIGtYfLuEO0yAmH4 (119 bytes)Experimente online!
fonte
Malbolge , 1361 bytes
Versão simples e chata. Exibe números do mais alto.
Experimente online!
fonte
TI-83/84 BASIC, 124 bytes
Loops sobre os primeiros 10k números inteiros. Configura um contador em N para verificar cada primo de substring e int (log (A recupera um a menos do que o número de dígitos no número atual. Em seguida, separamos esse número em uma segunda variável, para que possamos avançar P em cada comprimento substring com pelo menos 2 dígitos. 10 ^ ... e AnsfPart (iPart (,,, gera a substring atual para verificar a primalidade, as 3 linhas a seguir fazem a verificação de primalidade como 1 ou 0 em Ans. Se a substring não for primária) , incrementamos N e, depois de todas as substrings serem verificadas, se N ainda é 0, imprimimos o número atual.
Possivelmente alguns ajustes poderiam ser feitos para aumentar a eficiência da verificação de primalidade nesse teste? Estou feliz por ter encontrado um algoritmo em menos bytes do que armazenando a saída diretamente na formatação da TI-83!
fonte
Python 3.8 (pré-lançamento) , 194 bytes
Experimente online!
fonte
PHP , 135 bytes
Experimente online!
fonte