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

पायथन में चेक करें कि क्या पत्थरों से नदी पार की जा सकती है


मान लीजिए हमारे पास stones नामक सॉर्टेड संख्याओं की एक लिस्ट है जो नदी पर पत्थरों की स्थिति दर्शाती है जिसे हम पार करने की कोशिश कर रहे हैं। नदी पार करने के लिए, हमें अंतिम पत्थर पर समाप्त होना होगा। अब प्रत्येक चरण में, हम (k - 1, k, या k + 1) कदम आगे कूद सकते हैं जहां k अंतिम कूद की दूरी है। हमें चेक करना है कि क्या हम नदी पार कर सकते हैं या नहीं।

उदाहरण के लिए, यदि इनपुट stones = [0, 1, 3, 4, 5, 6, 8, 9, 13] है, तो आउटपुट True होगा, क्योंकि हम 0 से शुरू कर सकते हैं, फिर 1 यूनिट कूदकर पत्थर 1 पर जाएं, फिर 2 यूनिट कूदकर 3 पर, फिर 2 यूनिट कूदकर 5 पर, फिर 3 यूनिट कूदकर 8 पर, और अंत में 5 यूनिट कूदकर 13 पर जाएं, जो अंतिम स्थान है।

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

इस समस्या को हल करने के लिए हम रिकर्सन + मेमोइजेशन (DFS) का उपयोग करेंगे:

  • start := A[0], end := A का अंतिम तत्व
  • A := A के सभी यूनिक तत्वों का सेट
  • check(pos=start, prev=0) फंक्शन परिभाषित करें:
    • यदि pos == end है, तो True लौटाएं
    • प्रत्येक jump के लिए [prev-1, prev, prev+1] में:
      • यदि jump >= 1 है:
        • next_pos := jump + pos
        • यदि next_pos, A में है और check(next_pos, jump) True है, तो True लौटाएं
    • False लौटाएं
  • मुख्य मेथड से check() कॉल करें और परिणाम लौटाएं

पायथन कार्यान्वयन

class Solution:
    def solve(self, A):
        start, end = A[0], A[-1]
        A = set(A)
        def check(pos=start, prev=0):
            if pos == end:
                return True
            for jump in [prev - 1, prev, prev + 1]:
                if jump >= 1:
                    next_pos = jump + pos
                    if next_pos in A and check(next_pos, jump):
                        return True
            return False
        return check()

ob = Solution()
stones = [0, 1, 3, 4, 5, 6, 8, 9, 13]
print(ob.solve(stones))

इनपुट

[0, 1, 3, 4, 5, 6, 8, 9, 13]

आउटपुट

True
  1. - पायथन में जांचें कि कोई स्ट्रिंग पैलिंड्रोम है या नहीं

    मान लीजिए हमारे पास एक स्ट्रिंग s है; हमें जांचना है कि क्या यह पैलिंड्रोम है या नहीं। जैसा कि हम जानते हैं, पैलिंड्रोम तब होता है जब शब्द आगे और पीछे से समान होता है। उदाहरण के लिए, यदि इनपुट है s = racecar, तो आउटपुट होगा True। हल करने के चरण t := s का उल्टा। यदि t == s, तो True लौटाएं। अन्यथा,

  1. - Python प्रोग्राम: जांचें कि कोई संख्या अभाज्य है या नहीं

    इसमें, हम एक प्रोग्राम लिखेंगे जो जांच करेगा कि दी गई संख्या जो 1 से अधिक है, अभाज्य है या नहीं। एक अभाज्य संख्या 1 से बड़ा एक धनात्मक पूर्णांक है जिसके केवल दो गुणनखंड होते हैं 1 और वह संख्या स्वयं, उदाहरण के लिए संख्या: 2, 3, 5, 7... आदि अभाज्य संख्याएं हैं क्योंकि उनके केवल दो गुणनखंड होते हैं

  1. - पायथन प्रोग्राम जांचने के लिए कि कोई स्ट्रिंग पैलिंड्रोम है या नहीं

    एक स्ट्रिंग दी गई है, हमारा कार्य यह जांचना है कि यह स्ट्रिंग पैलिंड्रोम है या नहीं। एल्गोरिदम चरण 1: इनपुट के रूप में स्ट्रिंग दर्ज करें। चरण 2: स्ट्रिंग स्लाइसिंग का उपयोग करके स्ट्रिंग को उल्टा करें और इसकी तुलना मूल स्ट्रिंग से करें। चरण 3: फिर परिणाम प्रदर्शित करें। उदाहरण कोड my_string = inpu