এক সেট কার্টেশিয়ান পয়েন্ট points দেওয়া আছে। পোলার অ্যাঙ্গেল (০ থেকে ২π) অনুযায়ী সর্ট করুন। একই অ্যাঙ্গেল হলে ওরিজিন থেকে দূরত্ব অনুযায়ী সাজান।
উদাহরণ
points = [(1,1), (1,-2),(-2,2),(5,4),(4,5),(2,3),(-3,4)]
আউটপুট: [(5, 4), (1, 1), (4, 5), (2, 3), (-3, 4), (-2, 2), (1, -2)]
এলগরিদম
- কমপারেটর
key(x)সংজ্ঞায়িত করুন:atan := atan2(y, x)- রিটার্ন
(atan, x²+y²)যদিatan >= 0অন্যথায়(2π+atan, x²+y²)
sorted(points, key=key)রিটার্ন করুন।
পাইথন কোড
import math
def solve(points):
def key(x):
atan = math.atan2(x[1], x[0])
return (atan, x[1]**2 + x[0]**2) if atan >= 0 else (2*math.pi + atan, x[0]**2 + x[1]**2)
return sorted(points, key=key)
points = [(1,1), (1,-2),(-2,2),(5,4),(4,5),(2,3),(-3,4)]
print(solve(points))
# আউটপুট: [(5, 4), (1, 1), (4, 5), (2, 3), (-3, 4), (-2, 2), (1, -2)]
ইনপুট / আউটপুট
[(1,1), (1,-2),(-2,2),(5,4),(4,5),(2,3),(-3,4)] [(5, 4), (1, 1), (4, 5), (2, 3), (-3, 4), (-2, 2), (1, -2)]