Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

दिए गए बहुभुज के अंदर या सीमा में दिए गए बिंदु की जाँच करने के लिए कार्यक्रम या नहीं अजगर में

मान लीजिए कि हमारे पास कार्तीय बिंदुओं की एक सूची है [(x1, y1), (x2, y2), ..., (xn, yn)], जो एक बहुभुज का प्रतिनिधित्व कर रहा है, और दो मान x और y भी हैं, हमें यह करना होगा जांचें कि क्या (x, y) इस बहुभुज के अंदर या सीमा पर स्थित है।

इसलिए, यदि इनपुट अंक की तरह है =[(0, 0), (1, 3), (4, 4), (6, 2), (4, 0)] pt =(3, 1)

दिए गए बहुभुज के अंदर या सीमा में दिए गए बिंदु की जाँच करने के लिए कार्यक्रम या नहीं अजगर में

तो आउटपुट सही होगा

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • उत्तर:=असत्य
  • i के लिए 0 से लेकर बहुभुज के आकार के लिए - 1, do
    • (x0, y0) :=बहुभुज[i]
    • (x1, y1) :=बहुभुज[(i + 1) बहुभुज का आधुनिक आकार]
    • यदि pt[1] न्यूनतम y0, y1 और अधिकतम y0, y1 की सीमा में नहीं है, तो
      • अगले पुनरावृत्ति के लिए जाएं
    • यदि pt[0] <न्यूनतम x0 और x1, तो
      • अगले पुनरावृत्ति के लिए जाएं
    • cur_x :=x0 यदि x0, x1 के समान है अन्यथा x0 + (pt[1] - y0) *(x1 - x0) /(y1 - y0)
    • उत्तर:=उत्तर XOR (1 जब pt[0]> cur_x सत्य है, अन्यथा 0)
  • वापसी उत्तर

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

class Solution:
   def solve(self, polygon, pt):
      ans = False
      for i in range(len(polygon)):
         x0, y0 = polygon[i]
         x1, y1 = polygon[(i + 1) % len(polygon)]
         if not min(y0, y1) < pt[1] <= max(y0, y1):
            continue
         if pt[0] < min(x0, x1):
            continue
         cur_x = x0 if x0 == x1 else x0 + (pt[1] - y0) * (x1 - x0) / (y1 - y0)
         ans ^= pt[0] > cur_x
      return ans

ob = Solution()
points = [(0, 0), (1, 3), (4, 4), (6, 2), (4, 0)]
pt = (3, 1)
print(ob.solve(points, pt))

इनपुट

[(0, 0), (1, 3), (4, 4), (6, 2), (4, 0)], (3, 1)

आउटपुट

True

  1. पायथन में दिया गया पेड़ सममित पेड़ है या नहीं, यह जांचने के लिए कार्यक्रम

    मान लीजिए हमारे पास एक बाइनरी ट्री है। हमें यह जांचना है कि वृक्ष सममित वृक्ष है या नहीं। एक पेड़ को सममित कहा जाएगा यदि वह समान है जब हम उसका दर्पण प्रतिबिम्ब लेते हैं। इन दो पेड़ों से, पहला सममित है, लेकिन दूसरा नहीं है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे। हम निम्नलिखित चरणों क

  1. पायथन में दिया गया ग्राफ द्विदलीय है या नहीं, यह जांचने के लिए कार्यक्रम

    मान लीजिए कि हमारे पास एक अप्रत्यक्ष ग्राफ है, हमें यह जांचना है कि ग्राफ द्विदलीय है या नहीं। जैसा कि हम जानते हैं कि एक ग्राफ द्विदलीय होता है जब हम ग्राफ के नोड्स को दो सेट ए और बी में विभाजित कर सकते हैं जैसे कि ग्राफ के प्रत्येक किनारे {यू, वी} में ए में एक नोड और बी में दूसरा नोड वी होता है।

  1. पायथन प्रोग्राम यह जांचने के लिए कि दी गई स्ट्रिंग कीवर्ड है या नहीं

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक नंबर दिया गया है, हमें यह जांचना होगा कि संख्या दो की शक्ति है या नहीं। कीवर्ड विशिष्ट उपयोग के साथ किसी भी भाषा द्वारा आरक्षित विशेष शब्द हैं और पहचानकर्ता के रूप में उपयोग नहीं किए जा सकते हैं। यह जांचने