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

दिए गए समय के समान अंकों का पुन: उपयोग करके निकटतम समय ज्ञात करने का पायथन प्रोग्राम


मान लीजिए हमारे पास "hh:mm" प्रारूप में एक 24-घंटे की स्ट्रिंग है, हमें अगला निकटतम समय ढूंढना है जिसे दिए गए अंकों का पुन: उपयोग करके बनाया जा सके। हम दिए गए स्ट्रिंग के अंकों का जितनी बार चाहें उतनी बार पुन: उपयोग कर सकते हैं।

उदाहरण के लिए, यदि इनपुट s = "03:15" है, तो आउटपुट 03:30 होगा, क्योंकि निकटतम समय 03:30 दिए गए अंकों को दोहराता है।

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

  • use := दो अंकों के घंटे और दो अंकों के मिनट मानों वाली एक सूची
  • possible := एक नया सेट
  • एक फ़ंक्शन backtrack() परिभाषित करें। यह path लेगा
  • यदि path का आकार 4 के समान है, तो
    • (path[पहले दो अंक] जोड़ें ":" जोड़ें path[अंतिम दो अंक]) और इसे possible में डालें।
    • लौटें
  • प्रत्येक p के लिए use में, करें
    • यदि (path का आकार 0 के समान है और p > "2") असत्य है और (path "2" के समान है और p > "3") असत्य है और (path का आकार 2 के समान है और p > "5") असत्य है, तो
      • backtrack(path + p)
  • मुख्य विधि से निम्न करें:
  • backtrack(खाली स्ट्रिंग)
  • possible := possible से एक नई सूची
  • सूची possible को क्रमबद्ध करें
  • i को 0 से possible के आकार - 2 तक के लिए, करें
    • यदि possible[i], s के समान है, तो
      • possible[i + 1] लौटाएं
  • possible[0] लौटाएं

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

उदाहरण

class Solution:
    def solve(self, s):
        use = [s[0], s[1], s[3], s[4]]
        possible = set()
        def backtrack(path):
            nonlocal possible, use
            if len(path) == 4:
                possible.add(path[:2] + ":" + path[2:])
                return
            for p in use:
                if (not (len(path) == 0 and p > "2") and not (path == "2" and p > "3") and not (len(path) == 2 and p > "5")):
                    backtrack(path + p)
        backtrack("")
        possible = list(possible)
        possible.sort()
        for i in range(len(possible) - 1):
            if possible[i] == s:
                return possible[i + 1]
        return possible[0]

ob = Solution()
s = "03:15"
print(ob.solve(s))

इनपुट

"03:15"

आउटपुट

03:30

  1. पायथन का उपयोग करके समान x या y निर्देशांक वाले निकटतम बिंदु को खोजने का प्रोग्राम पायथन का उपयोग करके समान x या y निर्देशांक वाले निकटतम बिंदु को खोजने का प्रोग्राम

    मान लीजिए हमारे पास pts नामक एक सरणी में बिंदुओं का एक समूह दिया गया है। हमारे पास एक अन्य बिंदु (x, y) भी है जो हमारा वर्तमान स्थान है। हम एक वैध बिंदु को इस प्रकार परिभाषित कर रहे हैं, एक बिंदु जो हमारे वर्तमान बिंदु के समान x-निर्देशांक या समान y-निर्देशांक साझा करता है। हमें अपने वर्तमान स्थान

  1. - पायथन में दिए गए मैट्रिक्स का ट्रांसपोज़ खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक (n by n) मैट्रिक्स M है, हमें इसका ट्रांसपोज़ ढूंढना है। जैसा कि हम जानते हैं, मैट्रिक्स का ट्रांसपोज़ पंक्ति और स्तंभ इंडेक्स को स्विच करता है। अधिक औपचारिक रूप से, हर r और c के लिए, matrix[r][c] = matrix[c][r]। उदाहरण के लिए, यदि इनपुट है: 726 372 537 तो आउटपुट होगा:

  1. - पायथन में दी गई संख्या के सभी अंकों का योग खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक संख्या num है, हमें इसके अंकों का योग ढूंढना है। हमें इसे स्ट्रिंग्स का उपयोग किए बिना हल करना है। उदाहरण के लिए, यदि इनपुट है num = 512, तो आउटपुट होगा 8, क्योंकि 8 = 5 + 1 + 2। हल करने के चरण sum := 0 जब तक num != 0: sum := sum + (num % 10) num := num // 10 sum लौटाएं।