Задание №6 — Анализ алгоритмов для исполнителя
Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует 5 команд: Поднять хвост, означающая переход к перемещению без рисования; Опустить хвост, означающая переход в режим рисования; Вперёд n (где n – целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова; Назад n (где n – целое число), вызывающая передвижение в противоположном голове направлении; Направо m (где m – целое число), вызывающая изменение направления движения на m градусов по часовой стрелке, Налево m (где m – целое число), вызывающая изменение направления движения на m градусов против часовой стрелки.
Запись Повтори k [Команда1 Команда2 … КомандаS] означает, что последовательность из S команд повторится k раз.
Черепахе был дан для исполнения следующий алгоритм:
Повтори 2 [Вперёд 13 Направо 90 Вперёд 18 Направо 90]
Поднять хвост
Вперёд 5 Направо 90 Вперёд 9 Налево 90
Опустить хвост
Повтори 2 [Вперёд 11 Направо 90 Вперёд 7 Направо 90]
Определите, сколько точек с целочисленными координатами будут находиться внутри пересечения фигур, ограниченных заданными алгоритмом линиями, включая точки на линиях.
Правильный ответ
72
Пояснение
Решение:
Разберём алгоритм по частям. Команда Повтори 2 [Вперёд 13 Направо 90 Вперёд 18 Направо 90] рисует прямоугольник со сторонами 13 и 18: из точки Черепаха идёт вверх до , затем вправо до , вниз до и влево обратно в начало координат. Первая фигура — прямоугольник , .
Дальше хвост поднят, и линия не рисуется: Вперёд 5 переводит Черепаху в , Направо 90 разворачивает голову вправо, Вперёд 9 даёт , а Налево 90 снова направляет голову вверх. Второй цикл рисует прямоугольник со сторонами 11 и 7 с вершинами , , , , то есть , .
Пересечение двух прямоугольников — снова прямоугольник: по берём общую часть отрезков и , по — общую часть и . Получаем область , .
Точки на линиях учитываются, поэтому годятся все целые от 9 до 16 (8 значений) и все целые от 5 до 13 (9 значений): точки.
Ответ: 72