मान लीजिए हमारे पास एक दो-आयामी बाइनरी मैट्रिक्स है, जो एक आयताकार शतरंज बोर्ड को दर्शाता है, यहां 0 खाली सेल के लिए है और 1 नाइट के लिए है। नाइट दो वर्ग क्षैतिज रूप से और एक वर्ग लंबवत, या दो वर्ग लंबवत और एक वर्ग क्षैतिज रूप से चलने में सक्षम है (शतरंज बोर्ड के नाइट की तरह)। हमें जांचना है कि क्या कोई दो नाइट एक-दूसरे पर हमला कर रहे हैं या नहीं।
उदाहरण के लिए, यदि इनपुट है:
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 0 | 0 |
| 0 | 0 | 0 | 1 | 0 |
तो आउटपुट होगा True।
हल करने के चरण
row, col :=मैट्रिक्स की पंक्ति संख्या, स्तंभ संख्या।rको 0 सेrow-1तक:cको 0 सेcol-1तक:- यदि
A[r][c]शून्येतर है, तो:- प्रत्येक
nr, ncके लिए[(r+1, c-2), (r+1, c+2), (r+2, c-1), (r+2, c+1)]में:- यदि
nrपंक्ति की सीमा में है औरncस्तंभ की सीमा में है औरA[nr][nc]शून्येतर है, तोTrueलौटाएं।
- यदि
- प्रत्येक
- यदि
Falseलौटाएं।
उदाहरण
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