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

पायथन में सांप और सीढ़ी के खेल में न्यूनतम चाल का पता लगाने का कार्यक्रम

मान लीजिए हम सांप-सीढ़ी का खेल खेल रहे हैं। हमारी एक शर्त है कि हम पासे पर कोई भी संख्या रोल कर सकते हैं जिसे हम पसंद कर सकते हैं। हम स्थिति 0 से शुरू करते हैं और हमारा गंतव्य स्थान 100 है, और हम गंतव्य तक पहुंचने के लिए कई बार पासा घुमाते हैं। यदि हमें बोर्ड पर सांप और सीढ़ी की स्थिति प्रदान की जाती है तो हमें गंतव्य तक पहुंचने के लिए आवश्यक पासा रोल की कम से कम संख्या का पता लगाना चाहिए। सरणियां सांप और सीढ़ी बोर्ड में सांप और सीढ़ी की स्थिति का प्रतिनिधित्व करते हैं और प्रत्येक प्रविष्टि में सरणियों में बोर्ड पर एक सांप या सीढ़ी का प्रारंभ मान और अंतिम मान होता है।

इसलिए, यदि इनपुट सीढ़ी की तरह है =[(11, 40), (37,67),(47, 73),(15, 72)], सांप =[(90, 12), (98, 31), (85, 23), (75, 42), (70, 18), (49, 47)], तो आउटपुट 8 होगा।

सांप और सीढ़ी की स्थिति को देखते हुए बोर्ड पर 100वें स्थान पर पहुंचने के लिए आवश्यक न्यूनतम चालों की संख्या 8 है।

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

  • सरणी सांपों को सरणी सीढ़ी में जोड़ें
  • किनारों:=एक नया नक्शा
  • प्रत्येक जोड़ी के लिए f,t सीढ़ी में, करते हैं
    • किनारों[f] :=t
  • u :=एक नया सेट
  • v :=एक नया सेट
  • v में(1) जोड़ें
  • एम :=0
  • जबकि 100 v में मौजूद नहीं है, करते हैं
    • एम :=एम + 1
    • w :=एक नया सेट
    • v में प्रत्येक f के लिए, करें
      • 1 से 6 के बीच के लिए, करें
        • n :=f + i
        • यदि किनारों में n मौजूद है, तो
          • n :=किनारों[n]
        • यदि n u में मौजूद है, तो
          • अगले पुनरावृत्ति के लिए जाएं
        • आपमें जोड़ें(n)
        • w में जोड़ें(n)
    • v :=w
  • वापसी मी

उदाहरण

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

def solve(ladders, snakes):
    ladders.extend(snakes)
    edges = {}
    for f,t in ladders:
        edges[f] = t
    u = set()
    v = set()
    v.add(1)
    m = 0
    while 100 not in v:
        m += 1
        w = set()
        for f in v:
            for i in range(1,7):
                n = f + i
                if n in edges:
                    n = edges[n]
                if n in u:
                    continue
                u.add(n)
                w.add(n)
        v = w
    return m
print(solve([(11, 40), (37,67),(47, 73),(15, 72)], [(90, 12), (98, 31), (85, 23), (75, 42), (70, 18), (49, 47)]))

इनपुट

[(11, 40), (37,67),(47, 73),(15, 72)], [(90, 12), (98, 31), (85, 23), (75, 42), (70, 18), (49, 47)]

आउटपुट

8

  1. यह पता लगाने के लिए कार्यक्रम कि क्या पायथन में सभी के द्वारा ग्राफ़ को ट्रैवर्स किया जा सकता है

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

  1. पायथन में एक ग्राफ में महत्वपूर्ण और छद्म-महत्वपूर्ण किनारों का पता लगाने का कार्यक्रम

    मान लीजिए, हमें एक ग्राफ दिया गया है जिसमें n शीर्षों की संख्या 0 से n -1 है। ग्राफ अप्रत्यक्ष है और प्रत्येक किनारे का वजन होता है। तो ग्राफ को देखते हुए, हमें ग्राफ एमएसटी में महत्वपूर्ण और छद्म-महत्वपूर्ण किनारों का पता लगाना होगा। एक किनारे को एक महत्वपूर्ण किनारा कहा जाता है यदि उस किनारे को हट

  1. पायथन में हर स्थिति तक पहुंचने के लिए शतरंज के टुकड़े के लिए न्यूनतम चालों का पता लगाने का कार्यक्रम

    मान लीजिए, हमारे पास एक शतरंज की बिसात और एक विशेष नाइट पीस K है, जो बोर्ड के भीतर L आकार में चलता है। यदि टुकड़ा स्थिति (x1, y1) में है और यदि यह (x2, y2) पर जाता है तो आंदोलन को x2 =x1 ± a के रूप में वर्णित किया जा सकता है; y2 =y1 ± b या x2 =x1 ± b; y2 =y1 ± ए; जहाँ a और b पूर्णांक संख्याएँ हैं। ह