Código + datos quines
La estructura más general para una quine se parece a este pseudocódigo:
data = " una versión escapada de todo el programa,
con esta cadena reemplazada por un marcador "
programa = data.replace (
una expresión que evalúa el marcador pero no lo menciona ,
escapado (datos))
programa de impresión;
Esta estructura se puede usar para escribir una quine (bastante ingenua) en la mayoría de los idiomas. Sin embargo, tiende a obtener puntajes bastante malos en la mayoría de los sistemas de puntaje, ya que tiene que escribir la totalidad del programa dos veces. Sin embargo, la mayoría de las estructuras de quine pueden considerarse optimizaciones de esta.
Hay algunas sutilezas en esto. En algunos idiomas, la parte más difícil de realizar esta operación es escribir el código de escape; en muchos idiomas, es difícil producir el marcador sin mencionar su nombre; y en algunos lenguajes esotéricos, tendrás que inventar tu propio tipo de literal de cadena. Sin embargo, las tres operaciones tienden a no causar demasiados problemas.
Por ejemplo, podemos escribir una quine de Python escapando de una cadena usando repr
, y usando la x"
cadena de secuencia de 2 caracteres (que es representable como "x\""
, es decir, no usando la secuencia x"
en la representación de cadena de la cadena misma) como marcador:
d='d=x"\nprint(str.replace(d,"x\\"",repr(d)))'
print(str.replace(d,"x\"",repr(d)))