ЕГЭ, ОГЭ, программирование и робототехника в Калининграде

№ 6214. Авторская задача

Исполнитель Чертёжник действует на плоскости с декартовой системой координат, в которой единица длины по каждой из осей соответствует одному сантиметру. В начальный момент Чертёжник находится в начале координат, перо опущено. При опущенном пере Чертёжник оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя.

У исполнителя существует 3 команды: Поднять перо, означающая переход к перемещению без рисования; Опустить перо, означающая переход в режим рисования; Сместиться x, y (где x, y — целые числа), вызывающая перемещение Чертёжника из текущего положения в точку с координатами x, y.

Чертёжнику был дан для исполнения следующий алгоритм:

Сместиться 15, 49
Опустить перо
Сместиться 40, 30
Сместиться 40, 10
Сместиться 19, -18
Сместиться -5, 0
Сместиться -5, 28
Сместиться 15, 49
Сместиться 100, 49
Сместиться 100, 10
Сместиться 40, 10
Сместиться 12, 14
Сместиться 4, 26
Сместиться 15, 49

Определите периметр области объединения фигур, ограниченных заданными алгоритмом линиями.

from turtle import *

tracer(0)

teleport(15, 49)

# --- if Python < 3.12 ---
# pu()
# goto(20,40)
# pd()
# --- end if ---

# Первая фигура
begin_poly()
goto(40, 30)
goto(40, 10)
goto(19, -18)
goto(-5, 0)
goto(-5, 28)
goto(15, 49)
end_poly()

coords_1 = get_poly()
lens_1 = []
for coord in coords_1[1:]:
    lens_1.append(distance(*coord))
    goto(coord)

# Вторая фигура
begin_poly()
goto(100, 49)
goto(100, 10)
goto(40, 10)
goto(12, 14)
goto(4, 26)
goto(15, 49)
end_poly()

coords_2 = get_poly()
lens_2 = []

for coord in coords_2[1:]:
    lens_2.append(distance(*coord))
    goto(coord)

perimeter = sum(lens_1[2:]) + sum(lens_2[:3])

print(perimeter)
update()
done()
Разберём это задание на бесплатном пробном занятии

Преподаватель покажет, как решать такие задачи, и подскажет, с чего начать подготовку. Группы до 8 человек, очно в Калининграде и онлайн.

Записаться на пробное занятие