Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Rectangle Overlap ใน Python: ตรวจสอบการทับซ้อนของสี่เหลี่ยม

สี่เหลี่ยมผืนผ้าแทนด้วยรายการ [x1, y1, x2, y2] โดย (x1, y1) คือมุมล่างซ้าย และ (x2, y2) คือมุมบนขวา สองสี่เหลี่ยมทับซ้อนกันก็ต่อเมื่อพื้นที่การตัดกันเป็นบวก (แค่สัมผัสขอบหรือมุมไม่นับ)

ตัวอย่าง

R1 = [0,0,2,2], R2 = [1,1,3,3] → True (มีพื้นที่ทับซ้อน)

ขั้นตอนการแก้ปัญหา

สองสี่เหลี่ยม ไม่ ทับซ้อนกัน กรณีใดกรณีหนึ่งต่อไปนี้เป็นจริง:

  • R1[0] >= R2[2] (R1 อยู่ขวา R2)
  • R1[2] <= R2[0] (R1 อยู่ซ้าย R2)
  • R1[3] <= R2[1] (R1 อยู่ล่าง R2)
  • R1[1] >= R2[3] (R1 อยู่บน R2)

หากไม่ใช่กรณีใด ๆ ข้างต้น → ทับซ้อนกัน → คืน True

การติดตั้งใน Python

class Solution:
    def isRectangleOverlap(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
        return True

ob = Solution()
print(ob.isRectangleOverlap([0,0,2,2], [1,1,3,3]))  # True

อินพุต / เอาต์พุต

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