How to check whether a matrix is a magic square or not in Go

1 Answer

0 votes
package main

import (
    "fmt"
)

// Function to check if the matrix is a magic square
func isMagicSquare(matrix [][]int) bool {
    size := len(matrix)
    sumDiagonal1 := 0
    sumDiagonal2 := 0

    // Calculate the sum of the primary diagonal
    for i := 0; i < size; i++ {
        sumDiagonal1 += matrix[i][i]
    }

    // Calculate the sum of the secondary diagonal
    for i := 0; i < size; i++ {
        sumDiagonal2 += matrix[i][size-i-1]
    }

    // If the two diagonals don't have the same sum, it's not a magic square
    if sumDiagonal1 != sumDiagonal2 {
        return false
    }

    // Check sums of each row and column
    for i := 0; i < size; i++ {
        sumRow := 0
        sumCol := 0

        for j := 0; j < size; j++ {
            sumRow += matrix[i][j] // Sum of the current row
            sumCol += matrix[j][i] // Sum of the current column
        }

        // If any row or column sum is not equal to the diagonal sum, it's not a magic square
        if sumRow != sumDiagonal1 || sumCol != sumDiagonal1 {
            return false
        }
    }

    // If all checks pass, it's a magic square
    return true
}

func main() {
    matrix := [][]int{
        {8, 3, 4},
        {1, 5, 9},
        {6, 7, 2},
    }

    if isMagicSquare(matrix) {
        fmt.Println("The given matrix is a magic square.")
    } else {
        fmt.Println("The given matrix is NOT a magic square.")
    }
}


/*
run:

The given matrix is a magic square.

*/

 



answered Sep 30 by avibootz
...