Алгоритм решения задания 14. Часть 1
Учимся решать 15 задания первого типа
Читать
Исполнитель Чертёжник действует на плоскости с декартовой системой координат, в которой единица длины по каждой из осей соответствует одному сантиметру. В начальный момент Чертёжник находится в начале координат, перо опущено. При опущенном пере Чертёжник оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя.
У исполнителя существует 3 команды: Поднять перо, означающая переход к перемещению без рисования; Опустить перо, означающая переход в режим рисования; Сместиться x, y (где x, y — целые числа), вызывающая перемещение Чертёжника из текущего положения в точку с координатами x, y.
Чертёжнику был дан для исполнения следующий алгоритм:
Сместиться 19, -18
Опустить перо
Сместиться -5, 0
Сместиться -5, 28
Сместиться 15, 49
Сместиться 40, 30
Сместиться 40, 9
Сместиться 19, -18
Поднять перо
Сместиться 15, 49
Опустить перо
Сместиться 100, 49
Сместиться 100, 22
Сместиться 70, 22
Сместиться 91, -6
Сместиться 28, -6
Сместиться 15, 49
Определите периметр области объединения фигур, ограниченных заданными алгоритмом линиями.
from turtle import *
tracer(0)
teleport(19, -18)
# --- if Python < 3.12 ---
# pu()
# goto(20,40)
# pd()
# --- end if ---
# Первая фигура
begin_poly()
goto(-5, 0)
goto(-5, 28)
goto(15, 49)
goto(40, 30)
goto(40, 9)
goto(19, -18)
end_poly()
coords_1 = get_poly()
lens_1 = []
for coord in coords_1[1:]:
lens_1.append(distance(*coord))
goto(coord)
teleport(15, 49)
# Вторая фигура
begin_poly()
goto(100, 49)
goto(100, 22)
goto(70, 22)
goto(91, -6)
goto(28, -6)
goto(15, 49)
end_poly()
coords_2 = get_poly()
lens_2 = []
for coord in coords_2[1:]:
lens_2.append(distance(*coord))
goto(coord)
# Находим часть стороны между точками (28, -6) и (19, -18)
teleport(28, -6)
len_part = distance(19, -18)
perimeter = sum(lens_1[:3]) + sum(lens_2[:5]) + len_part
print(perimeter)
update()
done()
