I tuoi programmi:
Scriverai due programmi (entrambi nella stessa lingua). Il programma di archiviazione prende una stringa da STDIN e la memorizza in un posto persistente (vedi sotto) e quindi esce senza errori. Il programma di recupero non accetta input, recupera la stringa memorizzata e la stampa su STDOUT.
Test oggettivo di persistenza:
Dovresti essere in grado di eseguire il programma di archiviazione sul tuo computer locale, quindi spegnere e riaccendere il tuo computer locale, quindi chiamare il programma di recupero sul tuo computer locale. Puoi riporre la stringa come preferisci (anche sul Web) purché superi questo test di riavvio.
Casi test:
Archiviazione quindi recupero:
echo foo | Store
Retrieve
foo
I negozi ripetuti dovrebbero sovrascrivere (come un metodo set ()):
echo foo | Store
echo bar | Store
Retrieve
bar
Il recupero ripetuto è non distruttivo (come un metodo get ()):
echo foo | Store
Retrieve
foo
Retrieve
foo
Recupero prima di qualsiasi invocazione di archiviazione:
Non devi preoccuparti di questo. Il programma di recupero può presupporre che il programma di archiviazione sia stato eseguito in un determinato momento in passato.
Flessibilità di input / output.
La gente mi ha chiesto di estenderlo dal rigoroso STDIN / STDOUT alle regole IO standard. Non posso perché introdurrebbe troppe scappatoie. Alcune opzioni IO standard hanno già l'input memorizzato in modo persistente, ad esempio "i programmi possono prendere input da un file". Mi piacerebbe essere più flessibile dei rigorosi STDIN e STDOUT, ma senza aprire le porte.
Dal thread delle regole IO standard sto selezionando quelli che non rompono la sfida:
I programmi possono ricevere input tramite prompt della GUI e prompt della riga di comando, se lo si desidera
I programmi possono essere visualizzati visualizzando sullo schermo Ciò include le finestre di dialogo della GUI
I programmi possono accettare input tramite argomenti della riga di comando
I programmi possono essere inviati a STDERR ma non riescono ancora a generare errori.
Se usi un'alternativa, deve essere interattiva per l'utente. L'utente non dovrebbe fare nessun altro lavoro oltre a reindirizzare il proprio input al programma, digitarlo in un prompt fornito dal programma o digitare input come arg della riga di comando del programma. L'utente non dovrebbe fare altro che eseguire il programma di recupero per vedere l'output visualizzato sullo schermo o inviato a STDOUT o STDERR.
Presupposti consentiti:
- I tuoi due programmi verranno eseguiti nella stessa directory
- I tuoi programmi dispongono delle autorizzazioni di lettura / scrittura per quella directory
- I file creati sopravvivranno al riavvio (non in una directory temporanea)
- È consentita una nuova riga finale che non faceva parte della stringa. Nessun altro spazio bianco finale
Questo è code-golf e il tuo punteggio è la somma dei byte di entrambi i programmi.
Store
?
echo $@>x
edcat x
è valido?