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

पायथन में फिनिश लाइन तक पहुंचने के लिए चालों की संख्या का पता लगाने का कार्यक्रम

मान लीजिए, हमारे पास एक कार है और हम उसे एक-आयामी सड़क पर चला रहे हैं। वर्तमान में हम स्थिति =0 पर हैं और गति =1 के साथ। हम इन दोनों में से कोई भी ऑपरेशन कर सकते हैं।

  • त्वरण:स्थिति:=स्थिति + गति और गति:=गति * 2 रिवर्स गियर:गति:=-1 जब गति> 0 अन्यथा गति:=1.

हमें कम से कम लक्ष्य तक पहुँचने के लिए आवश्यक चालों की संख्या ज्ञात करनी होगी।

इसलिए, यदि इनपुट लक्ष्य =10 जैसा है, तो आउटपुट 7 होगा।

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

  • फ़ंक्शन को परिभाषित करें dfs() । यह अंक, लागत, स्थिति, नकारात्मक, लक्ष्य लेगा

    • कुल:=लागत + अधिकतम 2 *(स्थिति -1) और 2 * (नकारात्मक -1)

    • अगर टोट>=उत्तर, तो

      • वापसी

    • यदि लक्ष्य 0 के समान है, तो

      • उत्तर :=न्यूनतम उत्तर और योग

      • वापसी

    • चरण :=(2^अंक) - 1

    • यदि चरण * 2 <|लक्ष्य|, तो

      • वापसी

    • dfs(अंक -1, लागत, स्थिति, नकारात्मक, लक्ष्य)

    • dfs(अंक -1, लागत + अंक, स्थिति + 1, नकारात्मक, लक्ष्य - चरण)

    • dfs(अंक -1, लागत + अंक * 2, स्थिति + 2, नकारात्मक, लक्ष्य - चरण * 2)

    • dfs(अंक -1, लागत + अंक, स्थिति, नकारात्मक + 1, लक्ष्य + चरण)

    • dfs(अंक -1, लागत + अंक * 2, स्थिति, नकारात्मक + 2, लक्ष्य + चरण * 2)

  • मुख्य कार्य से, निम्न कार्य करें -

  • उत्तर:=अनंत

  • नमस्ते :=1

  • जबकि 2^हाय <लक्ष्य, करो

    • हाय :=हाय + 1

  • dfs (हाय, 0, 0, 0, लक्ष्य)

  • वापसी उत्तर

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

उदाहरण

class Solution:
   def solve(self, target):
      self.ans = int(1e9)
      hi = 1
      while (1 << hi) < target:
         hi += 1
      self.dfs(hi, 0, 0, 0, target)
      return self.ans
   def dfs(self, digit, cost, pos, neg, target):
      tot = cost + max(2 * (pos − 1), 2 * neg − 1)
      if tot >= self.ans:
         return
      if target == 0:
         self.ans = min(self.ans, tot)
         return
      step = (1 << digit) − 1
      if step * 2 < abs(target):
         return
      self.dfs(digit − 1, cost, pos, neg, target)
      self.dfs(digit − 1, cost + digit, pos + 1, neg, target − step)
      self.dfs(digit − 1, cost + digit * 2, pos + 2, neg, target − step * 2)
      self.dfs(digit − 1, cost + digit, pos, neg + 1, target + step)
      self.dfs(digit − 1, cost + digit * 2, pos, neg + 2, target + step * 2)
ob = Solution()
print(ob.solve(10))

इनपुट

10

आउटपुट

7

  1. पायथन में हर स्थिति तक पहुंचने के लिए शतरंज के टुकड़े के लिए न्यूनतम चालों का पता लगाने का कार्यक्रम

    मान लीजिए, हमारे पास एक शतरंज की बिसात और एक विशेष नाइट पीस K है, जो बोर्ड के भीतर L आकार में चलता है। यदि टुकड़ा स्थिति (x1, y1) में है और यदि यह (x2, y2) पर जाता है तो आंदोलन को x2 =x1 ± a के रूप में वर्णित किया जा सकता है; y2 =y1 ± b या x2 =x1 ± b; y2 =y1 ± ए; जहाँ a और b पूर्णांक संख्याएँ हैं। ह

  1. पायथन में गोदाम में रखे जाने वाले बक्सों की संख्या का पता लगाने का कार्यक्रम

    मान लीजिए, हमारे पास पूर्णांक वाले दो सरणियाँ हैं। एक सूची में कुछ इकाई चौड़ाई वाले बक्सों की ऊँचाई होती है और दूसरी सूची में गोदाम में कमरों की ऊँचाई होती है। कमरों की संख्या 0...n है, और कमरों की ऊंचाई सरणी गोदाम में उनके संबंधित सूचकांक में प्रदान की जाती है। हमें पता लगाना है कि कितने बक्सों को

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

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