isMagicMatrix method
Checks if the matrix is a magic square.
Returns true if the matrix is a magic square and false otherwise.
Example:
var matrix = Matrix.magic(3);
print(matrix.isMagic());
// Output: true
Implementation
bool isMagicMatrix() {
if (!isSquareMatrix()) {
return false;
}
int n = rows.length;
// Compute sum of first row
num sum = 0;
for (int i = 0; i < n; i++) {
sum += _data[0][i];
}
// Check rows and columns
for (int i = 0; i < n; i++) {
num rowSum = 0, colSum = 0;
for (int j = 0; j < n; j++) {
rowSum += _data[i][j];
colSum += _data[j][i];
}
if (rowSum != sum || colSum != sum) {
return false;
}
}
// Check main diagonal
num diagSum1 = 0;
for (int i = 0; i < n; i++) {
diagSum1 += _data[i][i];
}
if (diagSum1 != sum) {
return false;
}
// Check other diagonal
num diagSum2 = 0;
for (int i = 0; i < n; i++) {
diagSum2 += _data[i][n - 1 - i];
}
if (diagSum2 != sum) {
return false;
}
// All checks passed
return true;
}