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

पायथन में खेल में जीत की जांच करने का प्रोग्राम

मान लीजिए हम एक दो-खिलाड़ी खेल खेल रहे हैं जहां n संख्या में कंचे हैं और प्रत्येक दौर में, एक खिलाड़ी को एक धनात्मक वर्ग संख्या में कंचे लेने होंगे। यदि कोई खिलाड़ी उतने वर्ग संख्या में कंचे नहीं ले सकता, तो वह हार जाता है। इसलिए, दी गई संख्या n को देखते हुए, हमें यह पता लगाना है कि हम खेल जीत सकते हैं या नहीं। हम हमेशा पहला चाल चलते हैं और इष्टतम संख्या में कंचे चुनते हैं।

इसलिए, यदि इनपुट है 14, तो आउटपुट होगा True। क्योंकि पहली चाल में, हम 9 कंचे लेते हैं। इससे 5 कंचे बचते हैं जिनसे दूसरा खिलाड़ी अधिकतम 4 कंचे ले सकता है जिससे 1 कंचा बच जाता है। तो अगली चाल में, हम अंतिम कंचा लेते हैं जिससे प्रतिद्वंद्वी कोई चाल नहीं चल सकता। इस प्रकार, हम जीतते हैं।

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

  • यदि n <= 0, तो:
    • False लौटाएं
  • ans := False
  • i के लिए int(sqrt(n)) से -1 तक, 1 से घटाते हुए, करें:
    • यदि i * i > n, तो:
      • लूप से बाहर निकलें
    • ans := ans OR (not solve(n - i * i))
    • यदि ans True है, तो:
      • ans लौटाएं
  • ans लौटाएं

उदाहरण

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

from math import sqrt
def solve(n):
    if n <= 0:
        return False
    ans = False
    for i in range(int(sqrt(n)), 0, -1):
        if i * i > n:
            break
        ans = ans | (not solve(n - i * i))
        if ans:
            return ans
    return ans
print(solve(14))

इनपुट

14

आउटपुट

True
  1. पायथन में जांचें कि ग्राफ सभी द्वारा पारगम्य है या नहीं पायथन में जांचें कि ग्राफ सभी द्वारा पारगम्य है या नहीं

    मान लीजिए, हमें एक ग्राफ दिया गया है जिसमें n शीर्ष हैं जो 0 से n-1 तक क्रमांकित हैं। ग्राफ अनिर्देशित है और प्रत्येक किनारे का एक भार है। ग्राफ में तीन प्रकार के भार हो सकते हैं और प्रत्येक भार एक विशेष कार्य को दर्शाता है। दो लोग हैं जो ग्राफ को पार कर सकते हैं, अर्थात् जैक और केसी। जैक ग्राफ को

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

    मान लीजिए हमारे पास करेंसी एक्सचेंज दरों का N x N टेबल है। हमें जांचना है कि क्या ट्रेड का कोई अनुक्रम मौजूद है जिससे किसी करेंसी की कुछ राशि A से शुरू करके उसी करेंसी की अधिक राशि प्राप्त की जा सके। कोई लेनदेन लागत नहीं है और हम आंशिक मात्राओं में भी ट्रेड कर सकते हैं। उदाहरण के लिए, दिए गए मैट्रि

  1. - पायथन में दोहराए गए पूर्णांक गेम को जीतने के लिए चालों की संख्या खोजने का प्रोग्राम

    मान लीजिए दो दोस्त अमल और बिमल nums नामक क्रमबद्ध संख्याओं की सूची के साथ एक गेम खेल रहे हैं। एक चाल में, अमल किन्हीं तीन संख्याओं को चुनता है। बिमल उनमें से एक को हटा देता है, और फिर अमल उनमें से एक को हटा देता है। सूची विषम संख्या में तत्वों से शुरू होती है। अमल सूची में कोई दोहराए गए तत्व न होने