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

बिंदुओं की जाँच करने के लिए प्रोग्राम अवतल बहुभुज बना रहे हैं या नहीं पायथन में

मान लीजिए कि हमारे पास बहुभुज के बाहरी बिंदु दक्षिणावर्त क्रम में हैं। हमें यह जांचना है कि ये बिंदु उत्तल बहुभुज बना रहे हैं या नहीं। एक बहुभुज को अवतल कहा जाता है यदि उसका कोई एक आंतरिक कोण 180° से अधिक हो।

बिंदुओं की जाँच करने के लिए प्रोग्राम अवतल बहुभुज बना रहे हैं या नहीं पायथन में

इस आरेख से यह स्पष्ट है कि सीडीई को छोड़कर प्रत्येक तीन क्रमागत बिंदुओं के लिए आंतरिक कोण 180° से अधिक नहीं है।

तो, यदि इनपुट अंक की तरह है =[(3,4), (4,7),(7,8),(8,4),(12,3),(10,1),(5,2 )], तो आउटपुट ट्रू होगा।

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

  • n :=बिंदुओं का आकार
  • मैं के लिए 0 से लेकर अंकों के आकार तक, करें
    • p1 :=अंक[i-2] जब i> 1, अन्यथा अंक[n-2]
    • p2 :=पॉइंट्स[i-2] जब i> 0, अन्यथा पॉइंट्स[n-1]
    • p3:=अंक[i]
    • यदि बिंदुओं के बीच का कोण (p1, p2, p3)> 180, तो
      • सही लौटें
  • झूठी वापसी

उदाहरण

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

import math
def get_angle(a, b, c):
   angle = math.degrees(math.atan2(c[1]-b[1], c[0]-b[0]) - math.atan2(a[1]-b[1], a[0]-b[0]))
   return angle + 360 if angle < 0 else angle

def solve(points):
   n = len(points)
   for i in range(len(points)):
      p1 = points[i-2]
      p2 = points[i-1]
      p3 = points[i]
      if get_angle(p1, p2, p3) > 180:
         return True
   return False

points = [(3,4), (4,7),(7,8),(8,4),(12,3),(10,1),(5,2)]
print(solve(points))

इनपुट

[(3,4), (4,7),(7,8),(8,4),(12,3),(10,1),(5,2)]

आउटपुट

True

  1. ढेर की जाँच करने का कार्यक्रम पायथन में अधिकतम ढेर बना रहा है या नहीं

    मान लीजिए कि हमारे पास ढेर के पेड़ का प्रतिनिधित्व करने वाली एक सूची है। जैसा कि हम जानते हैं कि हीप एक पूर्ण बाइनरी ट्री है। हमें यह जांचना है कि तत्व अधिकतम ढेर बना रहे हैं या नहीं। जैसा कि हम जानते हैं कि अधिकतम ढेर के लिए प्रत्येक तत्व अपने दोनों बच्चों से बड़ा होता है। इसलिए, यदि इनपुट nums =[

  1. बिंदुओं की जाँच करने का कार्यक्रम पायथन में उत्तल पतवार बना रहा है या नहीं

    मान लीजिए कि हमारे पास बहुभुज के बाहरी बिंदु दक्षिणावर्त क्रम में हैं। हमें यह जांचना होगा कि ये बिंदु उत्तल पतवार बना रहे हैं या नहीं। इस आरेख से यह स्पष्ट है कि प्रत्येक तीन क्रमागत बिंदुओं के लिए आंतरिक कोण 180° से अधिक नहीं होता है। इसलिए यदि सभी कोण 180° से अधिक नहीं हैं तो बहुभुज उत्तल पतवा

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

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