২D প্লেনে দুটি রেক্টিলিনিয়ার রেক্ট্যাঙ্গেল দ্বারা আচ্ছাদিত মোট এলিয়া বের করতে হবে। প্রতিটি রেক্ট্যাঙ্গেল তার বটম-লেফ্ট এবং টপ-রাইট কনার কোঅর্ডিনেট দিয়ে ডিফাইন করা হয়।
সমাধান পদ্ধতি
width_1 := |C-A|, height_1 := |D-B|(প্রথম রেক্ট্যাঙ্গেল)width_2 := |G-E|, height_2 := |H-F|(দ্বিতীয় রেক্ট্যাঙ্গেল)area := width_1*height_1 + width_2*height_2- যদি রেক্ট্যাঙ্গেলগুলো ওভারল্যাপ না করে (
G<AবাE>CবাF>DবাH<B), তবেareaরিটার্ন করুন। - অন্যথায় ওভারল্যাপিং এলিয়া বের করুন:
p := max(A, E), q := max(B, F)r := min(C, G), s := min(D, H)width_3 := |r-p|, height_3 := |s-q|area - (width_3 * height_3)রিটার্ন করুন।
পাইথন ইমপ্লিমেন্টেশন
def solve(A, B, C, D, E, F, G, H):
width_1 = abs(C - A)
height_1 = abs(D - B)
width_2 = abs(G - E)
height_2 = abs(H - F)
area = width_1 * height_1 + width_2 * height_2
if (G < A) or (E > C) or (F > D) or (H < B):
return area
else:
p = max(A, E)
q = max(B, F)
r = min(C, G)
s = min(D, H)
width_3 = abs(r - p)
height_3 = abs(s - q)
return area - (width_3 * height_3)
# টেস্ট
A, B, C, D = -3, 0, 3, 4
E, F, G, H = 0, -1, 9, 2
print(solve(A, B, C, D, E, F, G, H)) # আউটপুট: 45
ইনপুট
-3, 0, 3, 4, 0, -1, 9, 2
আউটপুট
45