Codice + dati interrogati
La struttura più generale per un quine assomiglia a questo pseudocodice:
data = " una versione con escape dell'intero programma,
con questa stringa sostituita da un marcatore "
program = data.replace (
un'espressione che valuta il marcatore ma non lo menziona ,
escape (dati))
programma di stampa;
Questa struttura può essere usata per scrivere un quine (abbastanza ingenuo) nella maggior parte delle lingue. Tuttavia, tende a segnare un punteggio abbastanza basso sulla maggior parte dei sistemi di punteggio, perché devi scrivere l'intero programma due volte. Tuttavia, la maggior parte delle strutture quine possono essere considerate ottimizzazioni di questo.
Ci sono alcune sottigliezze in questo. In alcune lingue, la parte più difficile dell'esecuzione di questa operazione è scrivere il codice di escape; in molte lingue, è difficile produrre il marcatore senza menzionarne il nome; e in alcune lingue esoteriche, dovrai inventare il tuo tipo di stringa letterale. Tutte e tre le operazioni tendono tuttavia a non causare troppi problemi.
Ad esempio, possiamo scrivere un quine Python che fuoriesce da una stringa usando repr
e usando la x"
stringa di sequenza di 2 caratteri (che è rappresentabile come "x\""
, cioè non usando la sequenza x"
nella rappresentazione di stringa della stringa stessa) come marcatore:
d='d=x"\nprint(str.replace(d,"x\\"",repr(d)))'
print(str.replace(d,"x\"",repr(d)))