Friday, May 28, 2010

Magic Square in 3 easy steps!

1. Form a Square Matrix writing numbers 1 to nxn in sequence. Here n is the order of the Magic Square, say 5.
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

2. We are trying to identify the final Matrix from the above. Form two matrices, one for identifying the row and another to identify the column.
4 5 1 2 3    3 2 1 5 4
5 1 2 3 4 4 3 2 1 5
1 2 3 4 5 5 4 3 2 1
2 3 4 5 1 1 5 4 3 2
3 4 5 1 2 2 1 5 4 3
You will see the middle column of the first Matrix starts with 1 and are in sequence. Columns on either side can be filled by subtracting and adding 1. The second Matrix is a mirror image.

3. Form the final Matrix by writing the number from initial Matrix in the corresponding row and column. For e.g 4, 3 (Step 2) = 18 (Step 1)
18 22 1 10 14
24 3 7 11 20
5 9 13 17 21
6 15 19 23 2
12 16 25 4 8
The above steps are applicable for any order of the Magic Square!

A Java program to do this:

/*
* Magic Square
*/
int order = 5;
for (int row = 0; row < order; row++) {
for (int col = 0; col < order; col++) {
int rowMatrix = (((order + 1) / 2 + row + col) % order);
int colMatrix = (((order + 1) / 2 + row + order - col - 1) % order) + 1;
System.out.print(((rowMatrix * order) + colMatrix) + "\t")
}
System.out.println();
}

No comments:

Post a Comment

Followers