Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình kiểm tra hai hình chữ nhật có giao nhau không trong Python

Cho hai hình chữ nhật được biểu diễn bằng danh sách bốn phần tử [x1, y1, x2, y2], trong đó (x1, y1) là góc dưới bên trái, (x2, y2) là góc trên bên phải. Hai hình chữ nhật giao nhau khi diện tích giao nhau dương (chạm cạnh hoặc góc không tính).

Ví dụ

Đầu vào: R1 = [0,0,2,2], R2 = [1,1,3,3].
Đầu ra: True.

Thuật toán

Hai hình chữ nhật không giao nhau nếu một trong các điều kiện sau đúng:

  • R1[0] >= R2[2] (R1 ở bên phải R2)
  • R1[2] <= R2[0] (R1 ở bên trái R2)
  • R1[3] <= R2[1] (R1 ở bên dưới R2)
  • R1[1] >= R2[3] (R1 ở bên trên R2)

Nếu không có điều kiện nào đúng, trả về True.

Mã nguồn Python

class Solution:
    def solve(self, R1, R2):
        if (R1[0] >= R2[2]) or (R1[2] <= R2[0]) or (R1[3] <= R2[1]) or (R1[1] >= R2[3]):
            return False
        else:
            return True

ob = Solution()
print(ob.solve([0,0,3,3], [1,1,4,4]))

Đầu vào / Đầu ra

Input: [0,0,3,3], [1,1,4,4]
Output: True