Escreva dois fragmentos de código, que chamaremos de s_zero e s_one.
O programa (l, n) consiste em l cópias de s_zero e s_one correspondentes aos dígitos de n em binário, preenchidos com s_zero à esquerda.
Por exemplo, se s_zero = foo
e s_one =, bar
então
Programa (4, 0) = foofoofoofoo
Programa (4, 1) = foofoofoobar
Programa (4, 2) = foofoobarfoo
etc.
O programa (l, n) deve imprimir a fonte do programa (l, (n + 1) mod (2 ^ l)) para sair do padrão. No exemplo acima, foobarfoofoo
deve-se imprimir foobarfoobar
quando executado.
Sua pontuação é a soma dos comprimentos dos fragmentos s_zero e s_one
code-golf
quine
source-layout
QuadmasterXLII
fonte
fonte
Respostas:
CJam, 29 + 29 = 58 bytes
O código 0:
O código 1:
Explicação
fonte
CJam, 47 + 47 = 94 bytes
O código 0:
O código 1:
Desculpe o palavrão.
Tenho certeza de que ainda posso cortar alguns bytes por lá. Acrescentarei uma explicação assim que decidir que não posso mais me dar ao trabalho de jogar golfe.
Teste aqui.
fonte
CJam, 45 + 45 = 90 bytes
O código 0 :
O código 1 :
Explicação em breve.
Experimente online aqui
fonte
GolfScript, 37 + 37 = 74 bytes
Não é tão curto quanto a solução CJam do user23013 , mas achei que iria postar isso de qualquer maneira, apenas para (marginalmente) aumentar a diversidade dos idiomas usados.
Minha solução não se baseia diretamente em nenhuma das soluções existentes (e, de fato, não as examinei em detalhes, pois ainda não leio muito bem o CJam), mas todas elas apresentam variantes da mesma estrutura básica de quine (
{".~"}.~
em GolfScript,{"_~"}_~
em CJam). Isso não é realmente muito surpreendente, pois parece ser uma das maneiras mais eficientes de escrever um quine com uma carga arbitrária nesses idiomas.Não gosto muito de várias partes desse código e suspeito que talvez seja possível jogar mais, mas passei muito tempo nisso.
fonte