Recreational Math I: Magic Squares: Matters of Primes: Part 7

This article concerns the matter of prime numbers in writing computer programs that generate random magic squares of order n where n is prime. My article, like all the other articles in this series, is aimed at hobbyists.

Suppose you wanted to use the Reichmann (1957) algorithm to generate prime-ordered magic squares of any size n where n ≥ 5. If you asked a user to enter a prime number for the square dimensions, there comes a point where the user won’t exactly know, and shouldn’t be expected to know, if a large number is prime. Could an average person be expected to know, off the top of their head, that 127 is prime, for example? Or what about the number 349,871? Both are prime, but I cheated: I used software. But how does the software do it, since that is what you were trying to write?

We’ll get into the algorithm details in a bit. But the easiest thing to do is to have a detection if a number is not prime. If it isn’t prime, then you can’t use Reichmann’s algorithm, and you then need to ask the user for another (hopefully prime) number that is 5 or more. The user is making at best, quasi-educated guesses. Maybe he knows some powers of 2, and by subtracting 1, he could stumble on a Mersenne prime such as the number 127 mentioned earlier, or 31. Or 7.

Prime numbers are numbers divisible by 1 and itself, and has no other factors. A number like 5 is prime because only 1 and 5 divide it evenly. The same can be said of the number 2, since 1 and 2 are its only factors, making it the only even prime number. Numbers which have more than two factors are called composite numbers. A number like 12 has 1, 2, 3, 4, 6, and 12 as factors, and thus is not prime.

Mersenne primes refer to a special class of primes. They are primes of the general formula 2^p - 1, where the exponent p is also a positive prime number.

A programmer could start with a short list of known primes in an array. Let’s say: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, or the primes from 0 to 100. By the Fundamental Theorem of Arithmetic, a number n is composite if any prime number p \le \lfloor \sqrt{n}\rfloor divides it. The symbols \lfloor,  \rfloor represent the floor function which takes the square root of n and essentially chops off the decimal, returning only the integer part of the number. The array of known primes is thus good up to 100^2 = 10,000.

This is a shortcut, but if the user enters larger numbers than 10,000, you can try numbers beyond the scope of your array. But since the computer program doesn’t know any primes offhand beyond 97, the program could then attempt to check each whole number after 97, sqeuentially up to \lfloor \sqrt{n}\rfloor to see if anything divides n evenly. If none are found, then n is prime.

That’s a whole lot more efficient than checking each integer one by one up to n (or even \lfloor n/2 \rfloor, or half of n with the decimal chopped off) to see what divides n, if anything.

If no upper limit of n is specified to the user, even your more efficient \lfloor \sqrt{n}\rfloor could take hours or days to determine if n is prime, even on a computer considered to be fast. Also, for an n \times n magic square, it would be nice if there were only enough rows and columns to be reasonably displayed on a spreadsheet or console screen. On a spreadsheet, there is always the scrollbar to help you see the numbers that ran off the display. A 101 \times 101 magic square is possible for example, but requires a lot of scrolling to see the 10,201 cells containing the numbers. Today’s computers have lots of memory, so while it is possible to go far beyond even that, there is a matter of practicality. While it might be possible to check the correctness of a 324,773 \times 324,773 magic square programmatically, the 105.5 billion numbers it contains preclude the idea that it can be done on a normal household desktop computer running with 8 gigs of RAM.

Recreational Math I: Magic Squares: the “really good” kind – Part 6

Welcome to part 6, where the magic squares are 7×7. 7 was the number of known planets in medieval times, as well as the number of known elements, and the number of days in the week. The rest is all alchemy.

The algorithm for a 7×7 matrix is the same as for 5×5. In fact, it should work for any odd prime-ordered matrix. Do the first based on a random sequence of the numbers between 1 and 7:


Now, do the second matrix using 0 and every seventh number after it up to 42:


The resulting matrix is magic, but not “hyper-magic” like the 5x5s were:


The matrix above was done using Excel, and checked using VBA, where I checked it for “magic”. The loss of hypermagic is unfortunate, but I suppose inevitable when you scale up. There are (7!)2 = 25,401,660 magic squares possible by this algorithm. The VBA proved handy later when I used dynamic programming to produce any odd-ordered magic square of any size, and investigated the results.

What if I made a mistake and got the shifting wrong, such as shifting from the second number from the left instead of the right? The result is variable; full magic can only be restored if the rightward diagonal is all 4/s:


Why does this work? This is because the sum of the numbers 1 to 7 in any order is 28. Notice that whatever number is in the opposite diagonal is repeated 7 times. There is only one number, when multiplied by 7, equals 28, and that is 4. All other numbers will result in a loss of magic. This appears to be a way to maintain magic in all odd-ordered magic squares past order 7. This can possibly generalize for squares of prime order n by taking the middle number (n+1)/2 and making it the main diagonal.

When added to the second preliminary square, both diagonals became magic, as well as the columns and rows. But because the opposite diagonal consists of all 4’s, we lose variety with this restriction, but not by much: 7!6! = 3,628,800. Still enough to occupy you on a rainy day.

9×9 magic squares won’t work so well, because the second square is shifted by 3, which is a number that divides 9. This will result in certain rows repeating in one of the pre-squares; and the result generally is that one of the diagonals won’t total the magic number (369 in this case).


