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

सभी सूचीबद्ध वितरण कार्यों की जाँच करने के लिए कार्यक्रम पायथन में मान्य हैं या नहीं

मान लीजिए कि हमारे पास ऑर्डर नामक स्ट्रिंग्स की एक सूची है। ऑर्डर सूची में प्रत्येक तत्व "पी" या "डी" से शुरू होता है। "पी" इंगित करता है कि उठाया गया है, और "डी" का अर्थ है "वितरण"। और इन अक्षरों के बाद ऑर्डर आईडी नंबर आता है। उदाहरण के लिए, "P6" पिकअप ऑर्डर 6 को इंगित करता है। हमें यह जांचना होगा कि इन नियमों के आधार पर ऑर्डर सूची मान्य है या नहीं -

  • हम पिकअप से पहले ऑर्डर डिलीवरी नहीं कर सकते
  • हर पिकअप डिलीवर होनी चाहिए
  • एक ऑर्डर जो पहले ही उठा लिया गया है और डिलीवर भी किया जा चुका है, उसे फिर से उठाया या डिलीवर नहीं किया जा सकता है

इसलिए, यदि इनपुट ऑर्डर की तरह है =["P1", "D1", "P2", "P3", "D3", "D2"], तो आउटपुट ट्रू होगा, क्योंकि पहला ऑर्डर लेने के बाद दिया जाता है , और दूसरे और तीसरे क्रम के लिए उन्हें एक बार में उठाया जाता है और अंत में वितरित भी किया जाता है।

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

  • a :=एक नया नक्शा
  • यदि आदेशों में कोई डुप्लिकेट प्रविष्टियां हैं, तो
    • झूठी वापसी
  • आदेश में प्रत्येक i के लिए, करें
    • अगर मैं "P" से शुरू करता हूं, तो
      • a[पिक अप ऑर्डर नंबर] =1
    • अन्यथा जब मैं "D" से शुरू करता हूं, तब
      • यदि आदेश संख्या a में नहीं है, तो
        • झूठी वापसी
      • अन्यथा,
        • a[डिलीवरी ऑर्डर संख्या] 1 की कमी
  • सही लौटें जब सभी मानों की सूची में मौजूद सभी तत्वों का योग 0 के समान हो, अन्यथा गलत

उदाहरण

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

def solve(orders):
   a = {}
   if len(set(orders)) != len(orders):
      return False
   for i in orders:
      if i[0] == "P":
         a[i[1:]] = 1
      elif i[0] == "D":
         if i[1:] not in a:
            return False
         else:
            a[i[1:]] -= 1
   return sum(a.values()) == 0

orders = ["P1", "D1", "P2", "P3", "D3", "D2"]
print(solve(orders))

इनपुट

["P1", "D1", "P2", "P3", "D3", "D2"]

आउटपुट

True

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

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

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

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

  1. ट्री में सभी मानों की जाँच करने का कार्यक्रम पायथन में समान है या नहीं

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