Este é o PPCG Prime
624 dígitos
777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777111111111111111111111111111111111111111111111111111111111111111111111111111111188888888118888888811188888811188888811188111118818811111881881111881881111881188111118818811111881881111111881111111188888888118888888811881111111881118888188111111118811111111881111111881111881188111111118811111111881111881881111881188111111118811111111188888811188888811111111111111111111111111111111111111111111111111111111111111111111111111111111333333333333333333333333333333333333333
Se dividirmos a cada 39 dígitos, obtemos
777777777777777777777777777777777777777
777777777777777777777777777777777777777
777777777777777777777777777777777777777
777777777777777777777777777777777777777
111111111111111111111111111111111111111
111111111111111111111111111111111111111
188888888118888888811188888811188888811
188111118818811111881881111881881111881
188111118818811111881881111111881111111
188888888118888888811881111111881118888
188111111118811111111881111111881111881
188111111118811111111881111881881111881
188111111118811111111188888811188888811
111111111111111111111111111111111111111
111111111111111111111111111111111111111
333333333333333333333333333333333333333
Sua tarefa é produzir o PPCG-Prime
Este é o codegolf . O código mais curto em bytes vence.
Se você inserir o PPCG-Prime na função Mathematica abaixo, obterá este resultado
ArrayPlot@Partition[IntegerDigits@#,39]&
n
ser primo é proporcional a1/log(n)
, o que não é muito pequeno. Basta verificar muitos números até que seja primo.log(n)
é sobre1436.6
neste caso.x/logx
por GaussRespostas:
Geléia ,
5554524746 bytesExistem abordagens mais complicadas no histórico de revisões, mas essa simples supera todas elas.
Experimente online!
Como funciona
Este é um literal numérico, codificado na base bijetiva 250, onde os dígitos são retirados da página de código de Jelly. O argumento da cadeia (à esquerda) e o valor de retorno são definidos como o número inteiro codificado,
n: = 0x21871c77d7d7af6fafafeff0c37f72ff7fbfbdbfdfef5edfeff8e3 .
Um literal semelhante ao anterior, mas o segundo
“
separa dois números inteiros codificados. O valor retornado é substituído pelo array codificado, [777711, 113] .D
converte o valor de retorno em decimal ( [[7, 7, 7, 7, 1, 1], [1, 1, 3]] ) e depoisx39
repete cada número inteiro / dígito individual no resultado 39 vezes. Isso gera um par de matrizes, que contém os dígitos antes e depois do texto alto de 7 caracteres, respectivamente. Vamos chamar essa matriz A .Primeiro,
B
converte o argumento (esquerdo) n em binário. Isso gera os dígitos que formam o texto alto de 7 caracteres, onde cada 88 foi substituído por 0 .Em seguida,
j
ingressa na matriz A , usando a matriz binária como separador.Isso executa OR lógico com 88 , substituindo cada 0 por 88 .
Agora, temos os dígitos corretos, mas em uma matriz de 7 , 1 , 88 e 3 .
V
implicitamente transforma essa matriz em uma sequência e a avalia, produzindo um único número inteiro.fonte
Chiclete , 51 bytes
Experimente online!
fonte
SOGL V0.12 ,
5251 bytesgravatas chiclete!
note que esta resposta contém uma guia
Experimente aqui!
Tenta salvar bytes reutilizando a mesma sequência para os dois
P
.Explicação:
Os números são salvos a partir do original, começando no canto inferior esquerdo, subindo, depois 1 à direita e para baixo, depois para cima, ect.
Uma versão de compressão simples de 52 bytes:
Experimente aqui!
fonte
...‘
consegue esses números?...‘
?CG
ferramenta não é...‘
exibida em nenhuma parte dessa ferramenta.Mathematica, 107 bytes
Experimente online!
fonte
&
no final).CJam, ASCII, 61
Experimente online
Anexar
]s39/N*
para uma boa embalagem.Explicação:
fonte
C,
519427414396377 bytesAgradecimentos a Tas, Felix Palmen e Lynn.
Para seu interesse, aqui está uma versão mais longa e fácil de ler:
fonte
Java (OpenJDK 8) , 165 bytes
Experimente online!
Créditos
fonte
n->{for(int i=0;++i<566;)System.out.print(i<157?7:i>526?3:i<236|i>446||new java.math.BigInteger("vnku5g6l0zenpa1kydel5rxw162k4fk4xapa154o",36).testBit(446-i)?1:88);}
88
, obrigado!Retina , 129 bytes
Experimente online!
fonte
Lote,
364335333 bytesfonte
echo|
paracd|
(1,1,156) do
pode ser encurtado para(1,1,156)do
JavaScript (ES6),
187181 bytes-6 bytes graças a @JustinMariner
Abordagem super simples; provavelmente poderia ser jogado um pouco mais.
Explicação
Exemplo de trecho de código (com algum código auxiliar para adicionar quebras de linha na saída)
Mostrar snippet de código
fonte
r
comor=s=>s[0].repeat(39)
e em seguida, substituira
,b
ek
comr`7`
etc. Experimente online! .C (GCC) ,
269267 bytesfunção, usa RLE simples.
Experimente online!
fonte
L"'OP\x9c"
vez dex
C (gcc) , 224 bytes
Experimente online!
Contém alguns imprimíveis, a string literal é
"ww\x11dfFdfFDfFDfFDFDDFFDDFFDddDDFdDDddDDddDDDdDDDDffDffDFDDDFDfdDDDDFDDDdDDDdDDFdDDDDFDDDdDDFFDdDFDDDdDDDDdfDdfD\x11\x03"
.fonte
Geléia , 86 bytes
Experimente online!
-12 bytes graças a user202729
fonte
“
canseparates a list of strings inside a string literal
)Python 2 ,
309158155136 136135 bytesExperimente online!
Python 2 , 137 bytes
Experimente online!
fonte
Geléia , 85 bytes
Experimente online!
Com base na abordagem de Dennis ao desafio do Trinity Hall, menos a simetria, mais os valores iniciais
7
e finais3
.fonte
PowerShell , 164 bytes
Experimente online!
Multiplicação, concatenação e substituições de cadeias. O PowerShell não possui base 36 ou similar, portanto, as opções de compactação de número grande são limitadas. Pode haver uma maneira melhor de "comprimir" a parte do meio - ainda estou verificando isso.
fonte
Wolfram Language (Mathematica) , 89 (17 + 71 + 1) bytes
Primeiro você exporta o número para um arquivo GZIP. Este arquivo, denominado "o" sem extensão, terá exatamente 71 bytes, o que conta para o total. Por padrão, ele irá para o seu
$TemporaryDirectory
. Omitindo dígitos para facilitar a leitura.Então
irá reconstruir o número. O nome do arquivo é de um byte, e é daí que o +1 vem.
Experimente online!
fonte
Ruby, 109 bytes
O script chama
Zlib.inflate
para descompactar o número. Precisa de pelo menos Ruby 1.9.3. Ele contém bytes imprimíveis, então não posso colá-lo aqui.Eu colo a saída de
vis prime-inflate.rb
:Se você tiver unvis (1), execute
unvis prime-inflate.vis > prime-inflate.rb
para restaurar o script de 109 bytes. Ou você pode decodificar o Base64, abaixo, comruby -e 'print *STDIN.read.unpack(?m)' < prime-inflate.b64 > prime-inflate.rb
.Eu ligo
Zlib.inflate
para não precisar projetar e jogar com meu próprio algoritmo de descompressão. Eu usoDATA
com__END__
porque a sequência compactada não é válida UTF-8. O código Ruby deve ser ASCII válido (no Ruby 1.9.x) ou UTF-8 (do Ruby 2.0) ou ter um comentário mágico#coding:binary
para alterar a codificação, mas o Ruby não verifica a codificação depois__END__
.fonte
Python 2 , 112 bytes
Experimente online!
fonte
Código da máquina 6502 (C64),
142122 bytesDemonstração online
Uso:
sys49152
Explicação
Isso também usa os comprimentos das seqüências
1
e8
na parte do meio; como todos têm menos de 16 anos, dois deles são codificados por byte.Listagem de desmontagem comentada:
fonte
C (GCC) ,
188187185 bytes-1 graças a JonathanFrech.
-2 graças a ceilingcat.
Experimente online!
fonte
Python 2 ,
244128120 bytes-8 bytes graças a @JonathanFrech
Experimente online!
fonte
Befunge-93 , 500 bytes
Experimente online!
fonte