این برنامه مختصات دو مستطیل را از کاربر دریافت میکند.
هر مستطیل با دو نقطه تعریف میشود: گوشه بالا-چپ و پایین-راست (یا هر دو گوشه مخالف).
برنامه بررسی میکند که آیا دو مستطیل با هم اشتراک دارند یا نه، و اگر داشته باشند، سطح ناحیهی مشترک را محاسبه میکند.
def intersection_area(r1, r2):
x_overlap = max(0, min(r1['x2'], r2['x2']) - max(r1['x1'], r2['x1']))
y_overlap = max(0, min(r1['y2'], r2['y2']) - max(r1['y1'], r2['y1']))
return x_overlap * y_overlap
# دریافت ورودی مستطیل اول
print("مستطیل اول:")
x1, y1 = map(float, input("نقطه اول (x y): ").split())
x2, y2 = map(float, input("نقطه دوم (x y): ").split())
r1 = {'x1': min(x1, x2), 'y1': min(y1, y2), 'x2': max(x1, x2), 'y2': max(y1, y2)}
# دریافت ورودی مستطیل دوم
print("مستطیل دوم:")
x3, y3 = map(float, input("نقطه اول (x y): ").split())
x4, y4 = map(float, input("نقطه دوم (x y): ").split())
r2 = {'x1': min(x3, x4), 'y1': min(y3, y4), 'x2': max(x3, x4), 'y2': max(y3, y4)}
# محاسبه ناحیه اشتراک
area = intersection_area(r1, r2)
print(f"سطح ناحیهی مشترک: {area}")
مستطیل اول:
نقطه اول (x y): 1 1
نقطه دوم (x y): 5 5
مستطیل دوم:
نقطه اول (x y): 3 3
نقطه دوم (x y): 6 6
سطح ناحیهی مشترک: 4.0
- ابتدا مختصات هر مستطیل نرمالسازی میشود تا x1 < x2 و y1 < y2 باشد
- سپس با استفاده از min و max، طول و عرض ناحیهی اشتراک محاسبه میشود
- اگر اشتراک وجود نداشته باشد، مقدار نهایی صفر خواهد بود