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))