Data Science. Разработка с нуля, Решение олимпиадной задачи на python. Асимметричный диалог (26 баллов) Ограничение времени 1 с Ограничение памяти 64.0 Мб Ввод стандартный ввод Вывод стандартный вывод [анализ кода; автономное управление] Умный робот-пылесос фирмы «АБ-Мур» несколько лет прекрасно справлялся со своей основной задачей, как в один прекрасный день перестал реагировать на команды и вместо этого тихо мигал красным огоньком. Коля Четвёркин поискал в интернете и узнал, что недавно на центральном сервере обновили ключи шифрования, и если пылесос не успел их синхронизировать, нужно сделать это вручную. А именно – зайти в консоль прошивки и запустить утилиту синхронизации. Её название отличается от пылесоса к пылесосу, но известно, файл утилиты имеет расширение«.FLG» и лежит в начальном каталоге. Да, в пылесосе есть настоящая операционная система, и у неё есть много команд. Нас будут интересовать шесть: DIR – выводит построчно названия файлов в текущем каталоге. EXEC a – запускает файл a (если он существует и исполняемый). если файл не существует, система ответит ERROR NOT EXIST. если файл не исполняемый, система ответит ERROR NOT EXECUTABLE. COPY a b – копирует файл a в файл b (если a существует, а b – не существует). если b существует, система ответит ERROR EXIST. DEL a – удаляет файл a (если он существует и не исполняемый). если файл нельзя удалить, система ответит ERROR CANT DELETE TRUE – ничего не делает. EXIT – завершает сеанс. Если команда не существует, система отвечает ERROR SYNTAX. Если количество параметров не совпадает с необходимым для команды, система отвечает “ERROR PARAMETER“. Если указанный файл не существует, система отвечает ERROR NOT FOUND, если не указано иначе. Если команда выполнена успешно, то последней отдельной строкой (после вывода самой команды) возвращается OK. Все эти команды работают благодаря интерпретатору команд, который тоже лежит в начальном каталоге. И его название тоже отличается между моделями пылесосов. В интернете пишут, что варианта три – COMMAND.COM, EXECUTOR.EXE или INTERPRT.INT. Но подключившись и выполнив первую команду, вместо файлов Коля увидел странные названия. Оказалось, что буквы и цифры в выводе перемешаны. То ли генератор вывода сломан, из-за чего вместо одной буквы выводится другая, то ли производитель специально подстроил шифрование. В пользу последней версии играет вычитанное в интернете предупреждение: если попытаться обратиться к интерпретатору не той версии или выполнить более10 команд за сеанс, система заблокируется, и пылесос точно придётся нести в сервисный центр. Коля очень не хочет нести пылесос в сервис и надеется отремонтировать его своими силами. Помогите Коле пробиться через защиты от производителя и напишите программу, которая запускает утилиту (или хотя бы интерпретатор команд). Задача проверяет навык анализа кодов и реализации автономного управления, что потребуется при решении финальной задачи. Для решения этой задачи у вашей команды есть 20 попыток. Протокол взаимодействия Это интерактивная задача. Ваша программа взаимодействует с проверочной системой посредством стандартных потоков ввода и вывода. Каждое входящее и исходящее сообщение должно сопровождаться переносом строки и очисткой буфера. Иными словами, после отправки сообщения программа должна очистить буфер (выполнить flush) и считать ответ от системы (прочесть строку или несколько строк). В случае некорректного поведения решения, проверка прерывается с вердиктом PE (Presentation Error). Ваше решение отправляет команду согласно условия задачи. Одна команда – одна строка. Проверочная система отвечает произвольным числом строк. Система оценивания Решение проходит проверку на наборе пылесосов. Если решение запускает интерпретатор команд, за пылесос присуждается 50%. Если же запускается утилита синхронизации, за пылесос ставится полный балл. Примечание Каждое входящее и исходящее сообщение должно сопровождаться переносом строки. Очистка буфера в Python делается функцией sys.stdout.flush(), в Java – System.out.flush(), в C++ – std::flush.