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

पायथन में कितनी रेखाएं प्रतिच्छेद करती हैं यह ढूंढने का प्रोग्राम

मान लीजिए हमें एक लिस्ट दी गई है जिसमें (m, c) मानों के जोड़े हैं। ये मान एक रेखा को दर्शाते हैं, जहां y = mx + c। हमें दो मान l और h भी दिए गए हैं। हमें उन रेखाओं की संख्या ढूंढनी है जो x = l से x = h की रेंज में एक-दूसरे को प्रतिच्छेद करती हैं।

इसलिए, यदि इनपुट input_list = [[4, 6], [-6, 10], [8, 12]], l = 0, h = 2 है, तो आउटपुट 2 होगा।

पायथन में कितनी रेखाएं प्रतिच्छेद करती हैं यह ढूंढने का प्रोग्राम

यदि हम दी गई फोटो को देखें, तो रेखाएं 4x + 6 = 0 और -6x + 10 दी गई रेंज में प्रतिच्छेद करती हैं। तो, दो रेखाएं प्रतिच्छेद कर रही हैं, इसलिए आउटपुट 2 है।

समाधान दृष्टिकोण

  • दोनों बाउंड्स (l और h) पर प्रत्येक रेखा के y-मानों की गणना करें
  • बाएं बाउंड मानों द्वारा सॉर्ट करें
  • स्वीप लाइन एल्गोरिदम का उपयोग करके प्रतिच्छेदन का पता लगाएं
  • कम से कम एक बार प्रतिच्छेद करने वाली रेखाओं की गिनती करें

उदाहरण कार्यान्वयन

from collections import Counter

def solve(input_list, l, h):
    seg = [(m * l + c, m * h + c, i) for i, (m, c) in enumerate(input_list)]
    seg.sort()
    ans = [0 for _ in input_list]
    c = Counter(seg)
    for (x, y, i) in seg:
        if c[x] > 1:
            ans[i] = 1
    max_c = -(10 ** 10)
    prv = -(10 ** 10)
    for (x, y, i) in seg:
        if x == prv:
            ans[i] = 1
        if y <= max_c:
            ans[i] = 1
        max_c = max(max_c, y)
        prv = x
    min_c = 10 ** 10
    prv = 10 ** 10
    for (x, y, i) in seg[::-1]:
        if x == prv:
            ans[i] = 1
        if y >= min_c:
            ans[i] = 1
        min_c = min(min_c, y)
        prv = x
    return sum(ans)

print(solve([[4, 6], [-6, 10], [8, 12]], 0, 2))

इनपुट

[[4, 6], [-6, 10], [8, 12]], 0, 2

आउटपुट

2
  1. Python में कितने क्यूब कटे हैं, यह खोजने का प्रोग्राम Python में कितने क्यूब कटे हैं, यह खोजने का प्रोग्राम

    मान लीजिए, a, b, और c आयामों के कई क्यूब्स हैं, और उनका उपयोग करके axbxc आयाम का एक नया बॉक्स बनाया जाता है। a, b, और c pairwise को-प्राइम हैं; gcd(a, b) = gcd(b,c) = gcd(c, a) = 1। हमें एक सिंगल स्लाइस के साथ बॉक्स को दो टुकड़ों में काटना है जैसा कि चित्र में दिखाया गया है। हमें यह पता करना है कि य

  1. Python Program कैसे चलाएं? Python Program कैसे चलाएं?

    Code लिखने के बाद, हमें code को execute करके output प्राप्त करने के लिए run करने की आवश्यकता होती है। Program चलाने पर, हम जांच सकते हैं कि लिखा गया code सही है और desired output produce करता है। Python program चलाना काफी आसान काम है। IDLE पर चलाएं IDLE पर python program चलाने के लिए, दिए गए steps क

  1. पायथन में हम कितना कुल वर्षा जल पकड़ सकते हैं यह खोजने का प्रोग्राम पायथन में हम कितना कुल वर्षा जल पकड़ सकते हैं यह खोजने का प्रोग्राम

    मान लीजिए हमारे पास n गैर-ऋणात्मक पूर्णांकों की एक सरणी है। ये एक ऊंचाई को दर्शा रहे हैं जहां प्रत्येक बार की चौड़ाई 1 है, हमें गणना करनी है कि बारिश के बाद यह कितना पानी पकड़ सकता है। तो मानचित्र इस तरह होगा −यहां हम 8 नीले बॉक्स देख सकते हैं, इसलिए आउटपुट 8 होगा।इसे हल करने के लिए, हम इन चरण