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

पायथन में वर्गाकार सरणियों की संख्या खोजने का कार्यक्रम

मान लीजिए कि हम लोअरकेस अक्षरों का लक्ष्य स्ट्रिंग बनाना चाहते हैं। सबसे पहले, हमारे पास अनुक्रम n '?' है निशान (n लक्ष्य स्ट्रिंग की लंबाई है)। हमारे पास लोअरकेस अक्षरों की मुहर भी है। प्रत्येक मोड़ पर, हम स्टाम्प को अनुक्रम पर रख सकते हैं, और प्रत्येक अक्षर को उस स्टैम्प से संबंधित अक्षर से बदल सकते हैं। आप 10 * n मोड़ तक बना सकते हैं।

एक उदाहरण के रूप में प्रारंभिक अनुक्रम "???????" है, और स्टैम्प "abc" है, तो हम पहले में "abc ??", "?abc?", "??abc" जैसे तार बना सकते हैं। मोड़। यदि अनुक्रम पर मुहर लगाना संभव है, तो सूचकांक की एक सरणी लौटाएं जिसमें प्रत्येक मोड़ पर सबसे बाएं अक्षर पर मुहर लगी हो। यदि यह संभव नहीं है तो एक खाली सरणी लौटाएं। तो जब अनुक्रम "एबीसी" है, और स्टाम्प "एबीसी" है, तो उत्तर [0, 2] जैसा हो सकता है, क्योंकि हम "?????" -> "एबीसी ??" -> "एबीसी"।

इसलिए, यदि इनपुट s ="abcd" t ="abcdbcd" जैसा है, तो आउटपुट [3,0]

होगा।

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

  • यदि s का आकार 1 के समान है, तो

    • 0 से t तक एक सूची लौटाएं जब t में सभी वर्ण समान हों और वे s [0] हों, अन्यथा एक नई रिक्त सूची

  • उत्तर :=एक नई सूची

  • जबकि t "?" के t संख्या के आकार के समान नहीं है निशान, करो

    • टीएमपी:=टी

    • मैं के लिए 0 से s के आकार की सीमा में, ऐसा करें

      • j के लिए s के आकार में i+1 से नीचे:

        • खोज:=मैं "?" की संख्या s [इंडेक्स i से j-1 तक] के सबस्ट्रिंग को जोड़ना

        • जब खोज t में हो, तब करें

          • उत्तर के अंत में t में जहां खोज मौजूद है वहां डालें

          • t :=खोज को "?" के s संख्या के आकार से बदलें केवल एक बार

        • यदि t, "?" के t संख्या के आकार के समान है, तो

          • लूप से बाहर आएं

        • यदि t, "?" के t संख्या के आकार के समान है, तो

          • लूप से बाहर आएं

      • अगर tmp, t के समान है, तो

        • लूप से बाहर आएं

  • उत्तर के विपरीत लौटें।

उदाहरण

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

def solve(s, t):
   if len(s) == 1:
      return [i for i in range(len(t))] if all(t==s[0] for t in t)else []

   ans = []
   while t != "?" * len(t):
      tmp = t
      for i in range(len(s)):
         for j in reversed(range(i+1, len(s)+1)):
            search = "?" * i + s[i:j] + "?" * (len(s)-j)
            while t.find(search) != -1:
               ans.append(t.find(search))
               t = t.replace(search, "?"*len(s), 1)
            if t == "?" * len(t): break
         if t == "?" * len(t): break
      if tmp == t: return []
   return ans[::-1]

s = "abcd"
t = "abcdbcd"
print(solve(s, t))

इनपुट

"abcd", "abcdbcd"

आउटपुट

[3,0]

  1. पायथन में एक श्रेणी में नोड्स की संख्या खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बीएसटी है, और हमारे पास बाएं और दाएं सीमाएं एल और आर भी हैं, हमें रूट में उन सभी नोड्स की गिनती ढूंढनी है जिनके मान एल और आर (समावेशी) के बीच मौजूद हैं। तो, अगर इनपुट पसंद है l =7, r =13, तो आउटपुट 3 होगा, क्योंकि तीन नोड हैं:8, 10, 12. इसे हल करने के लिए, हम इन चरणों

  1. सूची में सबसे छोटी संख्या खोजने के लिए पायथन प्रोग्राम

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

  1. पायथन प्रोग्राम में किसी संख्या के सम गुणनखंडों का योग ज्ञात करें

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक संख्या दी गई है, हमें संख्या के सभी सम गुणनखंडों का योग प्रदर्शित करना होगा। दृष्टिकोण हम जाँचते हैं कि क्या संख्या विषम है, फिर कोई सम गुणनखंड नहीं हैं, इसलिए 0 लौटाएँ। यदि संख्या सम है, तो हम गणना के माध्