This is a consequence of 9 not being a prime number. The algorithm that works so well for 5×5 and 7×7 magic squares breaks down when the odd number is composite. Thus, the algorithm is known to work for 11×11, 13×13, 17×17, and has been tried all the way to 101×101 and beyond on my Excel spreadsheet.

The magic number can be known in advance of any magic square because an order-n magic square obeys the formula (n × (n2 + 1))/2. The best bet is to look for odd-ordered n × n squares where n is prime. In my VBA program, I made double sure by sticking to magic squares where the order is prime. Here is an 11 × 11 square, where the magic number is 671:


Finally, to stretch things out to the boldly absurd, what about an order-23 square whose magic number is 6095?

The 23 columns may not all be visible here.

That probably ran into the neighbouring columns, but it’s just for illustration. The code, which I have used to generate magic squares of as high an order as 113 (magic number 721,505) is fewer than 170 lines in VBA for Excel 2007. And yes, even the above square, and the order 113 square are magic.

Recreational Math I: Magic Squares: the “really good” kind – Part 5

I have met with some disappointment as to how a methodology for creating a 4×4 square should pan out, and instead I have come up with many different algorithms, each resulting in its own small sets of magic squares, but had stumbled upon a set of squares with similar “hyper-magical” properties which I called the Durer Series.

I had met with some disappointment at this, and am still in the middle of writing my own 4×4 square program in Visual Basic .NET (it’s going to use a “brute force” algorithm … sorry!). With that, I had to learn about how .NET does objects. To those of you out of the loop on the recent .NET versions of VB, this language actually allows you to create your own novel objects, thus saving processing time if the right kind of objects are created. It’s a work in progress.

For now, I wanted to centre on the pièce de résistance of this series: that of the odd prime-ordered magic squares, those of order 5 and beyond. As I hinted at the beginning of this series, these are special and unique in that an algorithm can be made for an order-n magic square (where n is an odd prime greater than or equal to 5) which can generate (n!)2 squares, all magic (even after weeding out duplicates, the numbers of unique squares will still be in the thousands).

This seems to be a hard-to-find algorithm, except from a book called “The Fascination of Numbers”, written on the year of The Queen’s coronation in 1957 by W. J. Reichmann while he was still a headmaster at a Grammar School located in Spalding, Lincolnshire, England (according to my signed copy of the book, purchased from an English vendor through Amazon used books). I read it for the first time at a university library, and it is likely to be found in a similar univeristy or college collection near you.

What I like about this algorithm is that while I have used it to write computer programs for magic squares, it really requires no more than pencil and paper, and a bit of skill at addition.

First of all, write down the numbers from 1 to 5, in any order at all:

3, 2, 1, 5, 4

A 5×5 square matrix is constructed in a pattern by starting from the fourth number in the sequence, then proceeding with the 5th number, then the first, second and finally the third:

4 2 1 5 3
5 3 4 2 1
2 1 5 3 4
3 4 2 1 5
1 5 3 4 2

Next, scramble the first 5 multiples of 5 (counting 0):

20, 0, 5, 15, 10

Create a 5×5 matrix by shifting the order of these numbers by 2 to the left as follows:

20  0  5 15 10
 5 15 10 20  0
10 20  0  5 15
 0  5 15 10 20
15 10 20  0  5

Now add them together, adding together numbers located in the same columns and rows in both squares, as in matrix addition:


The result is a magic square which has many more ways of obtaining  the magic number 65 than just adding the rows, columns, and diagonals. Taking any 3×3 sub-square on the corners or left/right sides of this square and adding its corner numbers to the middle number will obtain 65. This seems to be true of all magic squares made by this method. Since both squares can be scrambled independently, there will be (5!)2 = 14,400 possible squares before duplicates are weeded out. I have written programs in many languages regarding this 5×5 square, and can attest to the robustness of this algorithm in producing a nearly endless series of 5×5 magic squares, all sharing very similar “magical” properties.

Reichmann also reminds us that the scrambled 5×5 squares we created initially are also magic.

