मान लीजिए कि हमारे पास एक द्वि-आयामी बाइनरी मैट्रिक्स है, जो एक आयताकार शतरंज बोर्ड का प्रतिनिधित्व करता है, यहां 0 खाली सेल के लिए है और 1 नाइट के लिए है। नाइट दो वर्गों को क्षैतिज रूप से और एक वर्ग लंबवत, या दो वर्ग लंबवत और एक वर्ग क्षैतिज रूप से स्थानांतरित करने में सक्षम है (जैसे शतरंज बोर्ड नाइट)। हमें यह जांचना होगा कि कोई दो शूरवीर एक दूसरे पर हमला कर रहे हैं या नहीं।
तो, अगर इनपुट पसंद है
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 0 |
तब आउटपुट ट्रू होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- पंक्ति, कॉलम:=मैट्रिक्स की पंक्ति गणना, मैट्रिक्स की कॉलम गणना
- r के लिए 0 से पंक्ति-1 की श्रेणी में, करें
- सी श्रेणी में 0 से col-1 के लिए, करें
- यदि A[r][c] शून्य नहीं है, तो
- प्रत्येक एनआर के लिए, एनसी में [(आर+1, सी-2), (आर+1, सी+2), (आर+2, सी-1), (आर+2, सी+1)] , करो
- यदि एनआर पंक्ति की सीमा में है और एनसी कर्नल की सीमा में है और ए [एनआर, एनसी] गैर-शून्य है, तो
- सही लौटें
- यदि एनआर पंक्ति की सीमा में है और एनसी कर्नल की सीमा में है और ए [एनआर, एनसी] गैर-शून्य है, तो
- प्रत्येक एनआर के लिए, एनसी में [(आर+1, सी-2), (आर+1, सी+2), (आर+2, सी-1), (आर+2, सी+1)] , करो
- यदि A[r][c] शून्य नहीं है, तो
- सी श्रेणी में 0 से col-1 के लिए, करें
- झूठी वापसी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, A): row, col = len(A), len(A[0]) for r in range(row): for c in range(col): if A[r][c]: for nr, nc in ((r+1, c-2), (r+1, c+2), (r+2, c-1), (r+2, c+1)): if 0 <= nr < row and 0 <= nc <col and A[nr][nc]: return True return False ob = Solution() mat = [[0,0,0,0,0], [0,1,0,0,0], [0,0,0,1,0]] print(ob.solve(mat))
इनपुट
[[0,0,0,0,0], [0,1,0,0,0], [0,0,0,1,0]]
आउटपुट
True