मान लीजिए कि हमारे पास एक 2D बाइनरी मैट्रिक्स है जहां 1 का अर्थ है एक जीवित कोशिका और 0 का अर्थ है एक मृत कोशिका। एक सेल के पड़ोसी इसके तत्काल क्षैतिज, लंबवत और विकर्ण कोशिकाएं हैं। हमें इन नियमों का उपयोग करके मैट्रिक्स की अगली स्थिति ढूंढनी होगी
-
दो या तीन जीवित पड़ोसियों के साथ कोई भी जीवित कोशिका रहती है।
-
तीन जीवित पड़ोसियों के साथ कोई भी मृत कोशिका एक जीवित कोशिका बन जाती है।
-
अन्य सभी कोशिकाएं मर जाती हैं।
तो, अगर इनपुट पसंद है
1 | 1 | 0 | 0 |
0 | 1 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 1 | 0 | 1 |
तो आउटपुट होगा
1 | 1 | 0 | 0 |
0 | 1 | 0 | 0 |
0 | 1 | 0 | 0 |
1 | 1 | 0 | 0 |
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
-
n :=मैट्रिक्स की पंक्ति का आकार, m :=मैट्रिक्स का स्तंभ आकार
-
res :=आकार n x m का एक मैट्रिक्स, और 0 से भरें
-
मेरे लिए 0 से n की सीमा में, करें
-
j के लिए 0 से m की सीमा में, करें
-
एस:=0
-
यदि मैट्रिक्स [i, j] 0 के समान है, तो
-
k के लिए i - 1 से i + 1 की श्रेणी में, करें
-
या h रेंज में j-1 से j + 1, do
-
यदि 0 <=k
-
एस:=एस + मैट्रिक्स [के, एच]
-
-
-
-
res[i, j] :=[0, 1, सत्य जब s 3 के समान हो]
-
-
अन्यथा,
-
k के लिए i - 1 से i + 1 की श्रेणी में, करें
-
j - 1 से j + 1 की श्रेणी में h के लिए, करें
-
यदि 0 <=k
-
एस:=एस + मैट्रिक्स [के, एच]
-
-
-
-
अगर s या तो 3 या 4 है, तो
-
रेस [i, j] :=1
-
-
-
-
-
रिटर्न रेस
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
class Solution: def solve(self, matrix): n, m = len(matrix), len(matrix[0]) res = [[0 for j in range(m)] for i in range(n)] for i in range(n): for j in range(m): s = 0 if matrix[i][j] == 0: for k in range(i - 1, i + 2): for h in range(j - 1, j + 2): if 0 <= k < n and 0 <= h < m: s += matrix[k][h] res[i][j] = [0, 1][s == 3] else: for k in range(i - 1, i + 2): for h in range(j - 1, j + 2): if 0 <= k < n and 0 <= h < m: s += matrix[k][h] if s in [3, 4]: res[i][j] = 1 return res ob = Solution() matrix = [ [1, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 1], [1, 1, 0, 1] ] print(ob.solve(matrix))
इनपुट
[[1, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 1], [1, 1, 0, 1] ]
आउटपुट
[[1, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0], [1, 1, 0, 0]]