Inspirado por esta pregunta .
Cree un programa que le pida al usuario que almacene algunos datos, y cuando el programa se cierre, escupe el programa en sí mismo, excepto que los datos de la sesión hayan cambiado.
Luego, el usuario abre el programa recién generado y puede recuperar los datos del programa anterior.
Comandos
KEY VALUE
: establece la variable de sesiónKEY
enVALUE
*
: borrar todos los datos! KEY
: EliminarKEY
? KEY
: consultaKEY
(si no existe: no imprima nada y continúe)- de lo contrario, salga del programa
Ni la clave ni el valor no pueden contener espacios. El nombre de archivo del programa recién generado debe identificar la versión del programa, puede usar fechas o contadores.
Ejemplo de interacción:
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
El usuario abre el programa recién generado.
? name output: test
name retest data is now { name: retest }
* clear
data is now { }
Implementación de muestra: https://gist.github.com/1128876
Reglas
- No necesita conservar comentarios o espacios en blanco insignificantes en el programa quined: solo preservar la funcionalidad y los datos
- No puede usar ningún almacenamiento externo.
- Sin trampas, como cualquier otro problema de quinas.
- El código más corto gana.
SELECT 1 AS ID, NAME AS BLAH UNION...
Respuestas:
Ruby 1.9,
159156Este programa genera archivos llamados "1", "2", "3" y así sucesivamente.
fuente
D (419 caracteres)
formateado:
variante de mi D quine
el
*
comando se basa enm.clear;
funcionar correctamente, lo que no funciona en dmd 2.52 (error en el compilador)la necesidad
stdout.flush;
depende de si el vaciado automático está activado (no está en mi máquina)fuente
JavaScript, 245
fuente