मान लीजिए हमारे पास एक 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 से भरें
- i को 0 से n तक रेंज में, करें
- j को 0 से m तक रेंज में, करें
- s := 0
- यदि matrix[i, j] 0 के समान है, तो
- k को i - 1 से i + 1 तक रेंज में, करें
- h को j - 1 से j + 1 तक रेंज में, करें
- यदि 0 <= k < n और 0 <= h < m, तो
- s := s + matrix[k, h]
- यदि 0 <= k < n और 0 <= h < m, तो
- h को j - 1 से j + 1 तक रेंज में, करें
- res[i, j] := [0, 1, true जब s 3 के समान है]
- k को i - 1 से i + 1 तक रेंज में, करें
- अन्यथा,
- k को i - 1 से i + 1 तक रेंज में, करें
- h को j - 1 से j + 1 तक रेंज में, करें
- यदि 0 <= k < n और 0 <= h < m, तो
- s := s + matrix[k, h]
- यदि 0 <= k < n और 0 <= h < m, तो
- h को j - 1 से j + 1 तक रेंज में, करें
- यदि s या तो 3 या 4 है, तो
- res[i, j] := 1
- k को i - 1 से i + 1 तक रेंज में, करें
- res लौटाएं
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
उदाहरण
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]]
- j को 0 से m तक रेंज में, करें