Ihre Programme:
Sie schreiben zwei Programme (beide in derselben Sprache). Das Speicherprogramm nimmt eine Zeichenfolge aus STDIN und speichert sie an einem persistenten Ort (siehe unten). Anschließend wird es ohne Fehler beendet. Das Abrufprogramm nimmt keine Eingabe vor, ruft den gespeicherten String ab und druckt ihn an STDOUT aus.
Objektiver Persistenztest:
Sie sollten in der Lage sein, das Speicherprogramm auf Ihrem lokalen Computer auszuführen, den lokalen Computer aus- und wieder einzuschalten und dann das Abrufprogramm auf Ihrem lokalen Computer aufzurufen. Sie können den String so lange aufbewahren, wie Sie möchten (auch im Internet), bis Sie diesen Neustarttest bestanden haben.
Testfälle:
Speicherung und Wiederauffindung:
echo foo | Store
Retrieve
foo
Wiederholte Speicher sollten überschreiben (wie bei einer set () -Methode):
echo foo | Store
echo bar | Store
Retrieve
bar
Wiederholtes Abrufen ist nicht destruktiv (wie eine get () - Methode):
echo foo | Store
Retrieve
foo
Retrieve
foo
Abruf vor jedem Aufruf von Storage:
Sie brauchen sich darüber keine Sorgen zu machen. Ihr Abrufprogramm kann davon ausgehen, dass das Speicherprogramm zu einem bestimmten Zeitpunkt in der Vergangenheit ausgeführt wurde.
Flexibilität bei Ein- und Ausgängen.
Die Leute haben mich gebeten, dies von strengen STDIN / STDOUT auf die Standard-IO-Regeln zu erweitern. Ich kann nicht, weil es zu viele Schlupflöcher einführen würde. Bei einigen Standard-E / A-Optionen ist die Eingabe bereits dauerhaft gespeichert, z. B. "Programme können Eingaben aus einer Datei übernehmen". Ich möchte flexibler sein als nur STDIN und STDOUT, aber ohne die Schleusen zu öffnen.
Aus dem Standard-Thread für E / A-Regeln nehme ich diejenigen heraus, die die Herausforderung nicht brechen:
Programme können Eingaben über GUI-Eingabeaufforderungen und Befehlszeilenaufforderungen vornehmen, wenn Sie dies wünschen
Programme können durch Anzeigen auf dem Bildschirm ausgegeben werden. Dies schließt GUI-Dialoge ein
Programme können Eingaben über Befehlszeilenargumente annehmen
Programme werden möglicherweise in STDERR ausgegeben, können jedoch keine Fehler auslösen.
Wenn Sie eine Alternative verwenden, muss diese benutzerinteraktiv sein. Der Benutzer sollte keine andere Arbeit ausführen müssen, als seine Eingaben in Ihr Programm weiterzuleiten, sie in eine Eingabeaufforderung einzugeben, die Ihr Programm bereitstellt, oder Eingaben als Befehlszeilenargument Ihres Programms einzugeben. Der Benutzer sollte nichts anderes tun müssen, als das Abrufprogramm auszuführen, um die Ausgabe auf dem Bildschirm anzuzeigen oder an STDOUT oder STDERR zu senden.
Zulässige Annahmen:
- Ihre beiden Programme werden im selben Verzeichnis ausgeführt
- Ihre Programme haben Lese- und Schreibrechte für dieses Verzeichnis
- Von Ihnen erstellte Dateien überstehen den Neustart (nicht in einem temporären Verzeichnis)
- Eine abschließende Zeile, die nicht Teil der Zeichenfolge war, ist zulässig. Kein anderes Leerzeichen
Dies ist Code-Golf, und Ihre Punktzahl ist die Summe der Bytes aus beiden Programmen.
Store
?
echo $@>x
undcat x
gültig?