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

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


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

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

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

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

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

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

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

  • एक फ़ंक्शन util() परिभाषित करें। यह limit लेगा, प्रारंभिक limit मान 10^3+5 है
  • result := आकार limit की एक सरणी जिसे 0 से भरा गया है
  • i को 2 से limit - 1 तक की रेंज में, करें
    • s := एक नया सेट
    • j को 1 से i के वर्गमूल के फ्लोर तक की रेंज में, करें
      • d := i/j का भागफल, r := i/j का शेषफल
      • यदि r, 0 के समान है, तो
        • यदि j विषम है, तो
          • result[d] को s में डालें
        • यदि d विषम है, तो
          • result[j] को s में डालें
    • j := 0
    • जब तक j, s में मौजूद है, करें
      • j := j + 1
      • result[i] := j
  • result लौटाएं
  • g := util()
  • मुख्य विधि से, निम्न कार्य करें:
  • r := 0
  • height में प्रत्येक 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. पायथन में बहुभुज का क्षेत्रफल खोजने का प्रोग्राम पायथन में बहुभुज का क्षेत्रफल खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक 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. Python में इमारतों की अधिकतम ऊंचाई ज्ञात करें Python में इमारतों की अधिकतम ऊंचाई ज्ञात करें

    n इमारतें एक पंक्ति में (1 से n लेबल)। प्रतिबंध: restrictions[i] = (id, max_height)। नियम: ऊंचाई ≥ 0, पहली इमारत की ऊंचाई = 0, आसन्न इमारतों में ऊंचाई अंतर ≤ 1। अधिकतम संभव ऊंचाई खोजें। एल्गोरिदम: दो पास + शिखर गणना प्रतिबंधों को id द्वारा सॉर्ट करें फॉरवर्ड पास: बाएं से दाएं, प्रत्येक प्रतिबंध को