I suspect there may be more than 14,400 magic squares. Are there any squares that cannot be produced by this algorithm? This must be checked against a “brute-force” (read: computational) method for generating all possible magic squares to see if this is really the definitive number. It is certainly a couple of orders of magnitude greater than what Danny Dawson did with his 4×4 squares (around 920 squares or so, with some duplicates). It would also be interesting to know what squares could not have originiated from Reichmann’s algorithm (proven by working backwards to show, supposedly, that duplicate numbers appear in some rows of the first or second matrix, which disappears in the resultant matrix.

It also seems that 4×4 and 5×5 squares can have such “compound” magical properties; it is harder to find for 7×7 matrices, although they are additive to the magic number in just enough ways so as to say they are magic. We’ll leave that for the next journal entry.

Recreational Math I: Magic Squares: the “really good” kind – Part 4

How to Make a Random Square

I have noticed that it has been difficult to elucidate a method for systematically creating even-ordered magic squares of any but the most basic kind. I don’t know why this is, since the art has been alive in Europe for at least 600 years, and probably longer in other cultures. There are a few methodologies out there, but they are perfunctory. Such as, this method offered by Reichmann (1957), which tells us little more than to write the numbers down from 1 to 16 and reverse the order of the diagonals:

 1  2  3  4        16  2  3 13
 5  6  7  8  ====>  5 11 10  8
 9 10 11 12         9  6  7 12
13 14 15 16         4 14 15  1

Well, only a limited number of magic squares are possible that way. You can reverse the order of the numbers, or write the numbers in order down the columns instead of the rows, followed by a similar reversal of the diagonals (these would not be considered to be unique solutions, since these methods amount to mirroring or rotating the square).

After some playing around with known 4×4 magic squares (thanks to the thorough resource offered here), and using some simple rules, I think I may have come upon a method on my own. I would suppose that it could not generate all magic squares possible, but I don’t intend to offer a complete solution. I estimate that I would be able to generate maybe another 10 or so magic squares with this method. The intent here is to allow the reader to create a 4×4 magic square sitting down at a table with little more than pencil and paper. I am sure this methodology is published elsewhere, but I wasn’t able to come up with anything.

I just have a few simple rules in coming up with the method. First of all, all of the 16 numbers are the result of a sum of two smaller numbers a and b, where a is a number from 1 to 4 such that a = {1, 2, 3, 4}, and b is a multiple of 4: b = {0, 4, 8, 12}. All 16 unique numbers generated will be the result of adding a number from set a to a number in set b.

The numbers 1, 2, 3 and 4 are the result of adding set a to 0 in set b.

The numbers 5, 6, 7, 8 come from adding set a to 4 in set b.

The numbers 9, 10, 11, 12 come from adding set a to 8 in set b.

And the numbers 13, 14, 15, 16 come from adding set a to 12 in set b.

My solution is inspired by Reichmann’s (1957) work on odd-ordered matrices. This solution on even-ordered matrices is quite different than for odd-ordered matrices, but the idea of adding two matrices and getting a magic square appealed to me, so I went with that basic idea.

The first matrix uses numbers from set a, in the following pattern:

4  3  2  1
1  2  3  4
1  2  3  4
4  3  2  1

These numbers may be randomized, but I’ll just stick to numeric order for now. The second matrix is composed of the numbers of set b arranged in a pattern reminiscent of the Durer square:

12  0  0 12
 4  8  8  4
 8  4  4  8
 0 12 12  0

The sum of the two matrices has all the magic of the Durer square, and consist of the unique numbers 1 to 16:

16  3  2 13
 5 10 11  8
 9  6  7 12
 4 15 14  1

In fact, it is the Durer square itself. Now that we know it works, what about mixing things up? Take note of the patterns. Let the first matrix represent numbers {a, b, c, and d} belonging to set a; and {e, f, g, and h} belonging to set b. whatever randomization is chosen, the numbers must fit the following scheme:

a  b  c  d      e  h  h  e
d  c  b  a      f  g  g  f
d  c  b  a   +  g  f  f  g
a  b  c  d      h  e  e  h

a, b, c, and d may be any permutation of the numbers 1 to 4, without apparent limitation. The second and third rows on teh first matrix are the reversals of the first and fourth. The second matrix, however is much more restricted. Considering e and f to be one pair; g and h to be another pair: 12 can only be paired on the same row with 0; and 4 only be paired with 8. Otherwise, no joy.

So, on with a randomized square: let a = {3, 1, 4, 2} and b = {8, 0, 12, 4}

3  1  4  2     8  4  4  8     11  5  8 10
2  4  1  3     0 12 12  0      2 16 13  3
2  4  1  3  + 12  0  0 12  =  14  4  1 15
3  1  4  2     4  8  8  4      7  9 12  6

What about a = {2, 4, 1, 3}, and b = {4, 12, 0, 8}

2  4  1  3      8  4  4  8     10  8  5 11
3  1  4  2     12  0  0 12     15  1  4 14
3  1  4  2  +   0 12 12  0  =   3 13 16  2
2  4  1  3      4  8  8  4      6 12  9  7

You may also treat sets a and b oppositely, while randomizing. This time the restriction is on matrix a — 4 pairs with 1, and 2 pairs with 3:

3  2  2  3     8 12  0  4     11 14  2  7
4  1  1  4     4  0 12  8      8  1 13 12
1  4  4  1  +  4  0 12  8  =   5  4 16  9
2  3  3  2     8 12  0  4     10 15  3  6

The reason I say these squares are limited to about 10 or so, is because as you can see, the individual rows or columns end up being about the same — at best, a shuffling or reversal the same rows found in the Durer square. There are at best 24 such squares, not subtracting tilted (squares the same when laid on its side) or reflected squares (where the squares are mirror images of each other). All that might be said, is that we may have discovered all the ways a magic square may be constructed with the same “hyper-magic” as the Durer square, which may be a pretty cool thing to say actually. It’s just that my goal was more ambitious at the start. I will refer to the set of 4×4 hypermagic squares built on the same rules as “the Durer series.”

Any known magic square, however, is the result of a unique combination of the basic squares built on sets a and b. Respectively, I will call the matrices A and B.  This allows us to work backwards from a 4×4 square we know is magic, and discern any patterns. The above squares were done that way. What patterns can be observed for the following square, which this website offers as #379 out of 900 or so others?

                Matrix "A"      Matrix "B"
13 12  6  3     1  4  2  3     12  8  4  0
10  5 11  8     2  1  3  4      8  4  8  4
 7 16  2  9  =  3  4  2  1  +   4 12  0  8
 4  1 15 14     4  1  3  2      0  0 12 12

One may discern a pattern here, but it is not all that obvious, especially for the square built on set b. It doesn’t seem to resolve itself into simple rules and patterns the way the Durer series of squares did. Also, you might have noticed that this square is not quite as “magic” as the Durer series, though all rows, columns, and both diagonals give you 34.

But I do notice that in matrix A the last column is a reversal of pairs of the first column. Also, the third column is built on the middle numbers of the first column, and the second column are built on the middle numbers of the last column.

What of Matrix B? The first and last columns are reversals (of all 4 numbers, not of pairs), the second and third both start with the middle two numbers, then first, then last from their adjacent end columns: “e f g h” becomes: “f g e h”.

When I tried to build on these rules, I got duplicate numbers in my squares (and with that, some missing numbers). It would appear that the observable number patterns in such squares are limited to getting you maybe 4 to 8 unique squares, then you have to make a new set of rules each time. With over 900 squares discovered (give or take a duplicate or two), that’s a lot of rules. The total number of 4×4 squares, both magic and not, are equal to 16! = 21 trillion possible squares. Finding all possible magic squares, weeding out any duplicates, reflections, and sideways duplicates would seem a tad non-trivial. Even at the website I referred to for these squares, it has been shown that the number “924” claimed as the number of possible 4×4 magic squares, might be too high, due to some duplicates found. Their scripts took just under 25 seconds to generate and check these squares — but just to check them for magic, less so for duplication, which sounds like it would take more computer time.

Recreational Math I: Magic Squares: the “really good” kind – Part 3

Notice that to show the rules for making these kind of magic squares, I used only odd-ordered square matrices as examples. What about matrices of even numbers of rows and columns? The rules for these vary.

This is a small part of a 1514 engraving by Albrecht Durer, called Melancholia. The author of the article that houses this graphic asserts that there are 32 possible 4×4 magic squares with the famous pun “1514” in the same position as above. This magic square has a symmetry in the numbers, as explained below.

The famous Durer magic square, with the year of the engraving cleverly made a part of a magic square, has a certain organization in its construction, as well as a certain symmetry. The numbers are constructed, in sequence:

_   3   2   _        _   3   2   _
_   _   _   _        5   _   _   8
_   _   _   _  ====> _   6   7   _
4   _   _   1        4   _   _   1         

_   3   2   _       16   3   2  13
5  10  11   8        5  10  11   8
9   6   7  12  ====> 9   6   7  12
4   _   _   1        4  15  14   1

So, you start from the bottom right and proceed in a horseshoe to the top then the bottom left. The next diagram places the numbers 5-8 in a pattern that is left-to-right u-shape. Then the same u-shape for the numbers 9-12 from left to right, except this time it’s upside-down. Finally ending as we started, the same horseshoe shape (except right side up) from right to left.

Durer’s square has many things about it, apart from its magic number (34) which works on all the attendant diagonals, rows and columns. The middle 4 squares add up to 34 (10 + 11 + 6 + 7 = 34); the four corners add to 34 (16 + 13 + 4 + 1 = 34), and all corner foursomes add to 34: (16 + 3 + 5 + 10); (2 + 13 + 11 + 8); (9 + 6 + 4 + 15); and (7 + 12 + 14 + 1).

The numbers at the ends of the two middle rows add to 34:

16   3   2  13
 5  10  11   8
 9   6   7  12
 4  15  14   1

and the numbers at the tops and bottoms of the two middle columns add to 34:

16   3   2  13
 5  10  11   8
 9   6   7  12
 4  15  14   1

If we take another symmetrical combination: a rightward-slanting rectangle whose corners are 2, 8, 9, and 15, these also add to 34:

16   3   2  13
 5  10  11   8
 9   6   7  12
 4  15  14   1

The leftward-slanting rectangle, whose corners are 5, 3, 12, and 14 also add to 34:

16   3   2  13
 5  10  11   8
 9   6   7  12
 4  15  14   1

Starting from 2 and proceeding in an “L”-shape to the left to the number 5, and continuing counter-clockwise in the same manner gets us the corners of a tilted square whose numbers 2, 5, 15, and 12, add to 34:

16   3   2  13
 5  10  11   8
 9   6   7  12
 4  15  14   1

Starting from “3” and doing likewise yields the numbers 3, 9, 14, and 8, also adding to 34:

16   3   2  13
 5  10  11   8
 9   6   7  12
 4  15  14   1

And what about this talk about “symmetry”? By this, we mean that we may take pairs of numbers at the start and end of any row, and they add up to the same number in a symmetrical place elsewhere. 16 + 3 = 4 + 15, taking the top and bottom of the first and second column. Likewise can be done for the last two columns: 2 + 13 = 14 + 1. The middle two rows have the same property: 5 + 10 = 9 + 6; and 11 + 8 = 7 + 12. On a larger scale, the sums of the middle two rows of columns 1 and 2 are the same as the tops and bottoms of columns 3 and 4: 11 + 8 = 7 + 12 = 16 + 3 = 4 + 15. Likewise, the sums of the middle two rows of columns 3 and 4 are the same as the tops and bottoms of columns 1 and 2: 2 + 13 = 14 + 1 = 5 + 10 = 9 + 6. These two groups of symmetrical numbers are illustrated below in red and green:

16   3   2  13
 5  10  11   8
 9   6   7  12
 4  15  14   1

The sums of 15 (green) and 18 (red) across each row form this pattern

16   3   2  13
 5  10  11   8
 9   6   7  12
 4  15  14   1

The downward symmetry is also interesting. Here, the sum of 25 is in gold and the sum of 9 is in blue. In the process, we can discern the patterns that we used to construct the square in the first place:

16   3   2  13
 5  10  11   8
 9   6   7  12
 4  15  14   1

This is an incredible amount of magic, but if you follow the order of filling (horseshoes are right-to-left, u-shapes are left-to-right, along with the peculiar pattern of filling u’s and horseshoes), there really are four possible patterns that have these “hyper-magic” qualities, but you lose the “1514” idea in two of them:

 8  11  10   5      12   7   6   9       4  15  14   1
13   2   3  16       1  14  15   4      12   6   7   9
 1  14  15   4      13   2   3  16       5  11  10   8
12   7   6   9       8  11  10   5      16   3   2  13

Of course, you could reverse all of the numbers in the rows of the first two squares to get your “1514” back.

Every time I look at that darned Durer square, I keep seeing more patterns. I think there comes a point where one has to leave the remaining observations up to the reader.

There is yet another 4×4 square, and with it we can increase the magic, if that can even be conceivable after all I have said. But there is a square with even more magic than the Durer square. R. J. Reichmann mentioned it in his book “The Fascination of Numbers”, first published in 1957. The square could be constructed like this:

-  -  3  -        -  -  3  6        - 10  3  6        15 10  3  6
4  -  -  - ====>  4  5  -  - ====>  4  5  -  9  ====>  4  5 16  9
-  -  2  -        -  -  2  7        - 11  2  7        14 11  2  7
1  -  -  -        1  8  -  -        1  8  - 12         1  8 13 12

This square has all the magic of the Durer square and then some. One thing this new square has over the Durer square is that any four numbers in square formation will add to 34, from anywhere in the square. These include the foursomes:

10  3     16   9     11   2       4   5
5  16      2   7      8  13      14  11

Recreational Math I: Magic Squares: the “really good” kind – Part 2

Last time I introduced the idea of magic squares. I promised I would show you how to make one. In this post, I will begin by discussing “trivial” squares, or squares made by simple rules of following diagonals and wrapping.

When I say a square is “magic”, I mean that all rows, columns, and diagonals add up to the same number. While other sources, such as Wolfram’s Mathematica, say that only the main diagonal of the matrix need be magic, I will take the more strict requirement that both leftward and rightward diagonals have to be magic.

There are trivial magic squares that begins by following a rule where you start with “1” in the top middle square, then move up and to the right one square, and place a “2” there.

_  1  _
_  _  _
_  _  _

But you may have noticed that if you start at the top, how can you move “up and to the right”? You get around this by “wrapping” to the bottom, treating the bottom of the rightward column as though it is above.

_  1  _
_  _  _
_  _  2

OK, you say, but now there’s no “right” after the last column. Now what? Now you can wrap so that the leftmost column is treated as “right of” the rightmost column:

_  1  _
3  _  _
_  _  2

Now another problem: up and to the right of “3”, there is a “1” in the way. If this happens, you are allowed to place the fourth number below the “3”:

_  1  _
3  _  _
4  _  2

Now, following these rules and exceptions, we can keep going:

8  1  6
3  5  7
4  9  2

The result is a magic square whose rows, columns and diagonals add up to 15.

I found that if I moved the 1 elsewhere and followed these rules in the same manner, some or all of the “magic” is lost. There seems to be only one magic square that can be made using these rules, at least one that adds up to 15 in all of its rows, columns and diagonals. The following 3×3 magic squares were the closest I could come to any credible “magic” by placing the “1” in a different position:

6  8  1                4  9  2
7  3  5 and similarly: 8  1  6
2  4  9                3  5  7

But notice in both cases, neither of the diagonals add up to 15. In the next post, I will discuss a way to break this limitation, making it possible to construct up to 36 3×3 magic squares.

Meanwhile, let’s expand the idea to 5×5, using the same, identical rules. This one seems easier in a way, since there aren’t as many blockages early on:

17  24   1   8  15
23   5   7  14  16
 4   6  13  20  22
10  12  19  21   3
11  18  25   2   9

I particularly like 5×5 squares. But my experience with placing the “1” elsewhere than the exact middle position of the top row has resulted in a loss of “magic”. However, I was lucky on my first attempt with moving the “1” around. The following magic square has a “Mathematica” level of magic:

11  18  25   2   9
17  24   1   8  15
23   5   7  14  16
 4   6  13  20  22
10  12  19  21   3

Later in this series, we can break this limitation, too. But next, we shall discuss some 4×4 magic squares, including one that made history.

Java and Math: Coding for Graphics


In my computer class, a rotation of a graphic of Sonic the Hedgehog was attempted. The graphic was in a jpg format, and the method chosen was to write code in Java which read the graphic into a BufferedImage object. The idea is to copy the graphic into another BufferedImage object, reversing the order of pixel reading to obtain what amounts to a rotation in the new object. The image object is then written to a new JPG file. After the run, the new file is inspected.

This article is a bare-bones know-nothing introduction to how to think of reading and writing graphics that avoid the implementation details as much as possible. Documentation on the details of BufferedImage are plentiful on the internet, as well as information on computer graphics generally.

In a learning activity, students in grades 10 and 11 were asked to modify the statements:

int w2 = x;
int h2 = y;

such that (w2, h2) becomes the new placement for the pixel (x, y) when the graphic is rotated. Students were instructed not to modify any other part of the program, which performed object declarations, file opening and closing, try/catch statements and other concepts considered too advanced for this stage of their course. Students were encouraged to use trial-and error and view the consequences of various general formulas they were to try out. width and height were already declared and given values in the code.

The tutorial below was given to the students.

The graphic in question
In general terms, for any graphic of dimensions a\times b, x can have any value in the domain of 0 to a-1, while y can have values in the range of 0 to b-1.

Graphics are made of little units of colour information which end up on your computer screen as pixels. Think of each unit of information as belonging to a part of that graphic on a Cartesian coordinate plane. Much like the coordinate plane you learn about in grade 9 and 10, x and y represent the position of the pixel horizontally and vertically.

If the graphic is 100 units across by 200 units in the vertical direction, then the graphic is said to have dimensions 100\times 200, in terms of pixels. This means all pixels in a graphic will have some location (x, y). Because x has to start from 0, it can take on values between 0 to 99 for this graphic, while y can take on values between 0 and 199.

In our code, that means that the dimensions of the graphic is heightxwidth, and while x and y are fine (for the original graphic), a formula must be applied so that h2 and w2 (the x and y values for the rotated graphic) become appropriate for a rotation. With the statements written as they are, all you will get are two copies of the same graphic.

It is expected that the formula should be simple, but beware of values going beyond the range of the graphic dimensions. That will result in a crash. The dimensions of the graphic are given as heightxwidth, and it shouldn’t matter all that much what their real values are, you might want to insert printf statements where you can trace h2 and w2 against the values of height and width to see what is going on.

It is also noteworthy that you can only carry the Cartesian plane analogy so far. (0, 0) represents the pixel in the top left corner of the graphic, while for a graphic of dimensions hxw, the coordinate (w-1, h-1) will represent the pixel on the bottom right. The first difference is that no negative values are possible. The second difference is that the y-axis is upside-down, because it increases downward. The x-axis is still fine, however, increasing from left to right as usual.

Recreational Math I: Magic Squares: the “really good” kind


ONE OF THE few things you see on the web these days is how to do a really good magic square. There are many websites that tell you about how spiralling arrangements of sequential numbers on a square matrix is magic, but for me, that’s dull. You are limited to doing seemingly less than a dozen such magic squares, so I don’t find them too interesting.

Recall that magic squares are numbers arranged in a square matrix such that each of its rows and columns, and normally both diagonals add up to the same number. Usually, a square of n numbers to a side which has numbers total, will be populated with the entire set of numbers from 1 to n inclusive, in some quasi-random order. These numbers would be arranged in such a manner that the total of each of its rows, columns, and both diagonals equal the same “magic number”, which is different depending on the dimensions of the square. By using random methods suggested in this article, the number of magic squares possible, when n is odd, is equal to (n!)2.

For the 5×5 square, you apparently have to start by moving from the current position to the “top right” square (wrapping to the opposite edge if necessary), and if that square is occupied, move down by 1 square. This non-random, deterministic method apparently works for all squares greater than 5×5 (with odd dimensions).

I read from an old book on recreational math (The Fascination of Numbers, by W. J. Reichmann (1958)), that

  1. Squares of even dimensions (4×4, 6×6) have to be arranged by a different algorithm than squares of odd prime dimension (5×5, 7×7, 11×11, …).
  2. A randomly-generated 5×5 magic square can be made which uses the sum of two matrices.

The number of possible permutations of 5×5 matrices is equal to (5!)2.

Reichmann’s book was the only place where I could find such an algorithm. This seems to be a rare algorithm, even on an internet search. But it is the only method that leads to “magic” results in a variety of ways. These squares seem to be the most robust in terms of the number of ways their “magic” qualities can be determined. They have inspired my writing computer programs that generate such squares as a way of practicing programming several years ago. I have written magic square programs following Reichmann’s algorithm (not sure if he originated it) in VB5, Visual Basic .NET, VB for applications (in Excel), and in Microsoft Quick Basic 4.5. The 16-bit QB 4.5 version does not run on my 64-bit machine, and for similar reasons, neither does the VB5 version, whose runtime DLL is no longer supported by later versions of MS Windows.

In the next instalments, starting this coming Saturday, I will begin to discuss the making of 3×3 and 5×5 squares, and discuss their magic properties.

Another Look at ‘Politics and the English Language’

I had only read the novel 1984, but the tome that really influenced me more was George Orwell’s prior short essay written in 1945 entitled Politics and the English Language. You can google a PDF for yourself quite easily, or you can purchase one of many college-level readers used in composition courses which will contain the essay, probably with better formatting. My understanding is that it is not being used as often these days in courses on prose style or rhetoric.

The impression it had left on me in my early 20s was quite profound, and has influenced my writing to this day. Orwell’s message in this essay was quite simple: that one’s written expression should be free of tired, overused phrases that do the thinking for us. Such phrases and words to a large extent cloud our meaning. As a result, we fail to make our point effectively, or at all. His aim was to get us to express ourselves authentically, in everyday English, free of tired jargon, deadwood phrases, and other forms of unnecessary pretense that end up generating more smoke than light in terms of our self-expression. And, of course he encourages us to break any of his rules lest our use of language has to become even more awkward in the following of said rules.

The 1940s was a time of high-minded-sounding rhetoric. The Nazis were just defeated and fresh in everyone’s mind; Stalin was still the dictator of the USSR, and England and the rest of Europe were rebuilding and repairing themselves from the damages of World War II. Surely, political rhetoric, slogans, and catch phrases were not in short supply in Orwell’s day. Germany nearly invented propaganda; while England and America were quickly adopting their own brands of propaganda during and after the war. Noam Chomsky points out much later that propaganda has been felt to be necessary by the elites in power to generate “necessary illusions” and “emotionally potent oversimplifications”, so that consent of citizens to any new government policy can be manufactured on demand (hence the phrase Manufacturing Consent, also the title of one of Chomsky’s books, co-authored with Edward Herman).

Such was the influence of George Orwell that by 1992, Edward Herman wrote a book called Beyond Hypocrisy, which featured an extensive glossary which he called the Doublespeak Dictionary. So, to update Orwell’s laundry list of tired political phrases, here is a more recent sample of political phrases used to the point of losing their original meaning, cited by Herman: Antisemitism, Benign Neglect, Communism, Environmental Terrorists, Freedom Fighter, National Interest, Special Interest, and so on.

Orwell would agree with Vaclav Havel, who was quoted as saying: “Ideology is a specious way of relating to the world. It offers human beings the illusion of an identity, of dignity, and of morality, while making it easier for them to part with them.” This is because to facilitate the illusion of dignity and morality, you need language. Rather than using language as a means of authentically expressing one’s self, it is now used as a means of mind control. But mind control is a kind of double-edged sword in the sense that, while you give yourself identity, dignity, and a sense of morality and purpose, one can also blind one’s self to transgressions committed in its name. The reason is because the same language can be used in a way that sterilizes one against feelings of guilt when committing transgressions against others, particularly the perceived enemies of their cause.

Of course, the current decade has some of the greatest howlers of tortured English that I think we have seen yet: “speaking my truth”, “cancel culture”, “problematize”, “heteronormativity”, “womxn”, “latinx”, “intersectionality”, “privelege”, “shaming”, and of course, the big 4-letter word: “woke”. That is far from a complete list. I could continue: “lived experience”, “othering”, “platform”, “content provider”, “punching down”, “queering”, “spaces”, “they/them” as a singular pronoun, and “voices”.

All of them are just phrases that become overused as time goes on as ways of hiding and blurring clarity more than making meaning more clear. Phrases like “cancel culture” have been overused by members of all political stripes to the point where all life and meaning have been eviscerated from it. “Speaking my truth” is made more subjective by calling it “my truth”, and thus weakens and trivializes the word “truth”.

I particlularly find the recently-coined phrase “content provider” offensive. I am a writer of essays for this web-based journal. What writer feels any sense of dignity in calling themselves a “content provider”? It describes absolutely nothing about exactly what “content” is being “provided”. “Content” could refer to music, essays, news articles, videos, conspiracy theories, online stores or online pornography. There is nothing about the phrase “content provider” that distinguishes my writing from, say, E-Bay, YouTube or InfoWars.

Much of the rest of these phrases and words appear to be designed, not necessarily to make the world more open minded, but instead to further isolate the users of these very phrases from mainstream society, thereby defeating their own object and making further discussions into nothing more than an echo chamber where the message never properly gets outside of the closed circle of “woke” people. The stilted words appear designed to provide a barrier to entry for everyone else (since most people don’t know what “woke” people are talking about), which has the function of actively preventing their ideas from becoming mainstream. Language, which usually facilitates delivering a message, is now being used to prevent any hope of widespread adoption of ideas or actions in support of oppressed groups.

In nearly all cases, there is more than likely a word or phrase in everyday English that could convey one’s thoughts more clearly. And that has been my guiding principle throughout university. To free one’s self of all of these catch phrases is to make your thoughts your own, shorn of all pretense.

I wish to proceed with some criticisms as to why not everyone thinks as highly as I do about Orwell’s essay. To get a sense of the criticism, I will repeat Orwell’s six rules here:

  1. Never use a metaphor, simile or other figure of speech which you are used to seeing in print.
  2. Never use a long word where a short one will do.
  3. If it is possible to cut a word out, always cut it out.
  4. Never use the passive where you can use the active.
  5. Never use a foreign phrase, a scientific word or a jargon word if you can think of an everyday English equivalent.
  6. Break any of these rules sooner than say anything barbarous.

It is one of the most simple style guides around. It is a style guide for the modern times. But even with rule 6 in place, the rules are still considered rigid by many writers. I am sure to have broken rules 1 to 5 somewhere in this essay; and Orwell himself admits to breaking these rules in his Politics and the English Language. I think of this set of rules as an ideal, while knowing that I am likely to be accused, as other writers would be, of overusing rule 6. Yes, I break these rules, but if I stop myself, I would need to ask if I am about to say anything ridiculous by applying rules 1-5? Maybe, but probably not.

Rule 4 is controversial, since, while using active voice makes a passage more readable, it makes the person in the sentence the subject of it. “I went to the movies” makes me the subject (active voice), while “The movie was attended by me” makes the movie the subject instead (passive voice). The latter sounds pretty bad, and Orwell would have something like this in mind when he made that rule. The idea of an inanimate “thing” being the subject of a sentence might not sound right unless you really want to discuss that “thing”, and you really want to treat the person as incidental. This is the ideal for scientific writing, where there is an effort to discuss what is observed; no one is interested in the observer. Then there is rule 5: of course where the specific topic is within a specific scientific field, it is difficult to avoid scientific terminology that might sound strange to a lay person.

Others have their hair on fire because if you reduce English to a basic subset of basic words as Orwell suggests, then what hegemony does that play to, they would ask? I am not sure I follow this line of reasoning. From reading, Orwell was aiming at clarity throughout his essay. The entire point was not to silence people, but to enable them to discover their true voice, free of carelessly predigested words and phrases that all of us are prone to use from time to time. You can only become active against the current hegemony if you know what injustices you are fighting against, and can communicate this clearly to others, so that others may engage in the conversation more holistically. It prevents this kind of stuff:

Bottom line, what it will ultimately require to end all the tragedies we see unfolding around us is a round-up of the Luciferian “elites” – and their minions in government positions and all areas of private life – those who aspired to and who have engineered and are now peddling as fast as they can to accomplish the decline and fall of the United States of America – and other countries. In short, the “New World Order” crowd.

Patricia Robinett, Thought Crime Radio web log, June 2, 2022

This quote is from a far right-wing web log. The topic the author was writing about was the recent Uvalde, Texas school shooting at Robb Elementary School. Who does the author have in mind as the enemy here? The word “elites” is in quotation marks, so while these “elites” appear to have have connections to people in government, they also have connections to people in “all areas of private life”. So they could mean anybody. The author never offers proof of the existence of these “Luceferian elites”, nor proof of the existence of their “minions” which apparently can be seen everywhere. The “New World Order crowd”, whoever that is, is not helpful in clarifying who is being referred to, or how their identification has anything to do with getting government to support the gun lobby, which I think is the point of the article (protecting children from crazed gun-toting people is mentioned in passing, however). Clarity is an endangered species in this example. It didn’t help that Breitbart was cited as the source of their information.

Another criticism is that Orwell appears to reduce Fascism to problems of English usage. It kind of looks that way, and it sounds excessively reductionist on the part of Orwell, but consider that fascism with its attendant use of propaganda is nothing without mind control, and the only way into the minds of the masses is through a constant drum beat of language, images, and video. Using simple words is something anyone can do, and a deliberate application of Orwell’s rules disrupts one of the most important avenues that propagandists keep having access to. Orwell reminds us that propagandists only have access to our mind through language because we have chosen to allow it. Clearing our minds of jargon is important to knowing our own thoughts and in making them known to others. It is also an important part of intellectual self-defense against the deluge of propaganda we are all immersed in in our culture.

Recreational Math I: 4×4 squares: Some sequences work better than others

I was experimenting with Danny Dawson’s 4×4 magic square script, and began to consider writing my own script. But I just thought I would do a few runs for my own research. I wanted to thank Mr. Dawson for his fine work which I am obviously gaining knowledge from, but his comments page thought I was a spam bot, and rejected my comments. Oh well ….

The central topic of discussion here centers on building an algorithm for a computer program that can search for and find all or most squares, centering on initial construction. But the discussion on pairings work for magic squares generally.

Some number pairings work better on the 4×4 square than others. What I mean by number pairings are two sequential numbers being placed next to each other along a column or row of the magic square. Dawson’s script allows me to place any numbers on the magic square, and it would output all of the magic squares that fit the arrangement of numbers I suggested by filling in the rest. I only worked with two numbers, and it would suggest to me complete squares which work with that placement of a pair of numbers. Some number pairs resulted in more than one magic square, while other pairs gave no squares.

It would tell me that in a computer algorithm for such squares, if an “unsuccessful” pair of numbers show up next to each other in a magic square made by a brute force algorithm such as Dawson’s, the smart thing to do is to detect this situation and abandon the square’s construction, thus saving computer procesing time, an amount of time Dawson attested to as being potentially long, on the order of hours at best, to decades at worst.

My research was far from thorough, but I think I took into account most situations where the pairings would show up, barring left-right reflections, rotations, or up-down reflections of the same square.  It is possible I may have missed some, due to clues that seemed to be left behind by some of the successful combinations. And I only considered pairings of sequential numbers, not just any pairings of numbers, of which there are (16 × 15)/2 = 120 combinations.

First, the combinations of sequential numbers that were NOT successful: “3  4”, “7  8”, “9  10”, “11  12” and “13  14”. Finding these pairs next to each other resulted in nothing output in all of the ways they might show up that I’ve tried. This is likely not the true situation, since when I tried “5  6”, only one unique square was found (and no others); while an attempt to try the famous Durer pun “1514” on two adjacent squares resulted in nothing until I moved the “15  14” to the centre columns of the top row. No other unique solutions were found for the Durer pun. None at all.

If a programmer were serious to find such “rare” solutions, then he or she would not consider ignoring these sequential pairs. On the other hand, if missing a half dozen or so squares is not important, then one is wise to look for these sequences in a row or column and abandon all such squares to save time, rather than making a square that is destined to fail.

In fact, it would be worth considering to check for these pairings before checking for “magic”, although both the pairings and magic can be done on-the-fly, during construction as a way of bailing out early and moving on.

All other successful pairings:

  • 1 2, and 2 3 both gave generous numbers of squares
  • 4 5: gave patterns reminiscent of the Durer square
  • 5 6: only 1 square was found in my trials
  • 6 7, 8 9, 10 11, 12 13: all gave generous numbers of squares
  • 14 15: only worked if these numbers appeared in the middle columns of the top row (means that the bottom row and both left and right sides should work also; in addition, the “15 14” combination should work in the same way) (11 solutions)
  • 15 16: Gave a few solutions, but only in the first and second cells of the first row, as far as I can tell.

Obviously, the five “failed” pairings given above are not the whole picture. Of the 120 possible pairs of numbers between 1 and 16 that can exist, there are obviously more pairs that would result in no square being formed, thus saving more time.