Given a matrix, check whether it’s Magic Square or not. A Magic Square is a n x n matrix of distinct element from 1 to n2 where sum of any row, column or diagonal is always equal to same number.
Examples:
Input : n = 3 2 7 6 9 5 1 4 3 8 Output : Magic matrix Explanation:In matrix sum of each row and each column and diagonals sum is same = 15. Input : n = 3 1 2 3 4 5 6 7 8 9 Output : Not a Magic Matrix Explanation:In matrix sum of each row and each column and diagonals sum is not same.
1. Find sum of prime diagonal.
2. calculate sum of each rows and columns.
3. If the prime diagonal’s sum is equal to every row’s sum and every column’s sum, then its magic matrix
Note : We do not need to calculate the sum of secondary diagonal because if the rows and columns sum is equal too primary diagonal’s sum it means that secondary diagonal sum is automatically equal.
C++
// C++ program to check whether a given // matrix is magic matrix or not #include <bits/stdc++.h> #define N 3 using namespace std; // Returns true if mat[][] is magic // square, else returns false. bool isMagicSquare( int mat[][N]) { // calculate the sum of // the prime diagonal int sum = 0; for ( int i = 0; i < N; i++) sum = sum + mat[i][i]; // For sums of Rows for ( int i = 0; i < N; i++) { int rowSum = 0; for ( int j = 0; j < N; j++) rowSum += mat[i][j]; // check if every row sum is // equal to prime diagonal sum if (rowSum != sum) return false ; } // For sums of Columns for ( int i = 0; i < N; i++) { int colSum = 0; for ( int j = 0; j < N; j++) colSum += mat[j][i]; // check if every column sum is // equal to prime diagonal sum if (sum != colSum) return false ; } return true ; } // driver program to // test above function int main() { int mat[][N] = {{ 2, 7, 6 }, { 9, 5, 1 }, { 4, 3, 8 }}; if (isMagicSquare(mat)) cout << "Magic Square" ; else cout << "Not a magic Square" ; return 0; } |
Java
// JAVA program to check whether a given // matrix is magic matrix or not import java.io.*; class GFG { static int N = 3 ; // Returns true if mat[][] is magic // square, else returns false. static boolean isMagicSquare( int mat[][]) { // calculate the sum of // the prime diagonal int sum = 0 ; for ( int i = 0 ; i < N; i++) sum = sum + mat[i][i]; // For sums of Rows for ( int i = 0 ; i < N; i++) { int rowSum = 0 ; for ( int j = 0 ; j < N; j++) rowSum += mat[i][j]; // check if every row sum is // equal to prime diagonal sum if (rowSum != sum) return false ; } // For sums of Columns for ( int i = 0 ; i < N; i++) { int colSum = 0 ; for ( int j = 0 ; j < N; j++) colSum += mat[j][i]; // check if every column sum is // equal to prime diagonal sum if (sum != colSum) return false ; } return true ; } // driver program to // test above function public static void main(String[] args) { int mat[][] = {{ 2 , 7 , 6 }, { 9 , 5 , 1 }, { 4 , 3 , 8 }}; if (isMagicSquare(mat)) System.out.println( "Magic Square" ); else System.out.println( "Not a magic" + " Square" ); } } // This code is contributed by vt_m |
Python3
# Python3 program to check whether a given # matrix is magic matrix or not N = 3 # Returns true if mat[][] is magic # square, else returns false. def isMagicSquare( mat) : # calculate the sum of # the prime diagonal s = 0 for i in range ( 0 , N) : s = s + mat[i][i] # For sums of Rows for i in range ( 0 , N) : rowSum = 0 ; for j in range ( 0 , N) : rowSum + = mat[i][j] # check if every row sum is # equal to prime diagonal sum if (rowSum ! = s) : return False # For sums of Columns for i in range ( 0 , N): colSum = 0 for j in range ( 0 , N) : colSum + = mat[j][i] # check if every column sum is # equal to prime diagonal sum if (s ! = colSum) : return False return True # Driver Code mat = [ [ 2 , 7 , 6 ], [ 9 , 5 , 1 ], [ 4 , 3 , 8 ] ] if (isMagicSquare(mat)) : print ( "Magic Square" ) else : print ( "Not a magic Square" ) # This code is contributed by Nikita Tiwari. |
C#
// C# program to check whether a given // matrix is magic matrix or not using System; class GFG { static int N = 3; // Returns true if mat[][] is magic // square, else returns false. static bool isMagicSquare( int [,] mat) { // calculate the sum of // the prime diagonal int sum = 0; for ( int i = 0; i < N; i++) sum = sum + mat[i, i]; // For sums of Rows for ( int i = 0; i < N; i++) { int rowSum = 0; for ( int j = 0; j < N; j++) rowSum += mat[i, j]; // check if every row sum is // equal to prime diagonal sum if (rowSum != sum) return false ; } // For sums of Columns for ( int i = 0; i < N; i++) { int colSum = 0; for ( int j = 0; j < N; j++) colSum += mat[j,i]; // check if every column sum is // equal to prime diagonal sum if (sum != colSum) return false ; } return true ; } // Driver Code public static void Main() { int [,] mat = new int [,] {{ 2, 7, 6 }, { 9, 5, 1 }, { 4, 3, 8 }}; if (isMagicSquare(mat)) Console.WriteLine( "Magic Square" ); else Console.WriteLine( "Not a magic" + " Square" ); } } // This code is contributed by KRV. |
PHP
<?php // PHP program to check whether a given // matrix is magic matrix or not // Returns true if mat[][] is magic // square, else returns false. function isMagicSquare( $mat ) { // calculate the sum of // the prime diagonal $sum = 0; $N =3; for ( $i = 0; $i < $N ; $i ++) $sum = $sum + $mat [ $i ][ $i ]; // For sums of Rows for ( $i = 0; $i < $N ; $i ++) { $rowSum = 0; for ( $j = 0; $j < $N ; $j ++) $rowSum += $mat [ $i ][ $j ]; // check if every row sum is // equal to prime diagonal sum if ( $rowSum != $sum ) return false; } // For sums of Columns for ( $i = 0; $i < $N ; $i ++) { $colSum = 0; for ( $j = 0; $j < $N ; $j ++) $colSum += $mat [ $j ][ $i ]; // check if every column sum is // equal to prime diagonal sum if ( $sum != $colSum ) return false; } return true; } // Driver Code { $mat = array ( array (2, 7, 6), array (9, 5, 1), array (4, 3, 8)); if (isMagicSquare( $mat )) echo "Magic Square" ; else echo "Not a magic Square" ; return 0; } // This code is contributed by nitin mittal ?> |
Magic square
leave a comment
0 Comments