# GO challenges - Diagonal Difference problem

Posted on Apr 11, 2019   ∣  1 min read  ∣

# Problem

HackerRank

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. It must return an integer representing the absolute diagonal difference. diagonalDifference takes the following parameter:

arr: an array of integers

# Input Format

The first line contains a single integer,`n`, the number of rows and columns in the matrix . Each of the next lines describes a row,`arr[i]`, and consists of space-separated integers `arr[i][j]` .

# Output Format

Print the absolute difference between the sums of the matrixâ€™s two diagonals as a single integer.

# Sample Input :

``````3
11 2 4
4 5 6
10 8 -12
``````

# Sample Output :

``````15

``````

# Explanation :

The primary diagonal is:

``````11
5
-12
``````

Sum across the primary diagonal: 11 + 5 - 12 = 4 The secondary diagonal is:

``````     4
5
10

``````

Sum across the secondary diagonal: 4 + 5 + 10 = 19 Difference: |4 - 19| = 15 Note: |x| is the absolute value of x

# Solution

``````    package main

import (
"fmt"
"math"
)

func main(){

var n int
fmt.Scan(&n)

a := make([][]int, n)

lsum,rsum := 0,0

for i:=0;i<n;i++{
a[i] = make([]int,n)
for j:=0;j<n;j++{
fmt.Scan(&a[i][j])
if i == j {
lsum += a[i][j]
}
if i+j == n-1 {
rsum += a[i][j]
}
}
}

diff := math.Abs(float64(lsum - rsum))
fmt.Println(diff)

}
``````