Inspiriert von dieser Frage .
Erstellen Sie ein Programm, das den Benutzer auffordert, einige Daten zu speichern, und spucken Sie das Programm selbst aus, wenn das Programm beendet wird, mit Ausnahme der Sitzungsdaten, die geändert wurden.
Der Benutzer öffnet dann das neu erzeugte Programm und kann die Daten des vorherigen Programms abrufen.
Befehle
KEY VALUE
: Setzt die SitzungsvariableKEY
aufVALUE
*
: Alle Daten löschen! KEY
: löschenKEY
? KEY
: AbfrageKEY
(falls nicht vorhanden: nichts drucken und weitermachen)- Andernfalls beenden Sie das Programm
Weder Schlüssel noch Wert dürfen Leerzeichen enthalten. Der Dateiname des neu generierten Programms muss die Version des Programms identifizieren. Sie können Datumsangaben oder Zähler verwenden.
Beispiel Interaktion:
name test store name = test
data is now { name: test }
0 1 data is now { name: test, 0: 1 }
? name output: test
! 0 delete 0
data is now { name: test }
hello good world data is now { name: test, hello: good }
the extra word "world" is ignored
egiwiwegiuwe the "otherwise" case: quit program
Der Benutzer öffnet das neu erzeugte Programm
? name output: test
name retest data is now { name: retest }
* clear
data is now { }
Beispielimplementierung: https://gist.github.com/1128876
Regeln
- Sie müssen keine Kommentare oder unbedeutenden Leerzeichen im quined-Programm beibehalten: Sie müssen nur die Funktionalität und die Daten beibehalten
- Sie können keinen externen Speicher verwenden.
- Keine betrügerischen Quines, wie bei allen anderen Quine-Problemen.
- Kürzester Code gewinnt.
SELECT 1 AS ID, NAME AS BLAH UNION...
Antworten:
Ruby 1.9,
159156Dieses Programm generiert Dateien mit den Namen "1", "2", "3" usw.
quelle
D (419 Zeichen)
formatiert:
Variante meiner D-Quine
Der
*
Befehlm.clear;
funktioniert nur, wenn er in DMD 2.52 korrekt ausgeführt wird (Fehler im Compiler).Die Notwendigkeit
stdout.flush;
hängt davon ab, ob die automatische Spülung aktiviert ist (auf meinem Computer nicht vorhanden).quelle
JavaScript, 245
quelle