Code + Datenquines
Die allgemeinste Struktur für eine Quine sieht ungefähr so aus:
data = " eine ausgeblendete Version des gesamten Programms,
mit dieser Zeichenfolge mit einem Marker ersetzt "
program = data.replace (
Ein Ausdruck, der als Marker ausgewertet wird, ihn aber nicht erwähnt ,
entkommen (Daten)
Druckprogramm;
Diese Struktur kann verwendet werden, um in den meisten Sprachen eine (ziemlich naive) Quine zu schreiben. Auf den meisten Scoring-Systemen kann es jedoch schlecht abschneiden, da Sie das gesamte Programm zweimal schreiben müssen. Die meisten Quine-Strukturen können jedoch als Optimierungen dieser betrachtet werden.
Dies hat einige Feinheiten. In einigen Sprachen ist es am schwierigsten, diesen Vorgang auszuführen, den Escape-Code zu schreiben. In vielen Sprachen ist es schwierig, den Marker zu produzieren, ohne seinen Namen zu erwähnen. und in einigen esoterischen Sprachen müssen Sie Ihre eigene Art von String-Literal erfinden. Alle drei Operationen verursachen jedoch nicht allzu viele Probleme.
Zum Beispiel können wir ein Python-Quine schreiben, das aus einem String herauskommt repr
, und als Marker den 2-Zeichen-Sequenz- x"
String verwenden (der darstellbar ist "x\""
, dh nicht die Sequenz x"
in der String-Darstellung des Strings selbst verwendet):
d='d=x"\nprint(str.replace(d,"x\\"",repr(d)))'
print(str.replace(d,"x\"",repr(d)))