Ограничения: время – 200ms/500ms, память – 256MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Напишите программу для робота, который движется по полю размером `5 xx 5` клеток.
Первоначально робот всегда находится в клетке в верхнем левом углу. В одной из клеток находится
закопанный клад.
Ваша задача -- написать программу для управления роботом, которая поможет найти и раскопать клетку с кладом.
Для управления роботом вы можете использовать следующие команды:
![Команды робота](45831.png)
Первые четыре команды позволяют роботу перемещаться в соответствующем направлении. Если выполнение команды движения невозможно, то она игнорируется.
Пятая команда позволяет раскопать текущую клетку. Можно раскапывать любую клетку.
Шестая и седьмая команда используется в условиях цикла и ветвления для проверки, что робот стал ближе к кладу (теплее) или дальше от клада (холоднее)
после перемещения. Если робот не сдвинулся с места (еще не было перемещений или попытка перемещения не была успешной), то обе проверки будут ложными. (Расстояние вычисляется как длина отрезка между центром клетки, на которой находится робот, и центром клетки с кладом).
Последние две команды позволяют узнать текущие координаты робота.
Дополнительно вы можете использовать команды для циклов, ветвлений, арифметических действий.
Например, при расположении клада в центре поля робот должен переместиться на 2 клетки вправо и 2 клетки вниз, затем начать копать.
![Пример](45828.png)
Эту последовательность действий можно задать следующей программой:
![Пример программы](45830.png)
*Система оценки и описание подзадач*
||.u|Подзадача 1 (10 баллов)||
В этой подзадаче 1 тест, показанный на рисунке. Нет ограничений на количество перемещений и раскопок.
![Тест 1](45829.png)
||.u|Подзадача 2 (30 баллов)||
В этой подзадаче 1 тест. Программа запускается 25 раз на всех возможных размещениях клада.
Нет ограничений на количество перемещений и раскопок.
Необходимые подзадачи: 1.
Баллы за подзадачу начисляются только в случае, если все тесты для этой подзадачи успешно пройдены.
||.u|Подзадача 3 (30 баллов)||
В этой подзадаче 1 тест. Программа запускается 25 раз на всех возможных размещениях клада. Нет ограничений на количество перемещений.
Можно выполнить раскопку только один раз.
Необходимые подзадачи: 1, 2.
Баллы за подзадачу начисляются только в случае, если все тесты для этой подзадачи успешно пройдены.
||.u|Подзадача 4 (30 баллов)||
В этой подзадаче 1 тест. Программа запускается 25 раз на всех возможных размещениях клада.
Количество перемещений робота в процессе поиска клада не должно превышать 10.
Учитываются только успешные перемещения. Можно выполнить раскопку только один раз.
Необходимые подзадачи: 1, 2, 3.
Баллы за подзадачу начисляются только в случае, если все тесты для этой подзадачи успешно пройдены.
---
Для написания программы для робота используется [специальная версия среды Blockly](blockly/2593.html).
Вы можете использовать полную среду Blockly при решении других задач этого соревнования, выбрав пункт Blockly в информационном меню задачи.
Для проверки работы используйте кнопки:
![Кнопки](45827.png)
Первая кнопка позволяет отправить ваше решение для проверки в проверяющую систему соревнований, вторая кнопка выполняет запуск программу локально, третья –
пошаговое выполнение или временная остановка программы, четвертая -- завершение выполнения программы, после которой программа будет выполняться сначала.
Щелкая мышкой по клеткам начального состояния поля, можно задать начальное положение клада для тестирования программы.