मान लीजिए हमारे पास 2D तल में तीन सदिश x, y और z हैं। हमें यह जांचना होगा कि क्या हम वेक्टर y को सदिश x से 90 डिग्री (घड़ी की दिशा में) घुमाकर प्राप्त कर सकते हैं या इसमें आवश्यकतानुसार जितनी बार z जोड़ सकते हैं।
इसलिए, यदि इनपुट x =(-4, -2) y =(-1, 2) z =(-2, -1) जैसा है, तो आउटपुट सही होगा क्योंकि हम स्थान प्राप्त करने के लिए x के साथ z जोड़ सकते हैं (-2, -1), फिर (-1, 2) प्राप्त करने के लिए 90° दक्षिणावर्त घुमाएं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
उपयोग() फ़ंक्शन को परिभाषित करें। इसमें p, q, r, s
. लगेगा- d :=r * r + s * s
- यदि d, 0 के समान है, तो
- सही लौटें जब p और q दोनों 0 हों, अन्यथा असत्य
- सही लौटें जब (p * r + q * s) और (q * r - p * s) दोनों d से विभाज्य हों, अन्यथा असत्य
- मुख्य विधि से निम्न कार्य करें -
- यदि कोई उपयोग (x का p - x का q, y का p - q का y, r का x, r का y) या उपयोग (x का x + q का x, p + q का y[ 1], r का x, r का y) या उपयोग (x का p - y का q, y का p + x का q, x का r, y का r) या उपयोग (x का p + y का q, y का p - q का x, r का x, r का y) सत्य है, तो
- सही लौटें
- झूठी वापसी
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def util(p, q, r, s): d = r * r + s * s if d == 0: return p == 0 and q == 0 return (p * r + q * s) % d == 0 and (q * r - p * s) % d == 0 def solve(p,q,r): if util(p[0] - q[0], p[1] - q[1], r[0], r[1]) or util(p[0] + q[0], p[1] + q[1], r[0], r[1]) or util(p[0] - q[1], p[1] + q[0], r[0], r[1]) or util(p[0] + q[1], p[1] - q[0], r[0], r[1]): return True return False p = (-4, -2) q = (-1, 2) r = (-2, -1) print(solve(p, q, r))
इनपुट
(-4, -2), (-1, 2), (-2, -1)
आउटपुट
True