Алгоритм решения задания 14. Часть 1
Учимся решать 15 задания первого типа
Читать
Исполнитель Чертёжник действует на плоскости с декартовой системой координат, в которой единица длины по каждой из осей соответствует одному сантиметру. В начальный момент Чертёжник находится в начале координат, перо опущено. При опущенном пере Чертёжник оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя.
У исполнителя существует 3 команды: Поднять перо, означающая переход к перемещению без рисования; Опустить перо, означающая переход в режим рисования; Сместиться x, y (где x, y — целые числа), вызывающая перемещение Чертёжника из текущего положения в точку с координатами x, y.
Чертёжнику был дан для исполнения следующий алгоритм:
Сместиться 10, 20
Опустить перо
Сместиться 40, 60
Сместиться 80, 76
Сместиться 140, 64
Сместиться 120, 20
Сместиться 80, 0
Сместиться 10, 20
Определите наибольший внутренний угол фигуры, ограниченной заданными алгоритмом линиями. В ответ дайте только целое число, отбросив дробную часть. Единицы измерения указывать не нужно.
import math as m
from turtle import *
tracer(0)
teleport(10, 20)
# --- if Python < 3.12 ---
# pu()
# goto(10, 20)
# pd()
# --- end if ---
begin_poly()
goto(40, 60)
goto(80, 76)
goto(140, 64)
goto(120, 20)
goto(80, 0)
goto(10, 20)
end_poly()
update()
coords = get_poly()
angles = []
for coord in coords[1:]:
angles.append(towards(*coord))
goto(coord)
# Эту часть лучше сделать циклом
k_1 = m.tan(m.radians(angles[0]))
k_2 = m.tan(m.radians(angles[1]))
k_3 = m.tan(m.radians(angles[2]))
k_4 = m.tan(m.radians(angles[3]))
k_5 = m.tan(m.radians(angles[4]))
k_6 = m.tan(m.radians(angles[5]))
angle_1 = 180 + m.degrees(m.atan((k_2 - k_1) / (1 + k_2 * k_1)))
angle_2 = 180 + m.degrees(m.atan((k_3 - k_2) / (1 + k_3 * k_2)))
angle_3 = m.degrees(m.atan((k_4 - k_3) / (1 + k_4 * k_3)))
angle_4 = 180 + m.degrees(m.atan((k_5 - k_4) / (1 + k_5 * k_4)))
angle_5 = 180 + m.degrees(m.atan((k_6 - k_5) / (1 + k_6 * k_5)))
angle_6 = m.degrees(m.atan((k_1 - k_6) / (1 + k_1 * k_6)))
print(angle_1)
print(angle_2)
print(angle_3)
print(angle_4)
print(angle_5)
print(angle_6)
done()
