Código + dados quines
A estrutura mais geral para um quine se parece com esse pseudocódigo:
data = " uma versão escapada de todo o programa,
com essa string substituída por um marcador "
program = data.replace (
uma expressão que é avaliada para o marcador, mas não menciona ,
escapado (dados))
programa de impressão;
Essa estrutura pode ser usada para escrever um quine (bastante ingênuo) na maioria dos idiomas. No entanto, ele tende a pontuar bastante na maioria dos sistemas de pontuação, porque você precisa escrever a totalidade do programa duas vezes. No entanto, a maioria das estruturas quine pode ser considerada otimização dessa.
Existem algumas sutilezas nisso. Em alguns idiomas, a parte mais difícil de executar esta operação é escrever o código de escape; em muitas línguas, produzir o marcador sem mencionar seu nome é difícil; e em algumas linguagens esotéricas, você terá que inventar seu próprio tipo de literal de string. Todas as três operações tendem a não causar muitos problemas, no entanto.
Por exemplo, podemos escrever uma coluna Python escapando de uma string usando repr
e usando a sequência de 2 x"
caracteres (que é representável como "x\""
, ou seja, não usando a sequência x"
na representação de string da própria string) como marcador:
d='d=x"\nprint(str.replace(d,"x\\"",repr(d)))'
print(str.replace(d,"x\"",repr(d)))