ধরুন আমাদের একটি অর্ডার্ড পয়েন্টের লিস্ট আছে যা ২D প্লেনে একটি সিম্পল পলিগনের এন্ডপয়েন্ট রিপ্রেজেন্ট করে। আমাদের এই পলিগনের ক্ষেত্রফল বের করতে হবে।
উদাহরণস্বরূপ, যদি ইনপুট points = [(0, 0), (0,5), (3, 5), (3,0)] হয়, তবে আউটপুট হবে 15।

সমাধানের ধাপসমূহ
getInfo()ফাংশন ডিফাইন করুন যাx1, y1, x2, y2নেবে, রিটার্ন করবেx1*y2 - y1*x2- মেইন মেথড থেকে:
N := size of points(firstx, firsty) := points[0](prevx, prevy) := (firstx, firsty)res := 0for i in range 1 to N-1:(nextx, nexty) := points[i]res := res + getInfo(prevx, prevy, nextx, nexty)prevx := nextx,prevy := nexty
res := res + getInfo(prevx, prevy, firstx, firsty)|res| / 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