/ / मेरा विकर्ण मैट्रिक्स कैलकुलेटर कुल क्यों नहीं लौटाता है? - माणिक

मेरा विकर्ण मैट्रिक्स कैलकुलेटर कुल क्यों नहीं लौटाता है? - माणिक

मेरी विधि में सबरेज़ की एक सरणी लेनी चाहिए, ढूंढेंपहले सरणी के पहले मूल्य का योग, दूसरे सरणी का दूसरा मूल्य, तीसरे सरणी का तीसरा मूल्य और इसी तरह। इनपुट और अपेक्षित परिणाम के कुछ उदाहरण इस प्रकार हैं:

exampleArray = [
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1]
]
diagonalSum(exampleArray) # => 4

exampleArray = [
[1, 0, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 0, 1, 0],
[0, 0, 0, 0, 1]
]
diagonalSum(exampleArray) # => 5

मैंने यह लिखा:

def diagonalSum(matrix)
total = 0
counter = 0
while matrix.length <= counter + 1 do
total += matrix[counter][counter]
counter += 1
end
total
end

और यह लौटता है 0.

उत्तर:

जवाब के लिए 0 № 1

सरणी को मैट्रिक्स में बदलना और लागू करना सबसे आसान है मैट्रिक्स # ट्रेस.

require "matrix"

arr = [[1, 0, 0, 7],
[0, 2, 0, 0],
[0, 0, 3, 0],
[8, 0, 0, 4]]

Matrix[*arr].trace
#=> 10

जवाब के लिए 0 № 2

आपके द्वारा प्रदान किए गए कोड के अनुसार, जिसमें इनपुट सरणी का एक सरणी है, जो पहली सलाह मैं आपको दे सकता हूं वह यह है कि रूबी में आपको उपयोग करने से बचना चाहिए for/while लूप और पुनरावृत्तियों का उपयोग करें जैसे कि each/each_with_index इसके बजाय (इस पर आधारित) रूबी स्टाइल गाइड और @tadman और @Yu हाओ के सुझाव)।

The अनुक्रमणिका के साथ प्रत्येक iterator अपनी अनुक्रमणिका स्थिति के साथ साथ चलना की वर्तमान सरणी के साथ एक रूबी ब्लॉक लेता है, तो आप डॉन "टी अपने स्वयं के सूचकांक चर को परिभाषित करने और यह हर पुनरावृत्ति में अद्यतन की जरूरत है ।

यह आपके कोड में लागू करने के बाद में परिणाम होगा:

def diagonal_sum(matrix)
total = 0
matrix.each_with_index do |row, index|
total+=row[index]
end
total
end

यह भी ध्यान रखें कि रूबी में कंवेंशन snake_case में चर और विधि नाम लिखने के लिए है (पिछले शैली गाइड के अनुसार) ।