Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm tổng diện tích được bao phủ bởi hai hình chữ nhật bằng Python

Giả sử chúng ta muốn tìm tổng diện tích được bao phủ bởi hai hình chữ nhật tuyến tính trong một mặt phẳng 2D. Ở đây, mỗi hình chữ nhật được xác định bởi góc dưới cùng bên trái và góc trên cùng bên phải như trong hình.

Chương trình tìm tổng diện tích được bao phủ bởi hai hình chữ nhật bằng Python

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • width_1:=| C-A |, height_1:=| D-B |
  • width_2:=| G-E |, height_2:=| H-F |
  • khu vực:=width_1 * height_1 + width_2 * height_2
  • nếu (G C) hoặc (F> D) hoặc (H
  • khu vực trả lại
  • nếu không,
    • p:=tối đa là A, E
    • q:=tối đa là B, F
    • r:=tối thiểu là C, G
    • s:=tối thiểu là D, H
    • width_3:=| r-p |
    • height_3:=| s-q |
    • vùng trả lại - (width_3 * height_3)
  • Ví dụ

    Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

    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))

    Đầu vào

    -3, 0, 3, 4, 0, -1, 9, 2
    

    Đầu ra

    45