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

पायथन में जांचने का प्रोग्राम कि पॉइंट्स कॉनकेव पॉलीगॉन बना रहे हैं या नहीं

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

पायथन में जांचने का प्रोग्राम कि पॉइंट्स कॉनकेव पॉलीगॉन बना रहे हैं या नहीं

इस डायग्राम से स्पष्ट है कि प्रत्येक तीन क्रमागत पॉइंट्स के लिए आंतरिक कोण 180° से अधिक नहीं है सिवाय CDE के।

तो, यदि इनपुट points = [(3,4), (4,7),(7,8),(8,4),(12,3),(10,1),(5,2)] है, तो आउटपुट True होगा।

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

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

उदाहरण

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

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. Python में ट्री के सभी मान समान हैं या नहीं, इसकी जांच करने का प्रोग्राम Python में ट्री के सभी मान समान हैं या नहीं, इसकी जांच करने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी ट्री है, हमें यह जांचना है कि ट्री में सभी नोड्स के समान मान हैं या नहीं। तो, यदि इनपुट इस तरह है तो आउटपुट True होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे: solve() फ़ंक्शन परिभाषित करें। यह root और val लेगा यदि root null है, तो True लौटाएं यदि val परिभाष

  1. पायथन में BST से रेंज में नहीं आने वाले सभी नोड्स को हटाने का प्रोग्राम पायथन में BST से रेंज में नहीं आने वाले सभी नोड्स को हटाने का प्रोग्राम

    मान लीजिए हमारे पास एक BST है, और दो मान low और high हैं, हमें उन सभी नोड्स को हटाना है जो [low, high] (सम्मिलित) के बीच नहीं हैं। उदाहरण के लिए, यदि इनपुट जैसा है: low = 7, high = 10, तो आउटपुट होगा: इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे: solve() फंक्शन परिभाषित करें जो root, low, hi

  1. - पायथन प्रोग्राम: चेक करना कि लिस्ट में सभी वैल्यूज़ दिए गए मान से अधिक हैं या नहीं

    लिस्ट दी गई है और चेकिंग वैल्यू दी गई है, लिस्ट में उन सभी वैल्यूज़ को प्रदर्शित करें जो दिए गए मान से अधिक हैं।उदाहरणInput: A=[10, 20, 30, 40, 50] Given value=20 Output: No Input: A=[10, 20, 30, 40, 50] Given value=5 Output: Yesएल्गोरिदमचरण 1: यूजर इनपुट लिस्ट बनाएं। चरण 2: चेकिंग वैल्यू इनपुट करें