Ваши программы:
Вы напишите две программы (обе на одном языке). Программа хранения берет строку из STDIN и сохраняет ее где-то постоянно (см. Ниже), а затем завершает работу без ошибок. Программа поиска не принимает никаких данных, извлекает строку, которая была сохранена, и печатает ее в STDOUT.
Объективный тест на стойкость:
Вы должны быть в состоянии запустить программу хранения на локальном компьютере, затем выключить и снова включить локальный компьютер, а затем вызвать программу поиска на своем локальном компьютере. Вы можете хранить строку как угодно (даже в Интернете), пока вы проходите этот тест перезагрузки.
Тестовые случаи:
Хранение затем поиск:
echo foo | Store
Retrieve
foo
Повторные хранилища должны перезаписывать (как метод set ()):
echo foo | Store
echo bar | Store
Retrieve
bar
Повторное получение является неразрушающим (как метод get ()):
echo foo | Store
Retrieve
foo
Retrieve
foo
Извлечение до любого вызова хранилища:
Вам не нужно беспокоиться об этом. Ваша поисковая программа может предположить, что программа хранения была запущена в некоторый момент в прошлом.
Гибкость ввода / вывода.
Люди просили меня расширить это от строгого STDIN / STDOUT до стандартных правил ввода-вывода. Я не могу, потому что это принесет слишком много лазеек. Некоторые стандартные параметры ввода-вывода уже хранят входные данные в постоянном виде, например, «программы могут получать входные данные из файла». Я хотел бы быть более гибким, чем просто строгий STDIN и STDOUT, но не открывая шлюзы.
Из стандартной ветки правил IO я выбираю те, которые не решают проблему:
Программы могут принимать ввод через приглашения графического интерфейса пользователя и командной строки, если вы хотите
Программы могут выводить данные, отображая их на экране. Это включает в себя диалоги с графическим интерфейсом.
Программы могут принимать ввод через аргументы командной строки
Программы могут выводить в STDERR, но на самом деле не могут выдавать ошибки.
Если вы используете альтернативу, она должна быть интерактивной. Пользователю не нужно выполнять какую-либо другую работу, кроме передачи своего ввода в вашу программу, ввода его в подсказку, которую предоставляет ваша программа, или ввода ввода в качестве аргумента командной строки вашей программы. Пользователь не должен делать ничего, кроме запуска вашей программы извлечения, чтобы увидеть вывод, отображаемый на экране или отправленный в STDOUT или STDERR.
Допустимые предположения:
- Ваши две программы будут запущены в одном каталоге
- Ваши программы имеют разрешения на чтение и запись для этого каталога
- Созданные вами файлы выживут после перезагрузки (не во временной директории)
- Разрешается использовать один завершающий перевод строки, который не был частью строки. Нет других конечных пробелов
Это код-гольф, а ваш результат - сумма байтов в обеих программах.
Store
?
echo $@>x
иcat x
действует?