There is a simple method for constructing a magic square for any odd value of n:
Make a blank n by n grid. We need to populate it with the integers from 1 to n2.
Set i to 1.
Set the current grid position to the location in the middle of the top row.
Insert the number i into the current grid position.
If i is equal to n2, we're done.
If i is a multiple of n, move the current grid position down one (i.e., in the direction of "south" on a map). Otherwise, move the current grid position diagonally up and right (i.e., in a "northeast" direction on a map), wrapping to the first column or last row if the move leads outside the grid.
Increment i by 1.
Return to step 4.
In this assignment, you will create a class of MagicSquare objects, and print out magic squares with sides 1, 3, 5, 7, 9, 11, and 13.
The class MagicSquare should have two properties:
sideLength, an integer representing how many numbers are in each row and column of the magic square.
grid, a two-dimensional list of size sideLength by sideLength representing the contents of the magic square.
The class MagicSquare should have two methods:
__init__(), which takes as an argument an integer side representing the value for the new object's sideLength. __init__ should create the two-dimensional list grid and initially populate it with zeroes. __init__ should then use the algorithm described above to replace the zeroes in grid with the integers from 1 to sides2.
display(), which prints out a MagicSquare object. It should print out each number in a field of size 5, right-justified, similar to the example above. It should also print a blank line after the magic square.
Create a main program that uses a loop to print the seven magic squares listed above, each preceded by the title, "Magic Square of size ", followed by the corresponding value for side. Leave a blank line between the title and the magic square. See the example above.