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

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

मान लीजिए कि हमारे पास एक सरणी ऊंचाई है। अलग-अलग ऊंचाई के साथ अलग-अलग टावर हैं। अमल और बिमल एक खेल खेल रहे हैं। खेल के नियम नीचे की तरह हैं

  • अमल हमेशा पहले खेलता है

  • प्रत्येक चाल के दौरान, वर्तमान खिलाड़ी ऊंचाई X के एक टॉवर का चयन करता है और इसे Y प्रत्येक ऊंचाई Z के विभिन्न टावरों में तोड़ देता है। [वाई * जेड =एक्स; एक्स और वाई> 1]

  • जिसके पास कोई चाल नहीं है वह खेल हार जाएगा

हमें विजेता का नाम खोजना होगा।

इसलिए, यदि इनपुट ऊंचाई =[3,1,2] की तरह है, तो आउटपुट बिमल होगा, क्योंकि प्रारंभिक ऊंचाई {3,1,2} हैं। अगर अमल टावर 2 की ऊंचाई को 1 ऊंचाई के दो टावरों को तोड़ता है, तो नई ऊंचाई सरणी {3,1,1,1} होगी, बिमल ऊंचाई 3 के साथ टावर तोड़ सकता है और ऊंचाई 1 के तीन टावर बना सकता है, इसलिए अमल के पास नहीं है आगे बढ़ो इसलिए बिमल जीतता है।

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

  • उपयोग() फ़ंक्शन को परिभाषित करें। यह सीमा लेगा, प्रारंभिक सीमा मान 10^3+5
  • . है
  • परिणाम:=आकार सीमा की एक सरणी और 0 से भरें
  • मैं श्रेणी 2 से सीमा -1 तक के लिए
    • s :=एक नया सेट
    • जे के लिए श्रेणी 1 से i के वर्गमूल के तल तक
      • d :=i/j का भागफल, r :=i/j का शेष
      • यदि r, 0 के समान है, तो
        • यदि j विषम है, तो
          • परिणाम डालें[d]) s में
        • यदि d विषम है, तो
          • परिणाम[j] को s में डालें
    • j :=0
    • जबकि j, s में मौजूद है, करें
      • j :=j + 1
      • परिणाम[i] :=j
  • वापसी का परिणाम
  • g :=उपयोग ()
  • मुख्य विधि से, निम्न कार्य करें -
  • r :=0
  • ऊंचाई में प्रत्येक i के लिए, करें
    • r :=r XOR g[i]
  • यदि r शून्य नहीं है, तो
    • वापस "अमल"
  • अन्यथा,
    • रिटर्न "बिमल"

उदाहरण

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

def util(limit=10**3+5):
   result = [0] * limit

   for i in range(2, limit):
      s = set()
      for j in range(1, int(i**0.5)+1):
         d, r = divmod(i, j)

         if r == 0:
            if j & 1:
               s.add(result[d])
            if d & 1:
               s.add(result[j])

      j = 0
      while j in s: j += 1
      result[i] = j

   return result

g = util()

def solve(height):
   r = 0

   for i in height:
      r ^= g[i]

   if r:
      return "Amal"
   else:
      return "Bimal"

height = [3,1,2]
print(solve(height))

इनपुट

[3,1,2]

आउटपुट

Bimal

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

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

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

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

  1. पायथन में अधिकतम भवन ऊंचाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक मान n है और जोड़े की एक और सूची है जिसे प्रतिबंध कहा जाता है। हम एक शहर में नई इमारतें बनाना चाहते हैं। लेकिन कुछ प्रतिबंध हैं। हम एक लाइन में बना सकते हैं और इमारतों को 1 से n तक लेबल किया जाता है। प्रतिबंधों के दो पैरामीटर हैं, इसलिए प्रतिबंध [i] =(id_i, max_height_i) इंग