একটি স্কোয়ার ম্যাট্রিক্স দেওয়া আছে। প্রাইমারি ডায়াগোনাল এবং সেকেন্ডারি ডায়াগোনালের সব এলিমেন্টের যোগফল বের করতে হবে। ক্রসিং এলিমেন্ট (দুই ডায়াগোনালের কমন এলিমেন্ট) একবারই কাউন্ট হবে।
ইনপুট ম্যাট্রিক্স:
| 10 | 5 | 9 | 6 |
| 8 | 15 | 3 | 2 |
| 3 | 8 | 12 | 3 |
| 2 | 11 | 7 | 3 |
সমাধানের ধাপসমূহ
m = len(matrix)
যদি m == 1: return matrix[0][0]
count = 0
i = 0 থেকে m-1: count += matrix[i][i] + matrix[i][-1-i]
যদি m বিজোড়: count -= matrix[m//2][m//2] (ক্রসিং এলিমেন্ট বাদ দিন)
count রিটার্ন করুন
উদাহরণ (Python)
def solve(matrix):
m = len(matrix)
if m == 1: return matrix[0][0]
count = 0
for i in range(m):
count += matrix[i][i]
count += matrix[i][-1 - i]
if m % 2 == 1:
count -= matrix[m // 2][m // 2]
return count
matrix = [[10,5,9,6],[8,15,3,2],[3,8,12,3],[2,11,7,3]]
print(solve(matrix))
ইনপুট
[[10,5,9,6],[8,15,3,2],[3,8,12,3],[2,11,7,3]]
আউটপুট
59