Boa noite, senhoras e senhores.
Hoje à noite - temos um desafio de código. Uma competição que será definida não na quantidade de pontos (à la Asteroids), mas simplesmente se você pode finalizá-la (à la Zelda). E para fins de comparação, a quantidade de bytes (uh ... mas você disse ...).
Seu desafio é compor um quine único que seja compilado no WhiteSpace e em qualquer outro idioma de sua escolha. Ambos os quines devem ter saída absolutamente idêntica (que como um quine é absolutamente idêntica ao código-fonte). Seu quine deve ter mais de 3 bytes de comprimento.
Sua pontuação é do tamanho do seu código-fonte em bytes.
Dado que esse desafio envolve o WhiteSpace, escape de suas respostas para que elas sejam claras - de preferência no estilo C. Sua pontuação é a fonte original em bytes - não a versão escapada.
Boa sorte.
Respostas:
Espaço em branco e Perl,
992975 caracteresBoa noite, senhoras e senhores.
Para começar, aqui está o meu envio codificado em base64, que considero a melhor maneira de comunicar um grande programa de espaço em branco. (Você realmente não deseja usar uma codificação que deixe espaço em branco como está, por isso não faz sentido selecionar algo mais "legível".)
Aqui está um trecho que destaca todas as partes visíveis da fonte.
⇥
é usado para indicar uma guia e↲
para indicar uma nova linha.Perl foi a escolha natural para a segunda língua neste desafio, sendo uma das melhores linguagens de uso geral para escrever quines compactos. Meu menor Perl quine é de 19 bytes:
- e você pode ver como foi a semente para a metade Perl do quine duplo. Meu melhor quine de espaço em branco, em comparação, tem 541 bytes. (Embora os mais curtos existam - 445 bytes é o melhor que eu já vi.)
Do ponto de vista do interpretador Perl, a primeira linha do arquivo de origem do double quine contém as duas instruções que compõem todo o programa, pois o conteúdo restante são duas seqüências de caracteres entre aspas. A primeira string é a linha repetida do Perl e é delimitada pela terceira linha em branco. A segunda string é toda em branco e é executada da quarta linha da fonte até o
0
delimitador na parte inferior do arquivo.Quando consideradas como um programa de espaço em branco, as quatro primeiras linhas contêm três instruções que são amplamente inúteis. (O efeito deles é colocar dois valores zero na pilha e depois descartar o segundo.) Eles são incluídos apenas para passar com segurança pelas novas linhas que o programa Perl exige - o programa real inicia depois disso. Em vez de citar mais a fonte ilegível, aqui está uma paráfrase das instruções que compõem o programa Whitespace, em um formato de montagem:
Os números gigantes no topo são o que os usuários do Whitespace precisam usar em vez de strings reais. Não se preocupe em tentar executar isso em um intérprete de espaço em branco que não tenha o suporte adequado de bignum.
Finalmente, aqui está o programa novamente, mas desta vez com escapes no estilo C, uma vez que foi solicitado especificamente:
fonte