কম্পিউটার টিউটোরিয়াল

পাইথনে আয়ত ওভারল্যাপ (Rectangle Overlap) যাচাই


সমস্যা বিবরণ

দুটি অক্ষ-সমান্তরাল (axis-aligned) আয়ত দেওয়া থাকে, প্রতিটি [x1, y1, x2, y2] ফরম্যাটে (নিচের বাম এবং উপরের ডান কোণার কোঅর্ডিনেট)। দুটি আয়ত ওভারল্যাপ করে কিনা (ইন্টারসেকশন এর এলিয়া পজিটিভ কিনা) তা যাচাই করুন। শুধু কোণা বা প্রান্ত স্পর্শ করলে ওভারল্যাপ না মনে করা হয়।

উদাহরণ

R1 = [0,0,2,2], R2 = [1,1,3,3] → আউটপুট: True

এলগরিদম

দুটি আয়ত ওভারল্যাপ করে না যদি:

  • R1, R2-এর ডান পাশে থাকে: R1[0] >= R2[2]
  • R1, R2-এর বাম পাশে থাকে: R1[2] <= R2[0]
  • R1, R2-এর নিচে থাকে: R1[3] <= R2[1]
  • R1, R2-এর উপরে থাকে: R1[1] >= R2[3]

উপরোক্ত যেকোনো শর্ত সত্য হলে False, অন্যথায় True।

পাইথন বাস্তবায়ন

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

ইনপুট / আউটপুট

ইনপুট: [0,0,2,2], [1,1,3,3]
আউটপুট: True
  1. পাইথনে চারটি পাশ (side) দিয়ে আয়তাকার তৈরি সম্ভব কিনা যাচাই করার পদ্ধতি

  2. পাইথনে যাচাই করুন পয়েন্ট আয়তাকার (rectangle) এর ভিতরে বা বাউন্ডারি на আছে কিনা

  3. পাইথনে হিস্টোগ্রামে সবচেয়ে বড় আয়ত

  4. পাইথনে isNumber() ফাংশন বাস্তবায়ন