Desafio
Neste desafio, você escreverá o primeiro programa, p 1 , de uma sequência infinita de programas, na qual executar p n gera / gera o programa p n + 1 . Ao concatenar os primeiros n> = 2 programas, a sequência deve ser exibida n
.
Exemplo
Digamos que os 4 primeiros programas sejam:
p1 p2 p3 p4
Se eu fosse executar p1
, ele deveria gerar :
p2
Se eu fosse executar p1p2
, ele deveria gerar :
2
Se eu fosse executá- p1p2p3p4
lo, deveria gerar :
4
Se eu fosse executar p4
, ele deveria gerar o próximo programa na sequência:
p5
Pontuação
Sua pontuação é a contagem de bytes dos primeiros 10
programas.
code-challenge
code-generation
Downgoat
fonte
fonte
p1p2p3...
sempre serão de p1 a pn ?Respostas:
Pyth, 12
p1:
p2:
1
p3:
1
etc ..
p1p2p3:
Saída:
3
Explicação:
Na primeira execução, isso gera o comprimento de uma única sequência de caracteres
1
,. Isso também é um programa Pyth válido, com saída1
novamente. Portanto, pn + 1 é sempre1
. Quando os programas são encadeados,p1
gera a duração dos programas encadeados, que serán
.fonte
Lua,
950900 bytesUngolfed:
Explicação:
A primeira linha pega toda a fonte do programa. Em seguida, comparamos a duração de todo o programa com 1 + a duração de um único programa. Se o tamanho do programa atual for menor que esse valor, a fonte será impressa, que é o próximo programa, p2, e sairemos. Cada iteração é apenas uma solução. Quando vários deles são reunidos, o condicional falha e imprimimos o tamanho do programa concatenado dividido pelo tamanho de um programa, que é o número de programas concatenados, n.
fonte
Vitsy , 19 bytes
Não lidando com strings aqui, mas usando truques de método.
p1
p2
p3
E assim por diante.
Explicação abaixo:
Experimente online!
fonte
Vitsy , 14 bytes
Semelhante às respostas de Pyth e Jolf, estou mapeando strings. A única diferença é que eu uso os recursos de quebra de linha para garantir sempre o comprimento certo.
p1
p2
Substitua 1 por qualquer número único.
p3 e assim por diante correspondem a esse padrão, e você pode fazer isso até
Integer.MAX_VALUE
a restrição de número inteiro do idioma.Explicação:
Experimente online!
fonte
Sério, 15 bytes
Primeiro programa, 6 bytes (contém um não imprimível):
Hex Dump:
Este programa imprime
1
: Experimente onlineO restante dos programas são todos
1
, um programa válido que se imprime exatamente como a resposta Pyth. O programa original imprime o comprimento do seu código-fonte menos 5 e termina imediatamente.1
s anexados ao final aumentam o comprimento do código fonte em 1 byte de cada vez, mas nunca são executados.fonte
Jolf , 14 bytes
Experimente aqui!
Quando executado, isso é impresso
1
. Assimp2 = 1
,. Executandop2
rendimentos1
. Assim, para todosN > 1
,pN = 1
.Observe
p1p2
:a-1q41
. Isso transpila para:Como a impressão implícita é desativada após a primeira impressão, ela é impressa
2
, pois o comprimento do código-fonte menos 4 é 2. E assim por diante.fonte
Ruby, 318 bytes
p 1 :
Cada programa p separado i saídas deste Quine de uma linha:
_="_=%p;puts _%%_";puts _%_
.Quando você adiciona esses quines ao final de p 1 , eles acabam como linhas no
DATA
objeto porque estão abaixo da mágica__END__
.Aqui está um teste:
Os dez primeiros programas concatenados têm a seguinte aparência (318 bytes):
fonte
C #, 2099 + 7 = 2106 bytes
Primeiro programa (usa sinalizador de compilador
/main:A
):Segundo programa:
Terceiro programa:
Você entendeu a ideia.
fonte
Javascript ES6, pontuação
483455Programa 1, 77 bytes:
Programa 2 e além, 42 bytes cada:
fonte
PHP, 1470 bytes
Programa 1: 219 bytes:
programa 2 e além de 139 bytes:
use como:
Utiliza uma versão ligeiramente modificada, a técnica php quine detalhada aqui: http://10types.co.uk/the-lab/a-minimal-php-quine/
fonte