Program to Check if Given Matrix is Magic Matrix or Not

Program to Check if Given Matrix is Magic Matrix or Not

  • Write a program to Check if Given Matrix is Magic Matrix or Not in C
  • Write a program to Check if Given Matrix is Magic Matrix or Not in C++
  • Write a program to Check if Given Matrix is Magic Matrix or Not in Python
  • Write a program to Check if Given Matrix is Magic Matrix or Not in PHP
  • Write a program to Check if Given Matrix is Magic Matrix or Not in Java
  • Write a program to Check if Given Matrix is Magic Matrix or Not in Java Script
  • Write a program to Check if Given Matrix is Magic Matrix or Not in C#

Explanation:

To check if a given matrix is a magic matrix (or magic square), the following conditions must be satisfied:

  1. Square Matrix:
    • The matrix must be n × n (same number of rows and columns).
  2. Equal Sum of Rows, Columns, and Diagonals:
    • The sum of elements in each row, each column, and the two diagonals should be the same.

Steps:

  1. Input:
    • Read an n×nn \times nn×n matrix.
  2. Compute the Target Sum:
    • Calculate the sum of the first row (or column) as the target sum.
  3. Verify the Rows:
    • Check if the sum of elements in each row equals the target sum.
  4. Verify the Columns:
    • Check if the sum of elements in each column equals the target sum.
  5. Verify the Diagonals:
    • Check if the sum of the main diagonal (i = j) and secondary diagonal (i + j = n −1 ) equals the target sum.
  6. Output:
    • If all checks pass, the matrix is a magic matrix; otherwise, it is not.

Program to Check if Given Matrix is Magic Matrix or Not

#include <stdio.h>
#include <stdbool.h>

bool isMagicMatrix(int matrix[3][3], int n) {
    int sumDiagonal1 = 0, sumDiagonal2 = 0;

    // Sum of the first diagonal
    for (int i = 0; i < n; i++) {
        sumDiagonal1 += matrix[i][i];
        sumDiagonal2 += matrix[i][n - 1 - i];
    }

    // Check if diagonals are not equal
    if (sumDiagonal1 != sumDiagonal2)
        return false;

    // Sum of each row and column
    for (int i = 0; i < n; i++) {
        int rowSum = 0, colSum = 0;
        for (int j = 0; j < n; j++) {
            rowSum += matrix[i][j];
            colSum += matrix[j][i];
        }
        if (rowSum != sumDiagonal1 || colSum != sumDiagonal1)
            return false;
    }

    return true;
}

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

    if (isMagicMatrix(matrix, 3))
        printf("The given matrix is a Magic Matrix.\n");
    else
        printf("The given matrix is NOT a Magic Matrix.\n");

    return 0;
}

#include <iostream>
using namespace std;

bool isMagicMatrix(int matrix[3][3], int n) {
    int sumDiagonal1 = 0, sumDiagonal2 = 0;

    // Sum of the first diagonal
    for (int i = 0; i < n; i++) {
        sumDiagonal1 += matrix[i][i];
        sumDiagonal2 += matrix[i][n - 1 - i];
    }

    // Check if diagonals are not equal
    if (sumDiagonal1 != sumDiagonal2)
        return false;

    // Sum of each row and column
    for (int i = 0; i < n; i++) {
        int rowSum = 0, colSum = 0;
        for (int j = 0; j < n; j++) {
            rowSum += matrix[i][j];
            colSum += matrix[j][i];
        }
        if (rowSum != sumDiagonal1 || colSum != sumDiagonal1)
            return false;
    }

    return true;
}

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

    if (isMagicMatrix(matrix, 3))
        cout << "The given matrix is a Magic Matrix." << endl;
    else
        cout << "The given matrix is NOT a Magic Matrix." << endl;

    return 0;
}

def is_magic_matrix(matrix):
    n = len(matrix)
    sum_diagonal1 = sum(matrix[i][i] for i in range(n))
    sum_diagonal2 = sum(matrix[i][n - 1 - i] for i in range(n))

    # Check if diagonals are not equal
    if sum_diagonal1 != sum_diagonal2:
        return False

    # Check each row and column
    for i in range(n):
        if sum(matrix[i]) != sum_diagonal1 or sum(matrix[j][i] for j in range(n)) != sum_diagonal1:
            return False

    return True


matrix = [
    [8, 1, 6],
    [3, 5, 7],
    [4, 9, 2]
]

if is_magic_matrix(matrix):
    print("The given matrix is a Magic Matrix.")
else:
    print("The given matrix is NOT a Magic Matrix.")

