Ограничения: время – 200ms/500ms, память – 256MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Напишите в Blockly программу для робота-чертежника, который может перемещаться только между точками с целыми координатами
и поворачивать на углы, кратные 45 градусам. При движении робот проводит линию.
После выполнения программы робот должен вернуться в начальную точку, нарисовав `n`-угольник, возможно невыпуклый, без самопересечений
(робот не должен пересекать нарисованные ранее линии или возвращаться в точку, где ранее был, кроме начальной точки в конце программы).
Форма `n`-угольника может быть любой, но робот не должен удаляться от начальной точки далее 250 единиц по горизонтали или вертикали.
Для написания программы управления роботом вы можете использовать следующие блоки, заданные в категории "Робот":
![Команды робота](48276.png)
Первый блок позволяет получить количество углов `n`-угольника (вы можете задавать это значение в соответствующем поле).
Второй блок указывает роботу двигаться вперед в текущем направлении.
При этом робот перемещается в соседнюю точку с целыми координатами, как показано на рисунке.
![width:100px|Направления](48272.png)
Третий блок указывает роботу изменить направление на указанный угол по часовой стрелке (для положительных значений) или против часовой стрелки (для отрицательных значений).
Первоначально робот направлен направо:
![Направления](48273.png)
Например, чтобы нарисовать треугольник, нужно выполнить следующие команды:
![Треугольник](48271.png)
Следующие пять блоков позволяют выполнять арифметические вычисления, проверять четность и сравнивать значения между собой.
Девятый блок дает возможность повторить выполнение некоторой группы блоков. Например, для рисования шестиугольника можно выполнить программу:
![Шестиугольник](48275.png)
Последние два блока позволяют выбрать выполняемую группу блоков в зависимости от условия. В настройках блока (символ шестеренки) можно
добавить или убрать дополнительные ветки выбора. После завершения настройки нужно повторно нажать на символ шестерёнки.
Для создания переменной в категории "Переменные" нужно щелкнуть по кнопке "Создать переменную" и ввести её название.
После этого в категории "Переменные" появятся блоки для получения и изменения значения переменной.
Для запуска программы используйте кнопки:
![Кнопки](48270.png)
Первая кнопка позволяет отправить ваше решение для проверки в проверяющую систему соревнований, вторая кнопка выполняет запуск программу локально, третья –
пошаговое выполнение или временная остановка программы, четвертая -- завершение выполнения программы, после которой программа будет выполняться сначала.
Например, после запуска на выполнение программы, показанной выше, робот нарисует шестиугольник:
![Результат](48274.png)
Две кнопки над полем для рисования позволяют менять масштаб изображения как во время выполнения программы, так и после.
*Система оценки и описание подзадач*
||.u|Подзадача 1 (80 баллов)||
Количество углов от 3 до 10.
В этой подзадаче 8 тестов, каждый тест оценивается в 10 баллов. Баллы за каждый тест начисляются независимо.
||.u|Подзадача 2 (20 баллов)||
Количество углов от 11 до 100.
Необходимые подзадачи: 1.
В этой подзадаче 4 теста, каждый тест оценивается в 5 баллов. Баллы за каждый тест начисляются независимо.
По запросу сообщается результат окончательной проверки на каждом тесте.
---
Для написания программы для робота используется [специальная версия среды Blockly](blockly/2685.html).
Вы можете использовать полную среду Blockly при решении других задач этого соревнования, выбрав пункт Blockly
в информационном меню задачи.