Inspiré par cette question .
Créez un programme qui invite l'utilisateur à stocker certaines données et, lorsque le programme se ferme, crachez le programme lui-même, à l'exception des données de session modifiées.
L'utilisateur ouvre ensuite le programme nouvellement généré et peut rappeler les données du programme précédent.
Commandes
KEY VALUE
: définit la variable de sessionKEY
surVALUE
*
: effacer toutes les données! KEY
: supprimerKEY
? KEY
: requêteKEY
(si elle n'existe pas: n'imprimez rien et continuez)- sinon, quittez le programme
Aucune clé ou valeur ne peut contenir d'espace. Le nom de fichier du programme nouvellement généré doit identifier la version du programme, vous pouvez utiliser des dates ou des compteurs.
Exemple d'interaction:
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
L'utilisateur ouvre le programme nouvellement généré
? name output: test
name retest data is now { name: retest }
* clear
data is now { }
Exemple d'implémentation: https://gist.github.com/1128876
Règles
- Vous n'avez pas besoin de conserver les commentaires ou les espaces insignifiants dans le programme quined: il suffit de préserver la fonctionnalité et les données
- Vous ne pouvez pas utiliser de stockage externe.
- Pas de quines de triche, comme tout autre problème de quine.
- Le code le plus court gagne.
SELECT 1 AS ID, NAME AS BLAH UNION...
Réponses:
Ruby 1.9,
159156Ce programme génère des fichiers nommés "1", "2", "3" et ainsi de suite.
la source
D (419 caractères)
formaté:
variante de mon D quine
la
*
commande s'appuiem.clear;
pour fonctionner correctement, ce qui n'est pas le cas dans dmd 2.52 (bug dans le compilateur)le besoin
stdout.flush;
dépend de l'activation ou non du rinçage automatique (ce n'est pas le cas sur ma machine)la source
JavaScript, 245
la source