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

जाँच करने के लिए कार्यक्रम हम एक सूची सूचकांक को उसके वर्तमान योग द्वारा लक्ष्य तक पहुँचने के लिए अद्यतन कर सकते हैं या नहीं अजगर में

मान लीजिए हमारे पास लक्ष्य नामक संख्याओं की एक सूची है। अब हम एक सूची X पर विचार करें जिसकी लंबाई दी गई सूची के समान है और X 1s से भरा है। हम जितनी बार चाहें निम्नलिखित ऑपरेशन कर सकते हैं:एक्स में कोई भी इंडेक्स i लें और एक्स [i] को एक्स के वर्तमान योग पर सेट करें। अंत में जांचें कि एक्स को लक्ष्य में बदला जा सकता है या नहीं।

इसलिए, यदि इनपुट लक्ष्य =[5, 9, 3] की तरह है, तो आउटपुट सही होगा क्योंकि शुरू में एक्स =[1, 1, 1], फिर इसे कुल योग 3 के साथ अपडेट करें, सरणी [1, 1] होगी , 3], वर्तमान योग 5 है, इसे अद्यतन करें [5, 1, 3], वर्तमान योग 9, इसलिए सूची [5, 9, 3] होगी, और यह लक्ष्य है।

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

  • यदि अंकों में केवल एक तत्व है, तो
    • संख्या 1 होने पर सही लौटें
  • q :=सभी संख्याओं के ऋणात्मक मान वाली एक कतार
  • क्यू को हीप के रूप में बनाएं
  • s :=अंकों में सभी संख्याओं का योग
  • ठीक है:=सच
  • जबकि ठीक है सच है, करो
    • x :=हीप से एलिमेंट हटाएं और इसे नकारें
    • d :=s - x
    • x2 :=x mod d यदि d> 1 अन्यथा 1
    • s :=s + x2 - x
    • ठीक है:=x, x2 के समान नहीं है
    • x :=x2
    • ढेर q में -x डालें
  • सही लौटें जब q में सभी तत्व -1 हो

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

उदाहरण

class Solution:
   def solve(self, nums):
      if len(nums) == 1:
         return nums == [1]
      from heapq import heapify, heappop, heappush

      q = [-x for x in nums]
      heapify(q)
      s = sum(nums)
      ok = True

      while ok:
         x = -heappop(q)
         d = s - x
         x2 = x % d if d > 1 else 1
         s += x2 - x
         ok = x != x2
         x = x2
         heappush(q, -x)

      return all(x == -1 for x in q)

ob = Solution()
target = [5, 9, 3]
print(ob.solve(target))

इनपुट

[5, 9, 3]

आउटपुट

True

  1. पायथन में देखे गए स्थानों पर चलते हुए रोबोट की जाँच करने का कार्यक्रम लक्ष्य तक पहुँच सकता है

    मान लीजिए हमारे पास एक रोबोट है, जो वर्तमान में (0, 0) (कार्तीय तल) पर बैठा है। यदि हमारे पास एन (उत्तर), एस (दक्षिण), डब्ल्यू (पश्चिम), और ई (पूर्व) युक्त इसकी चाल की सूची है। हालाँकि, यदि रोबोट किसी ऐसे स्थान पर पहुँचता है जहाँ वह पहले रहा है, तो वह उसी दिशा में आगे बढ़ता रहेगा जब तक कि वह एक नए अ

  1. किसी संख्या की जाँच करने के लिए प्रोग्राम को अलग-अलग भाज्य संख्याओं के योग के रूप में लिखा जा सकता है या पायथन में नहीं

    मान लीजिए कि हमारे पास एक धनात्मक संख्या n है, हमें यह जांचना है कि n को अद्वितीय धनात्मक भाज्य संख्याओं के योग के रूप में लिखा जा सकता है या नहीं। इसलिए, यदि इनपुट n =144 जैसा है, तो आउटपुट ट्रू होगा, जैसे 4! +5! =24 + 120 =144 इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - तथ्य:=1 रेस :=

  1. रोबोट की जाँच करने का कार्यक्रम पायथन में लक्ष्य की स्थिति तक पहुँच सकता है या नहीं

    मान लीजिए हमारे पास एक रोबोट है, जो वर्तमान में (0, 0) (कार्तीय तल) पर बैठा है। यदि हमारे पास एन (उत्तर), एस (दक्षिण), डब्ल्यू (पश्चिम), और ई (पूर्व) युक्त इसकी चालों की सूची है। हमें यह जांचना होगा कि क्या यह गंतव्य निर्देशांक (x, y) पर पहुंच सकता है। इसलिए, यदि इनपुट चाल =[एन, एन, ई, ई, एस], (एक्