मान लीजिए, हमें एक m x n ग्रिड बॉक्स दिया गया है, जहां प्रत्येक सेल में एक बोर्ड होता है जो या तो टॉप-राइट से बॉटम-लेफ्ट की ओर होता है, या टॉप-लेफ्ट से बॉटम-राइट की ओर। अब टॉप सेल्स से, एक गेंद को बॉक्स में डाला जाता है और हमें जांचना है कि क्या वह गेंद बॉक्स के नीचे पहुंचती है। ग्रिड को मैट्रिक्स के रूप में दिया जाता है। यदि एक सेल 1 से चिह्नित है तो विकर्ण बोर्ड टॉप-लेफ्ट से बॉटम-राइट तक फैला होता है; यदि यह -1 से चिह्नित है तो यह टॉप-राइट से बॉटम-लेफ्ट कोने तक फैला होता है। यदि n गेंदों को बॉक्स में डाला जाता है, तो हमें पता लगाना है कि कितनी गेंदें नीचे पहुंचती हैं।

3x3 ग्रिड बॉक्स का उदाहरण।
उदाहरण के लिए, यदि इनपुट है mat =
| 1 | 1 | 1 | -1 |
| -1 | 1 | 1 | -1 |
| 1 | -1 | -1 | 1 |
| 1 | -1 | 1 | -1 |
[-1, -1, -1, -1] होगा।
समाधान के चरण
i :=matमें पंक्तियों की संख्याj :=matमें कॉलम की संख्याres := [](नई सूची)valको 0 सेj-1तक:x := valrको 0 सेi-1तक:s := mat[r][x]x := x + mat[r][x]- यदि
x < 0 or x >= j or mat[r][x] != s:res.append(-1)- लूप से बाहर निकलें
- अन्यथा:
res.append(x)
resवापस करें
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
def solve(mat):
i, j = len(mat), len(mat[0])
res = []
for val in range(j):
x = val
for r in range(i):
s = mat[r][x]
x += mat[r][x]
if x < 0 or x >= j or mat[r][x] != s:
res.append(-1)
break
else:
res.append(x)
return res
print(solve([[1, 1, 1, -1], [-1, 1, 1, -1], [1, -1, -1, 1], [1, -1, 1, -1]]))
इनपुट
[[1, 1, 1, -1], [-1, 1, 1, -1], [1, -1, -1, 1], [1, -1, 1, -1]]
आउटपुट
[-1, -1, -1, -1]