بخشی از مجموعه

چندین نمونه کد

~2 دقیقه مطالعه • بروزرسانی ۱۵ مهر ۱۴۰۴

شرح برنامه

این برنامه مختصات دو مستطیل را از کاربر دریافت می‌کند.
هر مستطیل با دو نقطه تعریف می‌شود: گوشه بالا-چپ و پایین-راست (یا هر دو گوشه مخالف).
برنامه بررسی می‌کند که آیا دو مستطیل با هم اشتراک دارند یا نه، و اگر داشته باشند، سطح ناحیه‌ی مشترک را محاسبه می‌کند.


کد پایتون:


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، طول و عرض ناحیه‌ی اشتراک محاسبه می‌شود
- اگر اشتراک وجود نداشته باشد، مقدار نهایی صفر خواهد بود


نوشته و پژوهش شده توسط دکتر شاهین صیامی