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

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


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

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

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

इसलिए, यदि इनपुट score = "1001100110111001110011011" है, तो आउटपुट Team won होगा।

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

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

  • score_cnt := [0, 0]
  • i को 0 से len(score)-1 तक के लिए:
    • pos := ord(score[i]) - ord('0')
    • score_cnt[pos] += 1
    • यदि score_cnt[0] == n और score_cnt[1] < n - 1, तो "Team lost" लौटाएं।
    • यदि score_cnt[1] == n और score_cnt[0] < n - 1, तो "Team won" लौटाएं।
    • यदि score_cnt[0] == n - 1 और score_cnt[1] == n - 1:
      • score_cnt[0] := 0, score_cnt[1] := 0
      • लूप से बाहर निकलें।
  • i := i + 1
  • i से len(score)-1 तक के लिए:
    • pos := ord(score[i]) - ord('0')
    • score_cnt[pos] += 1
    • यदि |score_cnt[0] - score_cnt[1]| == 2:
      • यदि score_cnt[0] > score_cnt[1], तो "Team lost" लौटाएं।
      • अन्यथा, "Team won" लौटाएं।

उदाहरण

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

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. पायथन में दिए गए बाइनरी ट्री में सबसे बड़ा परफेक्ट सबट्री खोजें पायथन में दिए गए बाइनरी ट्री में सबसे बड़ा परफेक्ट सबट्री खोजें

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