मान लीजिए, एक बहुभुज है जिसमें n शीर्ष, n फ़्लिपिंग अक्ष और n घूर्णन बिंदु हैं। फ़्लिपिंग कुल्हाड़ियों और घूर्णन बिंदुओं के लिए निम्नलिखित सत्य हैं
- यदि n विषम है, तो प्रत्येक फ़्लिपिंग अक्ष केवल एक शीर्ष और विपरीत दिशा के मध्य से होकर गुजरता है।
- यदि n सम है, तो कुल्हाड़ियों का आधा भाग विपरीत शीर्षों के युग्म से होकर गुजरता है और शेष आधा विपरीत भुजाओं के युग्म से होकर गुजरता है।
- निम्नलिखित दो अक्षों का कोण 360/2n है।
अब, हम दिए गए बहुभुज को घुमाते हैं। हमारे पास n विभिन्न प्रकार के रोटेटर हैं, एक k-रोटेटर बहुभुज को अक्ष k दक्षिणावर्त (360 x k)/n डिग्री पर घुमाता है। एक सूची इनपुट सूची है जिसमें पूर्णांकों के कई जोड़े हैं। एक जोड़ी का पहला पूर्णांक दर्शाता है कि बहुभुज को घुमाया या घुमाया जाना है। यदि पहला पूर्णांक 1 है तो बहुभुज घुमाया जाता है, यदि यह 2 है तो बहुभुज फ़्लिप किया जाता है। दूसरा पूर्णांक k है, यदि बहुभुज को फ़्लिप किया जाता है तो इसे अक्ष k पर फ़्लिप किया जाता है या अन्यथा, यदि इसे घुमाया जाता है तो इसे 360/2n के कोण से घुमाया जाता है। सूची खाली न होने पर घुमाव और फ़्लिपिंग की जाती है।
यहां हमारा काम सूची में एक और तत्व जोड़ना है ताकि बहुभुज को उसकी प्रारंभिक स्थिति में रीसेट किया जा सके।
छवि दो प्रकार के बहुभुजों के घूर्णन अक्षों को निर्दिष्ट करती है।
इसलिए, यदि इनपुट n =6, input_list =[[1, 2], [1, 4], [2, 3], [2, 5], [1, 6]] जैसा है, तो आउटपुट होगा (1, 4)
परिवर्तनों के बाद, चौथे अक्ष के साथ एक घुमाव बहुभुज को उसकी प्रारंभिक स्थिति में रीसेट कर देगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- निर्णय_वार:=गलत
- स्थिति:=0
- इनपुट_सूची में प्रत्येक आइटम के लिए, करें
- x:=आइटम [0]
- y:=आइटम[1]
- यदि x 1 के समान है, तो
- स्थिति:=स्थिति + y
- अन्यथा
- स्थिति:=y - स्थिति
- निर्णय_वार:=नहीं(निर्णय_वार)
- स्थिति:=स्थिति मोड n
- यदि निर्णय_वर शून्य नहीं है, तो
- एक जोड़ी लौटाएं (2, स्थिति)
- अन्यथा,
- एक जोड़ी लौटाएं (1, n - स्थिति)
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(n, input_list): decision_var = False position = 0 for item in input_list: x = item[0] y = item[1] if x == 1: position += y else: position = y - position decision_var = not decision_var position = position % n if decision_var: return (2, position) else: return (1, n - position) print(solve(6, [[1, 2], [1, 4], [2, 3], [2, 5], [1, 6]]))
इनपुट
6, [[1, 2], [1, 4], [2, 3], [2, 5], [1, 6]]
आउटपुट
(1, 4)