public static int RowSum(int[, ] m, int row)
for (int i = 0; i < m.GetLength(1); i++)
public static int[] AllRows(int[, ] m)
int[] rows = new int[m.GetLength(0)];
for (int i = 0; i < m.GetLength(0); i++)
public static bool Check(int[] a)
for (int i = 0; i < a.Length; i++)
public static int ColumnSum(int[, ] m, int column)
for (int i = 0; i < m.GetLength(0); i++)
sum = sum + m[column, i];
public static int[] AllColumns(int[, ] m)
int[] columns = new int[m.GetLength(1)];
for (int i = 0; i < m.GetLength(1); i++)
columns[i] = ColumnSum(m, i);
public static bool Check1(int[] a)
for (int i = 0; i < a.Length; i++)
public static int DiagonalSum(int[, ] m, int diagonal)
for (int i = 0; i < m.GetLength(0); i++)
public static int[, ] Alldiagonal(int[, ] m)
int[, ] diagonals = new int[m.GetLength(0), m.GetLength(0)];
for (int i = 0; i < m.GetLength(0); i++)
diagonals[i, i] = DiagonalSum(m, i);
public static bool Check2(int[, ] a)
for (int i = 0; i < a.Length; i++)
public static int DiagonalSum1(int[, ] m, int diagonal)
for (int i = 0; i < m.GetLength(0); i++)
sum = sum + m[i, m.GetLength(1) - i];
public static int[, ] Alldiagonal1(int[, ] m)
int[, ] diagonals = new int[m.GetLength(1), m.GetLength(1)];
for (int i = 0; i < m.GetLength(0); i++)
diagonals[i, m.GetLength(1) - i] = DiagonalSum1(m, i);
public static bool Check3(int[, ] a)
for (int i = 0; i < a.Length; i++)
if (a[i, a.GetLength(1) - i] != x)
public static bool IsMagic(int[, ] m)
if (m.GetLength(0) != m.GetLength(1))
if (Check(rows) == false)
int[] columns = AllColumns(m);
if (Check1(columns) == false)
int[, ] diagonals = Alldiagonal(m);
if (Check2(diagonals) == false)
int[, ] diagonals1 = Alldiagonal1(m);
if (Check3(diagonals1) == false)
if (m.GetLength(0) == m.GetLength(1) && Check(rows) == true && Check1(columns) == true && Check2(diagonals) == true && Check3(diagonals1) == true)