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

उस गेम के विजेता का पता लगाएं जहां पायथन में बाइनरी स्ट्रिंग के रूप में स्कोर दिए जाते हैं


मान लीजिए कि हमारे पास वॉलीबॉल मैच के स्कोर का प्रतिनिधित्व करने वाला एक बाइनरी स्ट्रिंग है, हमें निम्नलिखित शर्तों के आधार पर मैच के विजेता को ढूंढना होगा -

  • दो टीमें एक-दूसरे के साथ खेलती हैं और जो टीम पहले 15 अंक हासिल करती है, वह विजेता होगी, सिवाय इसके कि जब दोनों टीमें 14 अंकों तक पहुंच गई हों।

  • जब दोनों टीमें उस समय 14 अंक तक पहुंच जाएंगी तो दो अंकों की बढ़त बनाए रखने वाली टीम विजेता होगी।

दिए गए बाइनरी स्ट्रिंग से, 0 टीम को एक अंक खोने का प्रतिनिधित्व कर रहा है और 1 इंगित करता है कि टीम एक अंक जीतती है। हमें यह देखना होगा कि टीम मैच जीती थी या हार गई थी।

इसलिए, यदि इनपुट स्कोर ="1001100110111001110011011" जैसा है, तो आउटपुट टीम जीती जाएगी

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

  • Score_cnt :=[0,0]

  • मैं के लिए 0 से लेकर स्कोर के आकार तक, करें

    • pos:=ASCII of(score[i]) - ASCII of('0')

    • Score_cnt[pos] :=Score_cnt[pos] + 1

    • अगर Score_cnt[0] n और Score_cnt[1] − n-1 के समान है, तो

      • वापसी "टीम हार गई"

    • अगर Score_cnt[1] n के समान है और Score_cnt[0]

      • वापसी "टीम जीती"

    • अगर Score_cnt[0] n-1 के समान है और Score_cnt[1] n-1 के समान है, तो

      • Score_cnt[0] :=0

      • Score_cnt[1] :=0

      • लूप से बाहर आएं

  • मैं :=मैं + 1

  • क्योंकि मैं स्कोर के आकार की सीमा में हूं, ऐसा करें

    • pos:=ASCII of(score[i]) - ASCII of('0')

    • Score_cnt[pos] :=Score_cnt[pos] + 1

    • अगर |score_cnt[0] - Score_cnt[1]| 2 के समान है, तो

      • अगर Score_cnt[0]> Score_cnt[1], तो

        • वापसी "टीम हार गई"

      • अन्यथा,

        • वापसी "टीम जीती"

उदाहरण

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

def predictWinner(score, n):
score_cnt = [0,0]
   for i in range(len(score)):
      pos = ord(score[i]) - ord('0')
      score_cnt[pos] += 1
      if (score_cnt[0] == n and score_cnt[1] < n - 1):
         return "Team lost"
      if (score_cnt[1] == n and score_cnt[0] < n - 1):
         return "Team won"
      if (score_cnt[0] == n - 1 and
         score_cnt[1] == n - 1):
         score_cnt[0] = 0
         score_cnt[1] = 0
         break
   i += 1
   for i in range(i, len(score)):
      pos = ord(score[i]) - ord('0')
      score_cnt[pos] += 1
      if (abs(score_cnt[0] - score_cnt[1]) == 2):
         if (score_cnt[0] > score_cnt[1]):
            return "Team lost"
         else:
            return "Team won"
score = "1001010101111011101111"
n = 15
print(predictWinner(score, n))

इनपुट

"1001010101111011101111"

आउटपुट

Team won

  1. पायथन में दिए गए बाइनरी ट्री में सबसे बड़ा पूर्ण उपट्री खोजें

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें इस बाइनरी ट्री में अधिकतम पूर्ण उप-वृक्ष का आकार खोजना होगा। जैसा कि हम जानते हैं कि एक पूर्ण बाइनरी ट्री एक बाइनरी ट्री है यदि सभी स्तर पूरी तरह से बिना संभावित अंतिम स्तर के भरे हुए हैं और अंतिम स्तर में यथासंभव सभी कुंजियाँ हैं। तो, अगर इनपुट पसंद है

  1. लेक्सिकोग्राफिक रूप से सबसे छोटी स्ट्रिंग खोजें जो पायथन में दी गई शर्त को पूरा करती है

    मान लीजिए कि हमारे पास n संख्याओं की एक सरणी A है, जहां A[i] एक स्ट्रिंग s की लंबाई (i + 1) के उपसर्ग में अलग-अलग वर्णों की संख्या को इंगित करता है, हमें यह करना होगा दी गई उपसर्ग सरणी को संतुष्ट करने वाली लेक्सिकोग्राफिक रूप से सबसे छोटी स्ट्रिंग खोजें। सभी अक्षर लोअरकेस अंग्रेजी अक्षर [a-z] होंगे।

  1. पायथन में दिए गए बाइनरी ट्री में सबसे बड़ा परफेक्ट सबट्री खोजें

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