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

पायथन में कितनी रेखाएँ प्रतिच्छेद करती हैं, यह जानने के लिए कार्यक्रम

मान लीजिए हमें एक सूची दी गई है जिसमें (m, c) के युग्मों में मान हैं। ये मान एक रेखा का प्रतिनिधित्व करते हैं, जहां y =mx + c। हमें दो मान, l और r भी दिए गए हैं। हमें x =l से x =h के बीच एक दूसरे को प्रतिच्छेद करने वाली रेखाओं की संख्या ज्ञात करनी है।

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

पायथन में कितनी रेखाएँ प्रतिच्छेद करती हैं, यह जानने के लिए कार्यक्रम

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

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

  • seg :=जोड़े वाली एक सूची [(m * l + c, m * h + c, i) अनुक्रमणिका i के लिए, और मान (m, c) input_list में]
  • सूची क्रमित करें
  • उत्तर :=0s युक्त input_list के आकार की एक नई सूची
  • c :=seg से एक नया नक्शा
  • सेग में प्रत्येक (x, y, i) के लिए, करें
    • अगर c[x]> 1, तो
      • उत्तर[i] :=1
  • max_c :=-(10 ^ 10)
  • prv :=-(10 ^ 10)
  • सेग में प्रत्येक (x, y, i) के लिए, करें
    • यदि x, prv के समान है, तो
      • उत्तर[i] :=1
    • यदि y <=max_c, तो
      • उत्तर[i] :=1
    • max_c :=अधिकतम (max_c, y)
      • पीआरवी:=एक्स
  • min_c =10 ^ 10
  • पीआरवी =10 ^ 10
  • प्रत्येक के लिए (x, y, i) seg उलट में, करें
    • यदि x, prv के समान है, तो
      • उत्तर[i] :=1
    • यदि y>=min_c, तो
      • उत्तर[i] :=1
    • min_c :=न्यूनतम (min_c, 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. कितने क्यूब्स काटे गए यह पता लगाने के लिए पायथन प्रोग्राम

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

  1. पायथन प्रोग्राम कैसे चलाएं?

    कोड लिखने के बाद, हमें आउटपुट को निष्पादित करने और प्राप्त करने के लिए कोड को चलाने की आवश्यकता होती है। प्रोग्राम चलाने पर, हम जांच सकते हैं कि कोड सही लिखा है या नहीं और वांछित आउटपुट देता है। पायथन प्रोग्राम चलाना काफी आसान काम है। आईडीएलई पर चलाएं IDLE पर पायथन प्रोग्राम चलाने के लिए, दिए गए च

  1. प्रोग्राम यह पता लगाने के लिए कि हम पायथन में कुल कितनी बारिश पकड़ सकते हैं

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