Twoje programy:
Napiszecie dwa programy (oba w tym samym języku). Program pamięci pobiera ciąg znaków ze STDIN i przechowuje go w trwałym miejscu (patrz poniżej), a następnie kończy działanie bez błędu. Program pobierający nie pobiera danych wejściowych, pobiera zapisany ciąg i drukuje go do STDOUT.
Obiektywny test trwałości:
Powinno być możliwe uruchomienie programu pamięci masowej na komputerze lokalnym, a następnie wyłączenie i wyłączenie komputera lokalnego, a następnie wywołanie programu pobierania na komputerze lokalnym. Możesz ukryć ciąg znaków, jak chcesz (nawet w Internecie), pod warunkiem, że przejdziesz ten test ponownego uruchomienia.
Przypadki testowe:
Przechowywanie, a następnie pobieranie:
echo foo | Store
Retrieve
foo
Powtarzające się sklepy powinny nadpisywać (jak metoda set ()):
echo foo | Store
echo bar | Store
Retrieve
bar
Powtarzane pobieranie jest nieniszczące (jak metoda get ()):
echo foo | Store
Retrieve
foo
Retrieve
foo
Pobieranie przed wywołaniem Storage:
Nie musisz się tym martwić. Twój program pobierania może założyć, że program pamięci masowej został uruchomiony w pewnym momencie w przeszłości.
Elastyczność wejścia / wyjścia.
Ludzie prosili mnie o rozszerzenie tego ze ścisłego STDIN / STDOUT na standardowe zasady IO. Nie mogę, ponieważ wprowadziłoby to zbyt wiele luk. Niektóre standardowe opcje We / Wy już przechowują dane wejściowe w trwały sposób, np. „Programy mogą pobierać dane z pliku”. Chciałbym być bardziej elastyczny niż tylko ścisłe STDIN i STDOUT, ale bez otwierania zastawek.
Ze standardowego wątku zasad IO wybieram te, które nie łamią wyzwania:
Programy mogą pobierać dane za pośrednictwem monitów GUI i wierszy poleceń, jeśli chcesz
Programy mogą wyświetlać dane wyjściowe, wyświetlając je na ekranie. Obejmuje to okna dialogowe GUI
Programy mogą pobierać dane za pomocą argumentów wiersza polecenia
Programy mogą wyświetlać dane wyjściowe w STDERR, ale nadal nie mogą zgłaszać błędów.
Jeśli użyjesz alternatywy, musi ona być interaktywna dla użytkownika. Użytkownik nie powinien wykonywać żadnej innej pracy poza przesyłaniem danych wejściowych do programu, wpisywaniem go w wierszu polecenia programu lub wpisywaniem danych wejściowych jako argumentu wiersza polecenia programu. Użytkownik nie powinien nic robić poza uruchomieniem programu do pobierania, aby wyświetlić dane wyjściowe wyświetlane na ekranie lub wysyłane do STDOUT lub STDERR.
Dozwolone założenia:
- Twoje dwa programy będą działać w tym samym katalogu
- Twoje programy mają uprawnienia do odczytu i zapisu dla tego katalogu
- Pliki, które utworzysz, przetrwają ponowne uruchomienie (nie w katalogu tymczasowym)
- Dozwolony jest jeden znak nowej linii, który nie był częścią ciągu. Żadnych innych białych spacji
To jest golf golfowy, a twój wynik to suma bajtów z obu programów.
Store
?
echo $@>x
icat x
ważny?