Seus programas:
Você escreverá dois programas (ambos no mesmo idioma). O programa de armazenamento pega uma sequência de STDIN e a armazena em algum lugar persistente (veja abaixo) e sai sem erro. O programa de recuperação não recebe entrada, recupera a sequência que foi armazenada e a imprime em STDOUT.
Teste objetivo de persistência:
Você deve poder executar o programa de armazenamento em sua máquina local, depois ligar e ligar a máquina local e depois chamar o programa de recuperação em sua máquina local. Você pode esconder a string da maneira que desejar (mesmo na Web), desde que passe no teste de reinicialização.
Casos de teste:
Armazenamento e recuperação:
echo foo | Store
Retrieve
foo
Lojas repetidas devem substituir (como um método set ()):
echo foo | Store
echo bar | Store
Retrieve
bar
A recuperação repetida não é destrutiva (como um método get ()):
echo foo | Store
Retrieve
foo
Retrieve
foo
Recuperação antes de qualquer invocação do Armazenamento:
Você não precisa se preocupar com isso. Seu programa de recuperação pode assumir que o programa de armazenamento foi executado em algum momento no passado.
Flexibilidade de entrada / saída.
As pessoas me pediram para expandir isso de STDIN / STDOUT estrito para as regras de IO padrão. Não posso, porque introduziria muitas brechas. Algumas opções de IO padrão já têm a entrada armazenada de maneira persistente, por exemplo, "programas podem receber entrada de um arquivo". Eu gostaria de ser mais flexível do que apenas STDIN e STDOUT, mas sem abrir as comportas.
No segmento de regras de IO padrão, eu estou escolhendo aqueles que não quebram o desafio:
Os programas podem receber informações por meio de prompts da GUI e de linha de comando, se você desejar
Os programas podem ser exibidos exibindo-os na tela Isso inclui caixas de diálogo da GUI
Os programas podem receber informações via argumentos da linha de comando
Os programas podem ser enviados para STDERR, mas ainda não podem realmente gerar erros.
Se você usar uma alternativa, ela deve ser interativa. O usuário não deveria ter que fazer nenhum outro trabalho além de canalizar a entrada para o seu programa, digitando-a em um prompt fornecido pelo programa ou digitando a entrada como um argumento de linha de comando do seu programa. O usuário não precisa fazer nada além de executar o programa de recuperação para ver a saída exibida na tela ou enviada para STDOUT ou STDERR.
Premissas permitidas:
- Seus dois programas serão executados no mesmo diretório
- Seus programas têm permissões de leitura e gravação para esse diretório
- Os arquivos criados sobreviverão à reinicialização (não em um diretório temporário)
- Uma nova linha à direita que não fazia parte da sequência é permitida. Nenhum outro espaço em branco à direita
Isso é código-golfe, e sua pontuação é a soma de bytes dos dois programas.
Store
?
echo $@>x
ecat x
é válido?