Sus programas:
Escribirás dos programas (ambos en el mismo idioma). El programa de almacenamiento toma una cadena de STDIN y la almacena en algún lugar persistente (ver más abajo) y luego sale sin error. El programa de recuperación no toma ninguna entrada, recupera la cadena que estaba almacenada y la imprime en STDOUT.
Prueba objetiva de persistencia:
Debería poder ejecutar el programa de almacenamiento en su máquina local, luego reiniciar su máquina local y luego llamar al programa de recuperación en su máquina local. Puede guardar la cadena como desee (incluso en la web) siempre que pase esta prueba de reinicio.
Casos de prueba:
Almacenamiento y recuperación:
echo foo | Store
Retrieve
foo
Las tiendas repetidas deberían sobrescribirse (como un método set ()):
echo foo | Store
echo bar | Store
Retrieve
bar
La recuperación repetida no es destructiva (como un método get ()):
echo foo | Store
Retrieve
foo
Retrieve
foo
Recuperación antes de cualquier invocación de Almacenamiento:
No necesita preocuparse por esto. Su programa de recuperación puede suponer que el programa de almacenamiento se ha ejecutado en algún momento en el pasado.
Flexibilidad de entrada / salida.
La gente me ha pedido que amplíe esto de estricto STDIN / STDOUT a las reglas estándar de E / S. No puedo porque introduciría demasiadas lagunas. Algunas opciones estándar de E / S ya tienen la entrada almacenada de forma persistente, por ejemplo, "los programas pueden recibir información de un archivo". Me gustaría ser más flexible que simplemente STDIN y STDOUT estrictos, pero sin abrir las compuertas.
Del hilo de reglas estándar de IO estoy seleccionando los que no rompen el desafío:
Los programas pueden recibir información a través de indicaciones de la GUI y de la línea de comandos si lo desea
Los programas pueden aparecer mostrándolos en la pantalla Esto incluye cuadros de diálogo de GUI
Los programas pueden recibir información a través de argumentos de línea de comandos
Los programas pueden salir a STDERR pero aún no pueden arrojar errores.
Si usa una alternativa, debe ser interactiva para el usuario. El usuario no debería tener que hacer ningún otro trabajo además de canalizar su entrada a su programa, escribiéndola en un indicador que proporcione su programa, o escribiendo la entrada como una línea de comando arg de su programa. El usuario no debería tener que hacer nada más que ejecutar su programa de recuperación para ver la salida mostrada en la pantalla o enviada a STDOUT o STDERR.
Suposiciones permitidas:
- Sus dos programas se ejecutarán en el mismo directorio.
- Sus programas tienen permisos de lectura y escritura para ese directorio
- Los archivos que cree sobrevivirán al reinicio (no en un directorio temporal)
- Se permite una nueva línea final que no era parte de la cadena. Ningún otro espacio en blanco al final
Este es el código de golf, y su puntaje es la suma de bytes de ambos programas.
Store
?
echo $@>x
ycat x
válido?