मान लीजिए कि हमारे पास एक सूची में कार्टेशियन बिंदुओं का एक सेट है जिसे अंक कहा जाता है। हमें उन्हें उनके ध्रुवीय कोणों के आधार पर क्रमबद्ध करना होगा। ध्रुवीय कोण 0 और 2*PI श्रेणी में भिन्न होते हैं। यदि कुछ बिंदुओं में समान ध्रुवीय कोण हैं, तो उन्हें उस बिंदु की मूल बिंदु से दूरी के आधार पर व्यवस्थित करें।
तो, यदि इनपुट अंक की तरह है =[(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 लगेगा
- अतन:=x[1]/x[0] का तन-व्युत्क्रम
- वापसी जोड़ी (एतन, x[1]^2+x[0]^2) अगर अतन>=0 अन्यथा (2*pi + atan, x[0]^2+x[1]^2)ली>
- फिर तुलनित्र फ़ंक्शन कुंजी () का उपयोग करके अंक सॉर्ट करें ()
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
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))
इनपुट
[(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)]