O que é uma praça principal?
Um quadrado principal é um quadrado em que todas as quatro arestas são números primos diferentes.
Mas quais?
E como os construímos?
Aqui está um exemplo de uma praça quadrada 4x4
1009
0 0
3 0
1021
Primeiro, partimos do canto superior esquerdo. Estamos trabalhando no sentido horário .
Escolhemos o menor número primo com 4
dígitos que é 1009 .
Então precisamos do menor número primo com 4
dígitos, que começa com a 9
. Isso é 9001
O terceiro número principal (de 4 dígitos) deve ter 1
como último dígito (porque 9001 termina com 1
)
e também o menor número primo de 4 dígitos com essa propriedade que nunca foi usada antes como aresta .
Este número primo é 1021
O quarto número primo deve ter 4
dígitos, comece com a 1
(porque 1009 começa com a 1
) e termine com a 1
(porque 1021 começa com a 1
)
O menor número primo de 4 dígitos com essa propriedade que nunca foi usado antes como aresta é 1031
Sua tarefa
Você receberá um número inteiro n
de 3 to 100
Este número será as dimensões do n x n
quadrado.
Em seguida, você deve enviar esse quadrado exatamente na forma dos seguintes casos de teste
Casos de teste
n=3
Output
101
3 0
113
n=5
Output
10007
0 0
0 0
9 0
10061
n=7
Output
1000003
0 0
0 0
0 0
0 0
8 1
1000037
n=10
Output
1000000007
0 0
0 0
0 0
0 0
0 0
0 0
1 0
8 0
1000000021
n=20
Output
10000000000000000051
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
9 8
10000000000000000097
- A entrada e a saída podem ser fornecidas por qualquer método conveniente .
- Você pode imprimi-lo em STDOUT ou retorná-lo como resultado de uma função.
- Um programa completo ou uma função são aceitáveis.
- Qualquer quantidade de espaço em branco estranho é aceitável, desde que os números sejam alinhados adequadamente
- As brechas padrão são proibidas.
- Isso é código-golfe, portanto todas as regras usuais de golfe se aplicam e o código mais curto (em bytes) vence.
EDIT
Isso é possível para todos n
Aqui estão os números primos paran=100
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000289
9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000711
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002191
E para aqueles que não acham que isso é possível, aqui estão TODOS os casos de teste
n
: P? Não é um problema com o desafio, apenas curioso.n
: paran
= 1, não podemos satisfazer a restrição de que as quatro arestas são primos diferentes, enquanto paran
= 2, somos forçados a escolher 11,13,23, momento em que a aresta final é 12 que é composto. Não tenho provas de que seja possível para todosn
> 2, mas ficaria chocado ao saber o contrário: informalmente, quanto mais dígitos houver, mais espaço de manobra haverá para satisfazer as restrições.n
existem pelo menos dois primos de comprimenton
começando com 1 e terminando com cada um desses dígitos (portanto, podemos escolher uma aresta inferior) e há pelo menos três primos começando com 1 e terminando com 1 (portanto, podemos escolher um borda esquerda).Respostas:
05AB1E ,
646356534846 bytes-1 byte graças a @ Mr.Xcoder
-5 bytes graças a @Grimy .
Explicação:
Veja este 05AB1E ponta do meu (seção Como comprimir grandes inteiros? ) Para entender por que
Ž9¦
é2460
. E veja esta minha dica 05AB1E para entender como o quadrado é gerado com oΛ
Canvas embutido.NĀiR}¦
I¯JŽ9¦SΛ
n=4
[1009,9001,1021,1031]
[1009,"001","201","301"]
Λ
I
¯J
"1009001201301"
n=4
Ž9¦S
[2,4,6,0]
[→,↓,←,↑]
fonte
4F°ÅP¯KIù.Δ1sЮθÅ¿Š®θÅ?Šθ)¯gè}©ˆ}ð¯2ô`€R«€¦J«Ž9¦SΛ
49:°ÅPIùć4FÐN1›iR}¦ˆθUKD.ΔÐθsXÅ?‚sXÅ¿ª¯gè]Ið¯J«Ž9¦SΛ
48:°ÅPIùćÐ4FˆθUKD.ΔÐθsXÅ?‚sXÅ¿ª¯gè}ÐNĀiR}¦}I¯JŽ9¦SΛ
ÐθsXÅ?‚sXÅ¿ª
paraθyXÅ?yXÅ¿)
. No)
entanto, não sei exatamente por que funciona no escopo do loop, já que eu esperava que ele envolvesse a lista principal também em sua lista na primeira iteração. Mas mesmo sem isso, o uso de emyy
vez deÐss
ainda economiza 1 byte. :)05AB1E ,
35333231 bytes-1 byte graças a Kevin Cruijssen
Experimente online!
Explicação:
fonte
Θ
atNΘ
. Somente1
é verdade em 05AB1E, portanto,if N
eif N == 1
são os mesmos.Θi
é o equivalente 05AB1E deif (cond == true)
...Θ
ainda pode ser útil se você deseja converter tudo, exceto1
para0
. Mas para a declaração ifi
, não é realmente necessário, assim como o seu pseudocódigo== true
.JavaScript (ES8),
205 ...18517717 bytesExperimente online!
Quão?
Etapa 1: computando os 4 números primos
Etapa 2: formatar a saída
fonte
Geléia ,
8982 bytesExperimente online!
Definitivamente poderia ser mais golfista, mas funciona de maneira eficiente para grandes números.
fonte
Gelatina , 59 bytes
Experimente online!
Resposta Jelly mais curta, mas muito menos eficiente.
fonte
JavaScript, 484 bytes
A última função sem nome retorna a arte ASCII.
Código original
Melhor e média complexidade de tempo: Ω (100 n n) na notação omega grande de Knuth (n etapas para subtrair n números de dígitos, 10 n subtrações por verificação de divisibilidade, 10 n verificação de divisibilidade para verificação principal e Ω (1) verificações principais realizadas )
Pior complexidade do tempo: Ω (1000 n n) na notação omega grande de Knuth (n etapas para subtrair n números de dígitos, 10 n subtrações por verificação de divisibilidade, 10 n verificação de divisibilidade para verificação principal e 10 n verificações principais realizadas).
Eu suspeito que
n=100
leva cerca de 10 203 cálculos.Nota: Validei a sintaxe usando o UglifyJS 3, e foi muito melhor do que eu, economizando 47,13% a mais e ganhando 282 bytes. No entanto, decidi não fazer dessa a minha pontuação, pois sinto que está trapaceando.
Ele apenas excluiu a última função, pois eles nunca são usados. Na verdade, ficou pior se foi atribuído e não excluído, incluindo o código adicional que adicionei.
fonte