Это файл README.md, написанный с использованием разметки markdown. Моя программа вычисляет площадь пересечения или объединения прямоугольников, заданных координатами верхней и нижней точек.
Первая функция inters_size вычисляет площадь пересечения двух прямоугольников,
причем если они не пересекаются - результат работы функции - 0.
def inters_size(x1: int, y1: int, x2: int, y2: int, x3: int, y3: int, x4: int, y4: int) -> int:
"""
Функция, находящая площадь пересечения двух прямоугольников
заданных верхней левой точкой ((x1, y1), (x3, y3))
и правой нижней точкой ((x2, y2), (x4, y4))
:return: int, площадь пересечения
"""
if (res := (min(y1, y3) - max(y2, y4)) * (min(x4, x2) - max(x1, x3))) < 0:
return 0
else:
return res
Вторая функция union_size. Она с использованием первой функции
вычисляет площадь объединения двух прямоугольников,
причем если они не пересекаются - результат работы функции - сумма их площадей.
def union_size(x1: int, y1: int, x2: int, y2: int, x3: int, y3: int, x4: int, y4: int) -> int:
"""
Функция, находящая площадь объединения двух прямоугольников
заданных верхней левой точкой ((x1, y1), (x3, y3))
и правой нижней точкой ((x2, y2), (x4, y4))
:return: int, площадь объединения
"""
s_rect1 = (x2 - x1) * (y1 - y2)
s_rect2 = (x4 - x3) * (y3 - y4)
rect_inter = inters_size(x1, y1, x2, y2, x3, y3, x4, y4)
if rect_inter == s_rect2 and rect_inter == s_rect1:
return rect_inter
elif rect_inter == s_rect2 or rect_inter == s_rect1:
return s_rect1 + s_rect2 - rect_inter
else:
return s_rect1 + s_rect2 - rect_inter * 2