मान लीजिए कि हमारे पास एक बाइनरी सूची (सूची में 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
- यदि कोशिकाएं[j - 1] कोशिकाओं के समान हैं[j + 1], तो
- नए_सेल लौटाएं
- मुख्य विधि से निम्न कार्य करें:
- देखा:=एक नया नक्शा
- झंडा :=झूठा, मैं :=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]