কম্পিউটার

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


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

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

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

দুটি বাহুর দৈর্ঘ্য 3 এবং দুটি বাহুর দৈর্ঘ্য 5, তাই 2*5 + 2*3 =16৷

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

  • একটি ফাংশন getInfo() সংজ্ঞায়িত করুন। এটি x1, y1, x2, y2
  • লাগবে
  • (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)) এর বর্গমূল ফেরত যা ইউক্লিডীয় দূরত্ব
  • এর মধ্যে (x1, y1) এবং (x2, y2)
  • মূল পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন
  • 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)
  • রিটার্ন রিটার্ন

উদাহরণ

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

from math import sqrt
def getInfo(x1, y1, x2, y2):
   return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))

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 res

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

ইনপুট

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

আউটপুট

16.0

  1. পাইথন প্রোগ্রাম একটি বড় সংখ্যার ফ্যাক্টরিয়াল খুঁজে বের করতে

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

  3. পাইথন প্রোগ্রামে একটি সিলিন্ডারের পরিধি খুঁজুন

  4. একটি সিলিন্ডারের পরিধি খুঁজে বের করার জন্য পাইথন প্রোগ্রাম