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

पायथन में शुरू से गंतव्य तक जाने के लिए लेक्सिकोग्राफिक रूप से सबसे छोटी स्ट्रिंग खोजने का कार्यक्रम

मान लीजिए हम कार्तीय तल में (0, 0) स्थिति पर हैं। हम एकल इकाई के केवल क्षैतिज (H) और ऊर्ध्वाधर (V) चालों का उपयोग करके बिंदु (x, y) पर जाना चाहते हैं। गंतव्य तक पहुंचने के एक से अधिक संभावित तरीके हैं। प्रत्येक मार्ग में कुछ H चालें और कुछ V चालें होती हैं। (उदाहरण के लिए यदि हम बिंदु (0,0) से बिंदु (2,2) पर जाना चाहते हैं, तो HVVH संभावित तरीकों में से एक है। गंतव्य पर जा रहे हैं।

इसलिए, यदि इनपुट (x, y) =(3, 3) k =3 जैसा है, तो आउटपुट "HHVVVH" होगा

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

  • एक फ़ंक्शन पथ परिभाषित करें() । इसमें x, y लगेगा
  • अगर मिनट(x, y) <0, तो
    • वापसी 0
  • रिटर्न फैक्टोरियल(x+y)/factorial(x)/factorial(y)
  • मुख्य विधि से, निम्न कार्य करें -
  • res :=एक नई सूची
  • (p, q) :=(0, 0)
  • जबकि (p, q) (x, y) के समान नहीं है, do
    • n :=पथ (x - p - 1, y - q)
    • यदि p + 1 <=x और k
    • रेस के अंत में 'H' डालें
    • p :=p + 1
  • अन्यथा,
    • k :=k - n
    • रेस के अंत में 'V' डालें
    • q :=q + 1
  • शामिल होने के बाद res के वर्ण लौटाएं
  • उदाहरण

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

    from math import factorial
    
    def paths(x, y):
       if min(x, y) < 0:
          return 0
       return factorial(x+y) / factorial(x) / factorial(y)
    
    def solve(x, y, k):
       res = []
       p, q = 0, 0
       while (p, q) != (x, y):
          n = paths(x - p - 1, y - q)
          if p + 1 <= x and k < n:
             res.append('H')
             p += 1
          else:
             k -= n
             res.append('V')
             q += 1
       return ''.join(res)
    
    (x, y) = (3, 3)
    k = 3
    print(solve(x, y, k))

    इनपुट

    (3, 3), 3
    

    आउटपुट

    HHVVVH

    1. पायथन में पत्ती से शुरू होने वाला सबसे छोटा तार

      मान लीजिए कि हमारे पास एक बाइनरी ट्री की जड़ है, प्रत्येक नोड में 0 से 25 तक का मान होता है, जो ए से जेड अक्षरों का प्रतिनिधित्व कर रहा है:0 का मान ए का प्रतिनिधित्व करता है, 1 का मान बी का प्रतिनिधित्व करता है , और इसी तरह। हमें शब्दावली की दृष्टि से सबसे छोटी स्ट्रिंग की खोज करनी है जो इस पेड़ के

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

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

    1. एक स्ट्रिंग में दर्पण वर्ण खोजने के लिए पायथन प्रोग्राम

      उपयोगकर्ता इनपुट स्ट्रिंग और उस स्थिति से स्थिति को देखते हुए हमें वर्णों को वर्णानुक्रम में स्ट्रिंग की लंबाई तक दर्पण करने की आवश्यकता है। इस ऑपरेशन में, हम a को z, b से y, c से x, d से w में बदलते हैं और इसी तरह से पहला कैरेक्टर आखिरी हो जाता है और इसी तरह चालू। Inpu t: p = 3 Input string = p