สมมติว่าเราต้องการหาพื้นที่ทั้งหมดที่ครอบคลุมด้วยสี่เหลี่ยมเส้นตรงสองรูปในระนาบ 2D ในที่นี้สี่เหลี่ยมแต่ละอันถูกกำหนดโดยมุมล่างซ้ายและมุมบนขวาตามที่แสดงในภาพ

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- width_1 :=|C-A|, height_1 :=|D-B|
- width_2 :=|G-E|, height_2 :=|H-F|
- พื้นที่ :=width_1*height_1 + width_2*height_2
- ถ้า (GC) หรือ (F>D) หรือ (H
- จุดส่งกลับ
- p :=สูงสุดของ A, E
- q :=สูงสุด B, F
- r :=ขั้นต่ำของ C, G
- s :=ขั้นต่ำของ D, H
- width_3 :=|r-p|
- height_3 :=|s-q|
- พื้นที่ส่งกลับ - (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 = -3
B = 0
C = 3
D = 4
E = 0
F = -1
G = 9
H = 2
print(solve(A, B, C, D, E, F, G, H)) อินพุต
-3, 0, 3, 4, 0, -1, 9, 2
ผลลัพธ์
45