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

अजगर में k दिनों के बाद जेल की कोशिकाओं की स्थिति खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक बाइनरी सूची (सूची में 1s और 0s) और दूसरा मान k है। अंकों में प्रत्येक मान एक जेल सेल की स्थिति का प्रतिनिधित्व करता है जहां 1 कब्जे वाले सेल को इंगित करता है और 0 खाली सेल को इंगित करता है। प्रत्येक दिन जब एक कोशिका में दो आसन्न कोशिकाएँ होती हैं जो या तो दोनों पर कब्जा कर लेती हैं या दोनों खाली हो जाती हैं, तो यह व्यस्त हो जाती है। नहीं तो खाली हो जाता है। इसलिए हमें k दिनों की संख्या के बाद जेल की कोठरियों की स्थिति का पता लगाना होगा।

इसलिए, यदि इनपुट संख्या =[1, 0, 1, 0, 0, 0, 0, 0] k =1 जैसा है, तो आउटपुट [0, 1, 1, 0, 1, 1, 1, होगा। 0], जैसा कि हम देख सकते हैं कि पहली और आखिरी अनुक्रमणिका पर कभी कब्जा नहीं किया जा सकता क्योंकि उनके पास कभी भी 2 पड़ोसी नहीं हो सकते।

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

  • एक फ़ंक्शन को परिभाषित करें next_day_state() । यह सेल लेगा
  • new_cells :=सेल की एक कॉपी
  • new_cells[0] :=0, new_cells[7] :=0
  • जे के लिए 1 से 6 की सीमा में, करें
    • यदि कोशिकाएं[j - 1] कोशिकाओं के समान हैं[j + 1], तो
      • new_cells[j] :=1
    • अन्यथा,
      • new_cells[j] :=0
  • नए_सेल लौटाएं
  • मुख्य विधि से निम्न कार्य करें:
  • देखा:=एक नया नक्शा
  • झंडा :=झूठा, मैं :=0
  • जबकि मैं <एन, करते हैं
    • ns :=next_day_state(cells)
    • यदि ns नहीं देखा जाता है, तो
      • एनएस को देखा गया के रूप में चिह्नित करें
    • अन्यथा,
      • झंडा :=सच
      • लूप से बाहर आएं
    • कोशिकाएं:=एनएस
    • i :=i + 1
  • अगर झंडा सही है, तो
    • N :=N mod (देखी गई वस्तुओं की संख्या)
    • मैं :=0
    • जबकि i
    • ns :=next_day_state(cells)
    • i :=i + 1
    • कोशिकाएं:=एनएस
  • सेल लौटाएं
  • आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:

    उदाहरण

    import copy
    class Solution:
       def next_day_state(self, cells):
          new_cells = copy.copy(cells)
          new_cells[0] = 0
          new_cells[7] = 0
          for j in range(1, 7):
             if cells[j - 1] == cells[j + 1]:
                new_cells[j] = 1
             else:
                new_cells[j] = 0
          return new_cells
    
       def solve(self, cells, N):
          seen = dict()
          flag, i = False, 0
    
          while i < N:
             ns = self.next_day_state(cells)
             if tuple(ns) not in seen:
                seen[tuple(ns)] = True
             else:
                flag = True
                break
             cells = ns
             i += 1
    
          if flag:
             N = N % len(seen)
             i = 0
             while i < N:
                ns = self.next_day_state(cells)
                i += 1
                cells = ns
          return cells
    
    ob = Solution()
    nums = [1, 0, 1, 0, 0, 0, 0, 0]
    k = 1
    print(ob.solve(nums, k))

    इनपुट

    [4, 7, 2, 5], 6

    आउटपुट

    [0, 1, 1, 0, 1, 1, 1, 0]

    1. पायथन में KLength सबलिस्ट को हटाने के बाद न्यूनतम आयाम खोजने का कार्यक्रम

      मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक और एक मान k कहा जाता है। सबसे पहले हम k आकार की एक सबलिस्ट को हटा देंगे, फिर न्यूनतम (अधिकतम अंक - न्यूनतम संख्या) का पता लगाएंगे। इसलिए, यदि इनपुट अंकों की तरह है =[2, 3, 10, 9, 8, 4] k =3, तो आउटपुट 2 होगा, यदि हम [10, 9, 8] को हटा दें तो हमे

    1. पायथन में बहुभुज का क्षेत्रफल ज्ञात करने का कार्यक्रम

      मान लीजिए कि हमारे पास ऑर्डर किए गए बिंदुओं की एक सूची है जो 2 डी विमान पर एक साधारण बहुभुज समापन बिंदु का प्रतिनिधित्व करती है। हमें इस बहुभुज का क्षेत्रफल ज्ञात करना है। इसलिए, यदि इनपुट अंक =[(0, 0), (0,5), (3, 5), (3,0)] की तरह है, तो आउटपुट 15 होगा। इसे हल करने के लिए, हम इन चरणों का पालन क

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

      मान लीजिए हमारे पास रंगों की एक सूची है (आर, जी, बी)। अब अगर दो अलग-अलग रंग एक-दूसरे के बगल में हों तो वे तीसरे रंग की एक ही रंग की वस्तु में बदल सकते हैं। हमें ऐसे परिवर्तनों के किसी भी संभावित क्रम के बाद शेष बची सबसे छोटी संख्या ज्ञात करनी होगी। इसलिए, यदि इनपुट रंग =[G, R, G, B, R] जैसा है, तो