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

โปรแกรมตรวจสอบสองสี่เหลี่ยมทับซ้อนกันหรือไม่ใน Python


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

ดังนั้น หากอินพุตเป็น R1 =[0,0,2,2], R2 =[1,1,3,3] ผลลัพธ์จะเป็น True

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ถ้า R1[0]>=R2[2] หรือ R1[2]<=R2[0] หรือ R1[3]<=R2[1] หรือ R1[1]>=R2[3] แล้ว
    • คืนค่าเท็จ
  • มิฉะนั้น
    • คืนค่า True

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

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

อินพุต

[0,0,3,3],[1,1,4,4]

ผลลัพธ์

True