मान लीजिए, हमें एक mxn ग्रिड बॉक्स दिया गया है, जहां प्रत्येक सेल में एक बोर्ड होता है जो या तो ऊपर-दाएं से नीचे-बाएं, या ऊपर-बाएं से नीचे-दाएं तक स्थित होता है। अब ऊपर की कोशिकाओं से, एक गेंद बॉक्स में डाल दी जाती है और हमें यह जांचना होता है कि क्या वह गेंद बॉक्स के नीचे तक पहुँचती है। ग्रिड को मैट्रिक्स के रूप में दिया गया है। यदि एक सेल को 1 चिह्नित किया गया है तो विकर्ण बोर्ड ऊपर-बाएं से नीचे-दाएं तक फैला हुआ है; यदि इसे -1 चिह्नित किया गया है तो यह ऊपर-दाएं से नीचे-बाएं कोने तक फैला हुआ है। यदि n गेंदों को बॉक्स में डाला जाता है, तो हमें पता लगाना होगा कि कितनी गेंदें नीचे तक पहुँचती हैं।
3x3 ग्रिड बॉक्स का उदाहरण।
तो, अगर इनपुट चटाई की तरह है =
1 | 1 | 1 | -1 |
-1 | 1 | 1 | -1 |
1 | -1 | -1 | 1 |
1 | -1 | 1 | -1 |
तो आउटपुट [-1, -1, -1, -1]
. होगाइसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
i :=चटाई में पंक्तियों की संख्या
-
j :=चटाई में स्तंभों की संख्या
-
रेस :=एक नई सूची
-
वैल के लिए 0 से j की सीमा में, करें
-
एक्स:=वैल
-
r के लिए 0 से i की सीमा में, करें
-
एस:=चटाई [आर, एक्स]
-
एक्स:=एक्स + मैट [आर, एक्स]
-
यदि x <0 या x>=j या mat[r, x] s के समान नहीं है, तो
-
रेस के अंत में एलीमेंट -1 जोड़ें
-
लूप से बाहर आएं
-
-
-
अन्यथा,
-
रेस के अंत में x जोड़ें
-
-
-
रिटर्न रेस
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें
def solve(mat): i, j = map(len, (mat, 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 += [-1] break else: res += [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]