Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения.
У исполнителя есть 6 команд:
Поднять хвост — переход к перемещению без рисования
Опустить хвост — переход в режим рисования
Вперёд n (где n — целое число) — передвижение Черепахи на n единиц в том направлении, куда указывает её голова
Назад n (где n — целое число) — передвижение в противоположном голове направлении
Направо m (где m — целое число) — изменение направления движения на m градусов по часовой стрелке
Налево m (где m — целое число) — изменение направления движения на m градусов против часовой стрелки
Повтори k [Команда1 Команда2 … КомандаS] — последовательность из S команд повторится k раз
Черепахе был дан для исполнения такой алгоритм:
Повтори 9 [Вперёд 7 Направо 90 Вперёд 42 Направо 90]
Поднять хвост
Назад 10 Налево 90 Назад 16
Опустить хвост
Повтори 9 [Вперёд 42 Направо 90 Вперёд 16 Направо 90]
Определите периметр области объединения фигур, которые ограничены заданными алгоритмом линиями.
Дано задание на рисование черепахой. Пусть начальная позиция: (0,0), направление головы вдоль положительного направления оси ординат (то есть вверх, по оси y). Хвост опущен — черепаха рисует.
Цель: найти периметр области, ограниченной линиями, нарисованными алгоритмом.
1) Часть А — первый блок: Повтори 9 [Вперёд 7, Направо 90, Вперёд 42, Направо 90]
- Начинаем: положение (0,0), heading 90° (вверх).
- Первый вложенный блок (первый из 9):
- Вперёд 7 вдоль 90°: до (0,7)
- Направо 90°: heading становится 0° (вправо)
- Вперёд 42 вдоль 0°: до (42,7)
- Направо 90°: heading становится 270° (вниз)
- Итог блока: от (0,0) до (0,7) и затем до (42,7); конец блока — (42,7), heading 270°.
- Второй блок:
- Вперёд 7 вдоль 270°: до (42,0)
- Направо 90°: heading 180° (влево)
- Вперёд 42 вдоль 180°: до (0,0)
- Направо 90°: heading 90°
- Итог блока: от (42,7) до (42,0) и затем до (0,0); конец блока — (0,0), heading 90°.
- После двух блоков мы вернулись в исходную точку. После 9 блоков (половина из них повторяет этот цикл) фактически образуется контур прямоугольника:
- левая сторона: (0,0) → (0,7)
- верхняя сторона: (0,7) → (42,7)
- правая сторона: (42,7) → (42,0)
- нижняя сторона: (42,0) → (0,0)
Это прямоугольник шириной 42 и высотой 7.
- Периметр первого ограниченного контура:
P1 = 2*(42 + 7) = 98.
2) Часть B — после этого поднимаем хвост и перемещаемся без рисования: Поднять хвост, Назад 10, Налево 90, Назад 16
- После 9 блоков черепаха находится в точке (42,7) с направлением 270° (вниз). Хвост поднят.
- Назад 10 (движение против направления головы): heading 270° → противоположное направление 90° (вверх). Положение: (42,7) + 10 по +y = (42,17).
- Налево 90: heading 270° → 0° (направо, восток).
- Назад 16: движение против направления 0° (то есть назад по -x). Положение: (42,17) - 16 по x = (26,17).
- Хвост опускаем обратно, теперь head = 0° (восток), позиция (26,17).
3) Часть C — второй блок повторов: Повтори 9 [Вперёд 42 Направо 90 Вперёд 16 Направо 90]
Стартовая позиция: (26,17), heading 0°; хвост опущен.
- Повторяемый блок: [F 42, R 90, F 16, R 90]
- Блок 1:
- Вперёд 42 вдоль 0°: (26,17) → (68,17)
- Направо 90°: heading 270°
- Вперёд 16 вдоль 270°: (68,17) → (68,1)
- Направо 90°: heading 180°
- Конец блока: (68,1), heading 180°
- Блок 2:
- Вперёд 42 вдоль 180°: (68,1) → (26,1)
- Направо 90°: heading 90°
- Вперёд 16 вдоль 90°: (26,1) → (26,17)
- Направо 90°: heading 0°
- Конец блока: (26,17), heading 0°
- Замечание: два последовательных блока образуют прямоугольник с углами в (26,1), (68,1), (68,17), (26,17). После двух блоков мы возвращаемся в исходную точку цикла, поэтому за 9 блоков мы пройдём 4 полных цикла плюс один неполный. В итоге за 9 блоков рисунок образует точно тот же контур прямоугольника, но с другой составной стороны.
- Итог по этим 9 блокам: второй прямоугольник с шириной 42 и высотой 16, стороны:
- верхняя: (26,17) → (68,17)
- правая: (68,17) → (68,1)
- нижняя: (68,1) → (26,1)
- левая: (26,1) → (26,17)
- Периметр второго ограниченного контура:
P2 = 2*(42 + 16) = 116.
4) Итоговая периметр объединения фигур
- Первый контур (первый прямоугольник) и второй контур (второй прямоугольник) не пересекаются и не накладываются друг на друга. Их границы образуют две независимые фигуры.
- Периметры суммируются: P_total = P1 + P2 = 98 + 116 = 214.
Ответ: 214.