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

ट्राई का उपयोग करके ऑटो-कम्प्लीट फीचर


हमारे पास एक ट्राई है, और जब कोई उपयोगकर्ता एक कैरेक्टर दर्ज करता है, तो हमें ट्राई से मिलान करने वाली स्ट्रिंग दिखानी होती है। इस फीचर को हम ऑटो-कम्प्लीशन कहते हैं। उदाहरण के लिए, यदि ट्राई में "xyzzzz," "xyz," "xxxyyxzzz" हैं और जब उपयोगकर्ता xy दर्ज करता है, तो हमें उन्हें xyzzzz, xyz, आदि दिखाने होंगे।

परिणाम प्राप्त करने के चरण।

  • मानक ट्राई एल्गोरिदम का उपयोग करके स्ट्रिंग खोजें।

  • यदि स्ट्रिंग मौजूद नहीं है, तो -1 लौटाएं।

  • यदि स्ट्रिंग मौजूद है और ट्राई में एक शब्द का अंत है, तो स्ट्रिंग प्रिंट करें।

  • यदि मिलान करने वाली स्ट्रिंग का कोई नोड नहीं है, तो लौटें।

  • अन्यथा सभी नोड्स प्रिंट करें।

आइए कोडिंग शुरू करें।

# ट्राई नोड के लिए क्लास
class TrieNode():
    def __init__(self): # ट्राई नोड आरंभ करना
        self.trie_node = {}
        self.last_node = False

class Trie():
    def __init__(self): # ट्राई आरंभ करना
        self.root = TrieNode()
        # शब्दों को स्टोर करने के लिए सूची
        self.words = []
    def create_trie(self, keys): # डेटा का उपयोग करके ट्राई बनाना
        for key in keys: # ट्राई में एक कुंजी डालना
            self.insert_node(key)
    def insert_node(self, key):
        node = self.root
        for obj in list(key):
            if not node.trie_node.get(obj):
                # ट्राईनोड बनाना
                node.trie_node[obj] = TrieNode()
            node = node.trie_node[obj]
        # लीफ नोड बनाना
        node.last_node = True
    def search(self, key): # कुंजी खोजना
        node = self.root
        is_found = True
        for obj in list(key):
            if not node.trie_node.get(obj):
                is_found = False
                break
            node = node.trie_node[obj]
        return node and node.last_node and is_found
    def matches(self, node, word):
        if node.last_node:
            self.words.append(word)
        for obj, n in node.trie_node.items():
            self.matches(n, word + obj)
    def show_auto_completion(self, key):
        node = self.root
        is_found = False
        temp = ''
        for obj in list(key):
            # शब्द की जांच
            if not node.trie_node.get(obj):
                is_found = True
                break
            temp += obj
            node = node.trie_node[obj]
        if is_found:
            return 0
        elif node.last_node and not node.trie_node:
            return -1
        self.matches(node, temp)
        for string in self.words:
            print(string)
        return 1
# ट्राई के लिए डेटा
strings = ["xyz", "xyzzzz", "xyabad", "xyyy", "abc", "abbccc", "xyx", "xyxer", "a"]
# ऑटो कम्प्लीशन के लिए शब्द
string = "xy"
status = ["Not found", "Found"]
# ट्राई क्लास इंस्टेंशिएट करना
trie = Trie()
# स्ट्रिंग्स का उपयोग करके ट्राई बनाना
trie.create_trie(strings)
# स्ट्रिंग्स से स्ट्रिंग के लिए ऑटो कम्प्लीशन शब्द प्राप्त करना
result = trie.show_auto_completion(string)
if result == -1 or result == 0:
    print("No matches")

यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्न परिणाम मिलेगा।

xyz xyzzzz xyabad xyyy xyx xyxer
  1. VLC की एक गुप्त विशेषता: इसे वीडियो संपादक के रूप में उपयोग करना VLC की एक गुप्त विशेषता: इसे वीडियो संपादक के रूप में उपयोग करना

    सबसे लोकप्रिय मीडिया प्लेयर्स में से एक के रूप में, VLC मोबाइल प्लेटफॉर्म के साथ-साथ ऑडियो और वीडियो प्रारूपों सहित सभी ऑपरेटिंग सिस्टम का समर्थन करता है। लेकिन क्या आप जानते हैं कि इसमें एक छिपी हुई सुविधा भी है जो इसे वीडियो संपादक के रूप में उपयोग करने की अनुमति देती है? चाहे आपके पास रॉ कैमरा रि

  1. ऑटो स्टॉप फीचर के साथ स्क्रीन रिकॉर्डिंग को निर्बाध रूप से रोकने का तरीका ऑटो स्टॉप फीचर के साथ स्क्रीन रिकॉर्डिंग को निर्बाध रूप से रोकने का तरीका

    स्क्रीन रिकॉर्डिंग व्यक्तिगत और पेशेवर दोनों रूप से बहुत से लोगों की मदद कर रही है, चाहे उन्हें यूट्यूब वीडियो के लिए अपनी स्क्रीन रिकॉर्ड करने की आवश्यकता हो या सोशल मीडिया पर साझा करने के लिए एक महत्वपूर्ण मीटिंग या गेम कैप्चर करने की। परिणामस्वरूप, इस संदर्भ में ऑटो स्टॉप रिकॉर्डिंग शब्द भी उतना

  1. विंडोज एडवांस्ड शेयरिंग मास्टर करें: फ़ोल्डर एक्सेस और अनुमतियाँ नियंत्रित करें विंडोज एडवांस्ड शेयरिंग मास्टर करें: फ़ोल्डर एक्सेस और अनुमतियाँ नियंत्रित करें

    कभी-कभी आपको विंडोज 7 या विंडोज 8 के शेयरिंग विज़ार्ड को अक्षम करने की आवश्यकता होती है ताकि आप फ़ोल्डर्स और लाइब्रेरी को साझा करने के तरीके पर अधिक नियंत्रण रख सकें। यदि आप विंडोज की एडवांस्ड शेयरिंग सुविधा का उपयोग करना जानते हैं तो यह परिदृश्य इतनी बार नहीं होना चाहिए। इस शेयरिंग सुविधा का उपयोग