shwedka, статью, присланную вами, я сразу просмотрела и преобразование это видела. Вот оно:
Transform 1.1
1. Interchange columns so that the order of the integers in the right half of each
row is reversed, ie interchange columns n/2+j and n-1-j , for all j < n/4.
2. Interchange rows so that the order of the integers in the bottom half of each
column is reversed, ie interchange rows n/2+i and n-1-i , for all i < n/4.
3. Move every integer from its position (i, j) to the position (i + jn/2, j + (i +
j)n/2) for all i × j, where all position coordinates are taken modulo n.
Но меня смутило отсутствие здесь вот этого обозначения преобразования:
где
k=n/2.
Я подумала, что это какое-то другое преобразование, и не стала особо вникать в него, оставив это дело на потом.
Имеет ли приведённое обозначение к данному преобразованию какое-то отношение? Если да, то как его “расшифровать” и связать с процитированным преобразованием? (а в книге на стр. 33 есть такое обозначение преобразования? и как оно там “расшифровывается”?)
В двух первых пунктах процитированного преобразования, как я поняла, как раз происходит та самая перестановка столбцов и строк, о которой рассказано в предыдущем сообщении.
Теперь я поняла, что делается в третьем пункте. Расположив исходный квадрат в одной системе координат, я получила такой совершенный квадрат:
Код:
16 3 13 2
5 10 8 11
4 15 1 14
9 6 12 7
Затем расположила исходный квадрат в другой системе координат и получила в точности тот совершенный квадрат, который приведён автором в статье. Очевидно, что эти два квадрата эквивалентны (получаются один из другого параллельным переносом на торе).
Итак, в преобразовании разобрались. Но насколько всё это сложнее моего матричного преобразования! Надо выполнить целых три этапа. С помощью моего матричного преобразования всё выполняется сразу. Обозначим матрицу любого обратимого квадрата 4-го порядка A(aij). Понятно, что индексация здесь идёт в естественном порядке. Совершенный квадрат получается из обратимого с помощью следующего матричного преобразования:
Код:
a11 a43 a14 a42
a24 a32 a21 a33
a41 a13 a44 a12
a34 a22 a31 a23
В статье
“Совершенные магические квадраты (часть III)” на рис. 35 приведена матрица преобразования в общем виде для любого порядка n = 4k, k=1, 2, 3…
Я запрограммировала данное матричное преобразование и по программе (достаточно ввести в программу порядок квадрата) построила максимально большой совершенный квадрат, который мне позволил построить язык QBASIC. Это квадрат 120-ого порядка. Можно посмотреть его
здесь.
Очень легко составить обратное матричное преобразование, превращающее любой совершенный квадрат в обратимый.
***
Aleks-Sid, у меня ваша статья почему-то не открылась. Ну, да теперь это уже и не нужно: с преобразованием разобралась.