Um primo truncável à direita é um primo em que todo prefixo é um primo (na base 10). Um primo truncável à esquerda é exatamente o oposto, onde todo postfix é um primo (primos que começam com 0 não são permitidos). Ambas as seqüências são finitas (existem apenas 83 truncáveis à direita, enquanto existem 4260 truncáveis à esquerda).
Você precisa escrever um programa que aceite um único número como entrada e produz o n º privilegiada-truncatable. No entanto, quando o programa é lido para trás dispostos , deve produzir o n º deixou-truncatable prime.
Para organizar um programa para trás, dividimos o programa em palavras e depois invertemos a ordem das palavras. Uma palavra pode consistir em qualquer número de caracteres.
Por exemplo, se o seu programa foi o seguinte:
hello world
1234567890
Todos os itens a seguir seriam permitidos como possíveis acordos reversos:
Divisão em cada personagem:
0987654321
dlrow olleh
Divisão em espaço em branco:
1234567890
world hello
Divisão arbitrariamente (tubos adicionados para maior clareza):
hel|lo w|orld
1|23456|7|8|90
908723456orld
1lo whel
Ao organizar seu programa para trás, todos os espaços em branco devem ser considerados e revertidos, como qualquer outro caractere.
Entradas de teste de encaminhamento:
1: 2
2: 3
21: 379
60: 239933
83: 73939133
Entradas de teste para trás:
1: 2
2: 3
39: 647
187: 29173
4260: 357686312646216567629137
Os programas devem poder executar em um período de tempo razoável (menos de um minuto)
Este é um código de golfe , então o programa com o menor número de bytes vence!
fonte
lo w
éorld\n1
. A nova linha não termina o átomoRespostas:
Geléia ,
2623 bytesfrente
Experimente online!
Palavras
Ñ
¶
p
9
¶
7ÆR2ĿV€$ÆPÐf$ÐĿFị@
Para trás
Experimente online!
Palavras
7ÆR2ĿV€$ÆPÐf$ÐĿFị@
¶
9
p
¶
Ñ
Como funciona
Todos os programas Jelly consistem em links (funções de assumir as funções da Jelly), que são separados por feeds de linha ou pilcrows (
¶
). O último deles é o link principal ; é chamado automaticamente quando o programa é executado.O programa de encaminhamento funciona da seguinte maneira.
O programa anterior faz quase exatamente o mesmo; existem apenas duas diferenças.
O link principal é agora
Ñ
, que simplesmente chama o link abaixo (em volta), ou seja, o link principal do programa de encaminhamento.9p
em vez dep9
devolver o produto cartesiano invertido.fonte
Python 2,
143139 bytesConsiste em cinco partes:
I=1
a={2}…[~-n]
I=0
Então a reversão é apenas inverter o valor de
I
.Explicação
A função
f
executa uma pesquisa recursiva por primos truncáveis à esquerda (LTPs) ou primos truncáveis à direita (RTPs), dependendo do valor globalI
. Esses valores são adicionados ao conjuntoa
. Em seguida,lambda n:sorted(a)[~-n]
retorna on
-th.Vamos definir uma folha como um LTP, um RTP, algum dígito diferente de zero + um LTP ou um RTP + algum dígito diferente de zero. Esses são todos os valores que você
f
pode querer verificar quanto à primalidade.Eu projetei um teste de pseudoprime Fermat que funciona para todas as folhas:
(63973 é um número Carmichael .)
Se esse teste retornar verdadeiro,
z
deverá ser adicionado ao conjuntoa
e continuaremosstr(z)
. O código responsável é:Primeiro, queremos lidar com o caso
z == 2
. Fazemos isso simplesmente esquivando-o aqui e codificando2
quando definimos inicialmentea
! (Edição: E nada prejudicial acontece se também capturarmosz == 1
.) Portanto, podemos assumir issoz ≥ 3
agora.Eu traduzi alguns "e" s em uma comparação encadeada em curto-circuito: as três primeiras comparações precisam ter sucesso antes
a.add(z)
ef(u)
são avaliadas. Aqui estão todos os seus papéis:Reconhecimentos
u=[d+s,s+d][I]
→u=d[I:]+s+d*I
;z==2
→z<3
e o truque do mod 91 ). Obrigado!fonte