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

पायथन में गलत लिखे शब्द को ठीक करने के लिए बदले जाने वाले कुल वर्णों की संख्या ढूंढने का प्रोग्राम

मान लीजिए हमें शहरों की एक लिस्ट और सड़कों की एक लिस्ट दी गई है जो एक-दूसरे को जोड़ती हैं। 'cities' लिस्ट में उन शहरों के नाम हैं जिन्हें एक टूर बस क्रम से देखती है। 'roads' लिस्ट में सड़कें (स्रोत, गंतव्य) क्रम में सूचीबद्ध हैं जिसका अर्थ है स्रोत से गंतव्य तक एक वन-वे सड़क है। अब, एक समस्या है कि 'cities' लिस्ट में कुछ शहरों के नाम गलत लिखे हो सकते हैं। हमें ऐसे गलत लिखे शहरों के नामों को न्यूनतम वर्णों को बदलकर ठीक करना है। हम आउटपुट के रूप में बदले गए वर्णों की संख्या लौटाते हैं।

इसलिए, यदि इनपुट cities = ["HWH", "DLI", "BGL"], roads = [["HWH", "DLI"], ["DLI", "BCT"], ["BCT", "HWH"]] है, तो आउटपुट 2 होगा।

cities में गलत लिखा शहर का नाम 'BGL' है। सही नाम 'BCT' होगा। तो, cities में नाम को ठीक करने के लिए हमें 2 वर्ण बदलने होंगे।

समाधान दृष्टिकोण

  • diff() फंक्शन परिभाषित करें दो स्ट्रिंग्स के बीच वर्ण अंतर की गणना के लिए
  • डायनामिक प्रोग्रामिंग का उपयोग करके न्यूनतम संपादन दूरी ट्रैक करें
  • वैध रोड ट्रांजिशन के माध्यम से पुनरावृति करें
  • सभी वैध पथों में न्यूनतम कुल परिवर्तन लौटाएं

उदाहरण कार्यान्वयन

def diff(a, b):
    return sum(x != y for x, y in zip(a, b))

def solve(cities, roads):
    size = len(cities)
    arr = dict()
    junctions = set(r[0] for r in roads)
    for j in junctions:
        arr[j] = diff(cities[0], j)
    for i in range(1, size):
        nxt = dict()
        for r1, r2 in roads:
            if r1 in arr:
                cost = arr[r1] + diff(cities[i], r2)
                if r2 not in nxt or cost < nxt[r2]:
                    nxt[r2] = cost
        arr = nxt
    return min(arr.values())

print(solve(["HWH", "DLI", "BGL"], [["HWH", "DLI"], ["DLI", "BCT"], ["BCT", "HWH"]]))

इनपुट

["HWH", "DLI", "BGL"], [["HWH", "DLI"], ["DLI", "BCT"], ["BCT", "HWH"]]

आउटपुट

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

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

  1. Python में गोदाम में रखे जाने वाले बॉक्स की संख्या खोजने का प्रोग्राम Python में गोदाम में रखे जाने वाले बॉक्स की संख्या खोजने का प्रोग्राम

    मान लीजिए, हमारे पास दो सरणियाँ हैं जिनमें पूर्णांक हैं। एक सूची में कुछ यूनिट चौड़ाई वाले बॉक्स की ऊंचाई है और दूसरी सरणी में गोदाम में कमरों की ऊंचाई है। कमरे 0...n से नंबर किए गए हैं, और कमरों की ऊंचाई सरणी godown में उनके संबंधित इंडेक्स पर दी गई है। हमें उन बॉक्स की संख्या पता करनी है जिन्हें ग

  1. Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सूची दी गई है, हमें सूची में उपलब्ध सबसे छोटी संख्या प्रदर्शित करने की आवश्यकता है। यहां हम या तो सूची को क्रमबद्ध करके सबसे छोटा तत्व प्राप्त कर सकते हैं या बिल्ट-इन min() फ़ंक्शन का उपयोग करके सबसे छोटा तत्