Diagonal Difference
Problem Statement :
Given a square matrix, calculate the absolute difference between the sums of its diagonals. For example, the square matrix arr is shown below: 1 2 3 4 5 6 9 8 9 The left-to-right diagonal = 1+ 5 + 9 = 15. .The right to left diagonal = 3 +5 +9 = 17 . Their absolute difference is |15-17| = 2 . . Function description Complete the diagonal difference function in the editor below. diagonalDifference takes the following parameter: int arr[n][m]: an array of integers Return int: the absolute diagonal difference Input Format The first line contains a single integer, n, the number of rows and columns in the square matrix arr . Each of the next n lines describes a row, arr[i] , and consists of n space-separated integers arr[i][j] .Constraints -100 <= a[i][j] <= 100 Output Format Return the absolute difference between the sums of the matrix's two diagonals as a single integer.
Solution :
In C :
int diagonalDifference(int arr_rows, int arr_columns, int** arr) {
int l_diagonal_sum = 0, r_diagonal_sum = 0;
for(int i = 0; i< arr_rows;i++)
{
for(int j=0;j<arr_columns;j++)
{
if(i == j)
{
l_diagonal_sum += arr[i][j];
}
if((i+j) == (arr_columns-1))
{
r_diagonal_sum += arr[i][j];
}
}
}
return abs(l_diagonal_sum - r_diagonal_sum);
}
In C ++ :
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int N;
cin >> N;
int i, j;
int sumdiag1 = 0;
int sumdiag2 = 0;
for(i = 0; i < N; i++){
for(j = 0; j< N; j++)
{
int no;
cin >> no;
if(i == j)
sumdiag1 += no;
if(i+j == N-1)
sumdiag2 += no;
}
}
cout << abs(sumdiag1 - sumdiag2);
return 0;
}
In Java :
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
int n;
Scanner in=new Scanner(System.in);
n=in.nextInt();
int a[][]=new int[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
a[i][j]=in.nextInt();
}
}
int pd=0,npd=0;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(j==i)
pd=pd+a[i][j];
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(i==n-j-1){
npd=npd+a[i][j];
}
}
}
int dif=npd-pd;
dif=Math.abs(dif);
System.out.println(dif);
}
}
In Python3 :
N=int(input())
grid=[]
for i in range(0,N):
lists=[int(i) for i in input().split()]
grid.append(lists)
count=0
sum1=0
sum2=0
j1=0
j2=N-1
while(count<N):
sum1=sum1+grid[count][j1]
sum2=sum2+grid[count][j2]
count+=1
j1+=1
j2-=1
print(abs(sum1-sum2))