<?php
function isMagicMatrix($matrix, $n) {
    $sumDiagonal1 = 0;
    $sumDiagonal2 = 0;

    // Sum of the diagonals
    for ($i = 0; $i < $n; $i++) {
        $sumDiagonal1 += $matrix[$i][$i];
        $sumDiagonal2 += $matrix[$i][$n - 1 - $i];
    }

    // Check if diagonals are not equal
    if ($sumDiagonal1 != $sumDiagonal2) {
        return false;
    }

    // Check each row and column
    for ($i = 0; $i < $n; $i++) {
        $rowSum = 0;
        $colSum = 0;
        for ($j = 0; $j < $n; $j++) {
            $rowSum += $matrix[$i][$j];
            $colSum += $matrix[$j][$i];
        }
        if ($rowSum != $sumDiagonal1 || $colSum != $sumDiagonal1) {
            return false;
        }
    }

    return true;
}

$matrix = [
    [8, 1, 6],
    [3, 5, 7],
    [4, 9, 2]
];

if (isMagicMatrix($matrix, 3)) {
    echo "The given matrix is a Magic Matrix.\n";
} else {
    echo "The given matrix is NOT a Magic Matrix.\n";
}
?>

public class MagicMatrix {
    public static boolean isMagicMatrix(int[][] matrix, int n) {
        int sumDiagonal1 = 0, sumDiagonal2 = 0;

        // Sum of the diagonals
        for (int i = 0; i < n; i++) {
            sumDiagonal1 += matrix[i][i];
            sumDiagonal2 += matrix[i][n - 1 - i];
        }

        // Check if diagonals are not equal
        if (sumDiagonal1 != sumDiagonal2)
            return false;

        // Check each row and column
        for (int i = 0; i < n; i++) {
            int rowSum = 0, colSum = 0;
            for (int j = 0; j < n; j++) {
                rowSum += matrix[i][j];
                colSum += matrix[j][i];
            }
            if (rowSum != sumDiagonal1 || colSum != sumDiagonal1)
                return false;
        }

        return true;
    }

    public static void main(String[] args) {
        int[][] matrix = {
            {8, 1, 6},
            {3, 5, 7},
            {4, 9, 2}
        };

        if (isMagicMatrix(matrix, 3))
            System.out.println("The given matrix is a Magic Matrix.");
        else
            System.out.println("The given matrix is NOT a Magic Matrix.");
    }
}

function isMagicMatrix(matrix) {
    const n = matrix.length;
    let sumDiagonal1 = 0,
        sumDiagonal2 = 0;

    // Sum of the diagonals
    for (let i = 0; i < n; i++) {
        sumDiagonal1 += matrix[i][i];
        sumDiagonal2 += matrix[i][n - 1 - i];
    }

    // Check if diagonals are not equal
    if (sumDiagonal1 !== sumDiagonal2) return false;

    // Check each row and column
    for (let i = 0; i < n; i++) {
        let rowSum = 0,
            colSum = 0;
        for (let j = 0; j < n; j++) {
            rowSum += matrix[i][j];
            colSum += matrix[j][i];
        }
        if (rowSum !== sumDiagonal1 || colSum !== sumDiagonal1) return false;
    }

    return true;
}

const matrix = [
    [8, 1, 6],
    [3, 5, 7],
    [4, 9, 2]
];

console.log(
    isMagicMatrix(matrix)
        ? "The given matrix is a Magic Matrix."
        : "The given matrix is NOT a Magic Matrix."
);

using System;

class MagicMatrixChecker
{
    static bool IsMagicMatrix(int[,] matrix, int n)
    {
        int sumDiagonal1 = 0, sumDiagonal2 = 0;

        // Calculate the sums of both diagonals
        for (int i = 0; i < n; i++)
        {
            sumDiagonal1 += matrix[i, i];
            sumDiagonal2 += matrix[i, n - 1 - i];
        }

        // Check if the sums of diagonals are different
        if (sumDiagonal1 != sumDiagonal2)
            return false;

        // Check the sum of each row and column
        for (int i = 0; i < n; i++)
        {
            int rowSum = 0, colSum = 0;

            for (int j = 0; j < n; j++)
            {
                rowSum += matrix[i, j];
                colSum += matrix[j, i];
            }

            // Check if row or column sum differs from diagonal sum
            if (rowSum != sumDiagonal1 || colSum != sumDiagonal1)
                return false;
        }

        return true;
    }

    static void Main()
    {
        // Example of a 3x3 matrix
        int[,] matrix = {
            { 8, 1, 6 },
            { 3, 5, 7 },
            { 4, 9, 2 }
        };

        // Check if the matrix is a magic matrix
        if (IsMagicMatrix(matrix, 3))
            Console.WriteLine("The given matrix is a Magic Matrix.");
        else
            Console.WriteLine("The given matrix is NOT a Magic Matrix.");
    }
}

List of All Programs