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

पायथन में स्टोन गेम के विजेता ज्ञात करने का प्रोग्राम


मान लीजिए अमल और बिमल एक खेल खेल रहे हैं और अमल की बारी पहले है। खेल इस प्रकार है:

एक ढेर में n पत्थर हैं। प्रत्येक खिलाड़ी ढेर से एक पत्थर ले सकता है और उस पत्थर की स्थिति के आधार पर अंक प्राप्त कर सकता है। अमल और बिमल पत्थरों को अलग तरीके से महत्व दे सकते हैं।

हमारे पास समान लंबाई की दो सरणियाँ हैं, A_Values और B_Values। प्रत्येक A_Values[i] और B_Values[i] क्रमशः अमल और बिमल द्वारा i-वें पत्थर को दिए गए महत्व को दर्शाता है। यहां जिसका स्कोर अधिकतम होगा, सभी पत्थर लेने के बाद वह विजेता होगा। यदि टाई है, तो खेल ड्रॉ में समाप्त होता है। दोनों खिलाड़ी इष्टतम रूप से खेलेंगे। दोनों एक-दूसरे के मूल्यों को जानते हैं। इसलिए यदि अमल जीतता है, तो 1 वापस करें। यदि बिमल जीतता है, तो -1 वापस करें। और ड्रॉ मैच के लिए, 0 वापस करें।

इसलिए, यदि इनपुट है A_Values = [2,4] B_Values = [3,5], तो आउटपुट 1 होगा क्योंकि अमल 4 अंक वाला दूसरा पत्थर चुनेगा, इसलिए बिमल के पास केवल पहला पत्थर 3 अंक के साथ लेने का मौका है, लेकिन चूंकि अमल का स्कोर अधिक है, इसलिए वह जीतता है।

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

  • n := A_Values का आकार
  • combinedValues := एक नई सूची
  • i को 0 से n तक के लिए, करें
    • tmpV := A_Values[i] + B_Values[i]
    • जोड़ी (tmpV, i) को combinedValues के अंत में डालें
  • combinedValues सूची को उल्टे क्रम में क्रमबद्ध करें
  • score_a := 0, score_b := 0
  • i को 0 से n - 1 तक के लिए, करें
    • curV := combinedValues[i]
    • यदि i mod 2, 0 के समान है, तो
      • score_a := score_a + A_Values[curV[1]]
    • अन्यथा,
      • score_b := score_b + B_Values[curV[1]]
  • यदि score_a > score_b, तो
    • 1 वापस करें
  • अन्यथा जब score_a, score_b के समान है, तो
    • 0 वापस करें
  • अन्यथा,
    • -1 वापस करें

उदाहरण

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

def solve(A_Values, B_Values):
    n = len(A_Values)
    combinedValues = []
    for i in range(n):
        tmpV = A_Values[i] + B_Values[i]
        combinedValues.append([tmpV, i])
    combinedValues.sort(reverse=True)
    score_a, score_b = 0, 0
    for i in range(n):
        curV = combinedValues[i]
        if (i % 2 == 0):
            score_a += A_Values[curV[1]]
        else:
            score_b += B_Values[curV[1]]
    if (score_a > score_b):
        return 1
    elif (score_a == score_b):
        return 0
    else:
        return -1

A_Values = [2,4]
B_Values = [3,5]
print(solve(A_Values, B_Values))

इनपुट

[2,4], [3,5]

आउटपुट

1
  1. पायथन में बहुभुज का क्षेत्रफल खोजने का प्रोग्राम पायथन में बहुभुज का क्षेत्रफल खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक 2D तल पर एक साधारण बहुभुज के अंतिम बिंदुओं को दर्शाने वाले क्रमबद्ध बिंदुओं की सूची है। हमें इस बहुभुज का क्षेत्रफल ढूंढना है।उदाहरण के लिए, यदि इनपुट points = [(0, 0), (0,5), (3, 5), (3,0)] है, तो आउटपुट 15 होगा।समाधान दृष्टिकोणइसे हल करने के लिए हम निम्न चरणों का पालन करेंगे

  1. पायथन में बहुभुज का परिमाप खोजने का प्रोग्राम पायथन में बहुभुज का परिमाप खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक 2D तल पर एक साधारण बहुभुज के अंतिम बिंदुओं को दर्शाने वाले क्रमबद्ध बिंदुओं की सूची है। हमें इस बहुभुज का परिमाप ढूंढना है।उदाहरण के लिए, यदि इनपुट points = [(0, 0), (0,5), (3, 5), (3,0)] है, तो आउटपुट 16 होगा क्योंकिदो भुजाएं लंबाई 3 की हैं और दो भुजाएं लंबाई 5 की हैं, तो 2*5

  1. - पायथन में समान आकार के स्ट्रिंग्स ज्ञात करने का प्रोग्राम

    मान लीजिए, हमारे पास लोअरकेस अक्षरों से युक्त एक स्ट्रिंग i और एक अन्य पूर्णांक j है। हमें यह ज्ञात करना है कि कितनी स्ट्रिंग्स हैं जो i के आकार के बराबर हैं और लेक्सिकोग्राफिक रूप से i से छोटी या बराबर हैं और जिनमें j से अधिक लगातार समान वर्ण नहीं हैं। उत्तर की गणना परिणाम को 10^9 + 7 से मोड करके