Inspirado por esta pergunta .
Crie um programa que solicite ao usuário que armazene alguns dados e, quando o programa estiver encerrado, cuspa o próprio programa, exceto os dados da sessão alterados.
O usuário abre o programa recém-gerado e pode recuperar os dados do programa anterior.
Comandos
KEY VALUE
: define a variável de sessãoKEY
comoVALUE
*
: limpar todos os dados! KEY
: excluirKEY
? KEY
: queryKEY
(se não existir: imprima nada e siga em frente)- caso contrário, saia do programa
Nenhuma chave ou valor não pode conter espaços. O nome do arquivo do programa recém-gerado deve identificar a versão do programa, você pode usar datas ou contadores.
Exemplo de interação:
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
O usuário abre o programa recém-gerado
? name output: test
name retest data is now { name: retest }
* clear
data is now { }
Implementação de amostra: https://gist.github.com/1128876
Regras
- Você não precisa preservar comentários ou espaços em branco insignificantes no programa em questão: basta preservar a funcionalidade e os dados
- Você não pode usar nenhum armazenamento externo.
- Sem trapaça, como qualquer outro problema.
- O menor código vence.
SELECT 1 AS ID, NAME AS BLAH UNION...
Respostas:
Rubi 1.9,
159156Este programa gera arquivos com o nome "1", "2", "3" e assim por diante.
fonte
D (419 caracteres)
formatado:
variante do meu D quine
o
*
comando dependem.clear;
para funcionar corretamente, o que não ocorre no dmd 2.52 (erro no compilador)a necessidade
stdout.flush;
depende se a liberação automática está ativada (não está na minha máquina)fonte
JavaScript, 245
fonte