কম্পিউটার

পাইথনে বহুভুজের এলাকা খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন আমাদের কাছে অর্ডার করা পয়েন্টের একটি তালিকা রয়েছে যা একটি 2D সমতলে একটি সাধারণ বহুভুজ শেষ বিন্দুকে উপস্থাপন করে। আমাদের এই বহুভুজের ক্ষেত্রফল বের করতে হবে।

সুতরাং, যদি ইনপুট পয়েন্টের মত হয় =[(0, 0), (0,5), (3, 5), (3,0)], তাহলে আউটপুট হবে 15।

পাইথনে বহুভুজের এলাকা খুঁজে বের করার জন্য প্রোগ্রাম

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি ফাংশন getInfo() সংজ্ঞায়িত করুন। এটি x1, y1, x2, y2
  • লাগবে
  • রিটার্ন x1*y2 - y1*x2
  • মূল পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন
  • N :=পয়েন্টের আকার
  • (firstx, firsty) :=পয়েন্ট[0]
  • (prevx, prevy) :=(firstx, firsty)
  • res :=0
  • 1 থেকে N-1 রেঞ্জের মধ্যে
  • এর জন্য, করুন
    • (nextx, nexty) :=পয়েন্ট[i]
    • res :=res + getInfo(prevx, prevy, nextx, nexty)
    • prevx :=nextx
    • prevy :=nexty
  • res :=res + getInfo(prevx, prevy, firstx, firsty)
  • রিটার্ন | রিটার্ন | / 2.0

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

def getInfo(x1, y1, x2, y2):
   return x1*y2 - y1*x2

def solve(points):
   N = len(points)
   firstx, firsty = points[0]
   prevx, prevy = firstx, firsty
   res = 0

   for i in range(1, N):
      nextx, nexty = points[i]
      res = res + getInfo(prevx,prevy,nextx,nexty)
      prevx = nextx
      prevy = nexty
   res = res + getInfo(prevx,prevy,firstx,firsty)
   return abs(res)/2.0

points = [(0, 0), (0,5), (3, 5), (3,0)]
print(solve(points))

ইনপুট

[(0, 0), (0,5), (3, 5), (3,0)]

আউটপুট

15.0

  1. জাভা প্রোগ্রাম স্কোয়ারের এলাকা খুঁজে বের করতে

  2. পাইথনে দুটি আয়তক্ষেত্র দ্বারা আচ্ছাদিত মোট এলাকা খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে বহুভুজের পরিধি খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে হিস্টোগ্রামের অধীনে বৃহত্তম আয়তক্ষেত্র এলাকা খুঁজে বের করার প্রোগ্রাম