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

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

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

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

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

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

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

  • n :=A_Values ​​​​का आकार
  • संयुक्त मान :=एक नई सूची
  • मैं के लिए 0 से n की सीमा में, करते हैं
    • tmpV :=A_Values[i] + B_Values[i]
    • अंत में संयुक्त मानों में जोड़ी (temV, i) डालें
  • संयुक्त मूल्यों की सूची को उल्टे क्रम में क्रमबद्ध करें
  • score_a :=0, Score_b :=0
  • मैं के लिए 0 से n -1 की सीमा में, करो
    • curV :=संयुक्त मान[i]
    • यदि i mod 2 0 के समान है, तो
      • score_a :=Score_a + A_Values[curV[1]]
    • अन्यथा,
      • score_b :=Score_b + B_Values[curV[1]]
  • अगर स्कोर_ए> स्कोर_बी, तो
    • वापसी 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. पायथन में बहुभुज का क्षेत्रफल ज्ञात करने का कार्यक्रम

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

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

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

  1. पायथन में समान आकार के तार खोजने का कार्यक्रम

    मान लीजिए, हमारे पास एक स्ट्रिंग i है जिसमें लोअरकेस अक्षर और एक अन्य पूर्णांक j है। हमें यह पता लगाना है कि ऐसे कितने तार हैं जो i के आकार के बराबर हैं और शब्दावली की दृष्टि से छोटे या i के बराबर हैं और j से बड़े लगातार समान वर्ण नहीं हैं। उत्तर की गणना मॉड को 10 ^ 9 + 7 द्वारा परिणाम खोजकर की जात