Составила схему для построения идеального магического квадрата 5-го порядка из любого массива чисел, состоящего точно из 25 элементов. Массив должен удовлетворять следующим условиям: сумма всех чисел массива должна быть кратна 5. Магическая константа квадрата равна сумме всех членов массива, делённой на 5. Обозначим магическую константу S. Далее: магическая константа квадрата тоже должна быть кратна 5, и в массиве должно содержаться число равное S/5. Это число будет стоять в центральной ячейке квадрата (x13).
Константа ассоциативности квадрата будет равна 2*S/5. Схема квадрата такая:
Код:
I J K L x5
M N P Q x10
x11 x12 x13 x14 x15
x16 x17 x18 x19 x20
x21 x22 x23 x24 x25
Здесь переменные I, J, K, L, M, N, P, Q свободно варьируются, при этом все они пробегают значения от 1 до 24. Переменные x5, x10, x11, x12 вычисляются по следующим формулам:
Код:
x5 = S – I – J – K – L
x10 = S – M – N – P – Q
x11 = M + J – K – N + S/5
x12 = 6*S/5 + I – L – M – N – 2*P – Q
Все остальные элементы xi вычисляются по ассоциативности. Ещё необходимо проверять суммы чисел в первом, втором, четвёртом и пятом столбцах, ибо они не получаются автоматически.
Вот такая несложная схема. По этой схеме можно строить и традиционные идеальные квадраты, тогда массив чисел состоит из первых 25 натуральных чисел, S = 65, x13 = S/5 = 13, константа ассоциативности равна 2*S/5 = 26.
Программу по этой схеме составить очень просто. Вопрос: как долго на нормальном языке программирования будут выполняться вложенные циклы: 8 переменных пробегают значения от 1 до 24?