Георгий Александров

 

ИДЕАЛЬНЫЕ МАГИЧЕСКИЕ КВАДРАТЫ 20х20

(группа 7 11 12 13 15 16 17 18 19)

 

            Чтобы построить идеальный магический квадрат достаточно знать цепь Александрова, направленность ходов конем и правило перехода от одной ленты цепи к другой. Теория изложена в двух работах: http://renuar911.narod.ru/IMSb.html и http://renuar911.narod.ru/IMQ12.html

Группа 7 11 12 13 15 16 17 18 19  (первые [n-2]/2 чисел цепи в порядке возрастания) дает 44 возможных решения:

                                  

Файл ,"23456a.txt"

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

26 1 20 12 15 18 19 16 13 11 7 17 4 14 10 8 5 2 3 6 9

27 1 20 19 15 18 16 13 11 7 12 17 4 9 14 10 8 5 3 6 2

28 1 20 18 19 13 16 11 7 17 12 15 6 9 4 14 10 5 8 2 3

29 1 20 17 7 12 16 15 13 11 18 19 2 3 10 8 6 5 9 14 4

30 1 20 15 7 16 12 11 18 13 17 19 2 4 8 3 10 9 5 14 6

31 1 20 17 7 12 16 11 13 19 18 15 6 3 2 8 10 5 9 14 4

32 1 20 16 7 15 12 11 17 13 18 19 2 3 8 4 10 9 6 14 5

33 1 20 16 17 11 18 13 7 19 12 15 6 9 2 14 8 3 10 4 5

34 1 20 15 11 16 18 17 13 7 12 19 2 9 14 8 4 3 5 10 6

35 1 20 18 7 12 19 15 11 13 17 16 5 4 8 10 6 2 9 14 3

36 1 20 18 7 12 15 11 13 17 19 16 5 2 4 8 10 6 9 14 3

37 1 20 12 19 18 15 11 13 17 7 16 5 14 4 8 10 6 3 2 9

38 1 20 12 19 16 17 15 11 13 7 18 3 14 8 10 6 4 5 2 9

39 1 20 11 7 18 16 13 19 15 12 17 4 9 6 2 8 5 3 14 10

40 1 20 11 7 16 18 13 17 19 12 15 6 9 2 4 8 3 5 14 10

41 1 20 18 19 12 15 11 7 17 13 16 5 8 4 14 10 6 9 2 3

42 1 20 15 7 17 13 12 18 11 16 19 2 5 10 3 9 8 4 14 6

43 1 20 11 7 15 19 17 16 13 12 18 3 9 8 5 4 2 6 14 10

44 1 20 17 7 15 13 12 16 11 18 19 2 3 10 5 9 8 6 14 4

 

Зная цепи Александрова, легко найти идеальные магические квадраты по программе:

 

rem Построение идеального магического квадрата порядка 4k

dim p(1000),z(1000,1000)

n=20

open #2,"23456a.txt","r"

open #1,"Ideal_20.txt","w"

for q=1 to 44

print #1:print #1

input #2 y

for r1=1 to n:input #2 p(r1):print #1,p(r1);:next r1:print #1

for k=1 to n

for t=1 to n

if k=1 and t=1 then j=1:i=1:fi

if t=1 and k>1 then i=i-1:j=j-1:if j<0 then j=j+n:fi:if i<0 then i=i+n:fi:fi

if t>1 then i=i+1:j=j+2:fi

rem приведение i и j к рамкам магического квадрата

v=i

a()

i=v2

v=j

a()

j=v2

z=(p(k)-1)*n+p(t):z1=int(z)

if abs(z-z1)>.9 then z=z1+1 else z=z1:fi

z(i,j)=z

next t

next k

print #1

for i=1 to n

for j=1 to n

print #1,z(i,j) using "####";

if j<>n then print #1,",";:fi

next j

print #1:print #1

next i

print #1:print #1

rem Удвоение длины МК для нахождения сумм в ломаных диагоналях

for i= 1 to n

for j=n+1 to 2*n

z(i,j)=z(i,j-n)

next j

next i

rem Построение магического квадрата удвоенной длины

for i=1 to n

for j=1 to 2*n

next j

next i

print #1, z(1,1)+z(n,n)

print "SSSSSSSSSSSSSSSSS":print #1,"SSSSSSSSSSSSSSSSS"

rem Определение сумм по строкам, столбцам и всем диагоналям

for i=1 to n:s=0:for j=1 to n:s=s+z(i,j)

next j:print s;:print #1,s;:next i:print:print #1

for j=1 to n:s=0:for i=1 to n:s=s+z(j,i)

next i:print s;:print #1,s;next j:print:print #1

Print "OOOOOOOOOO":Print #1,"OOOOOOOOOO"

for t=0 to n-1

s=0

for i=1 to n

s=s+z(i,i+t)

next i

print s;:print #1,s;

next t

print:print #1

print "WWWWWWWWW":print #1,"WWWWWWWWW"

for t=0 to n-1

s=0

for i=n to 1 step -1

s=s+z(i,n-i+1+t)

next i

print s;:print #1,s;

next t

print:print

print #1:print #1

next q

sub a()

v0=v/n:v1=int(v0):if v0<1 then v1=0:fi

v2=(v0-v1)*n:v3=int(v2)

if abs(v2-v3)>.9 then v2=v3+1 else z=v3:fi

if abs(v2)<.0000000001 then v2=n:fi

end sub

 

В этой программе имеется блок проверки МК на идеальность.

 

9 мая 2008 г.

Сидней

 

Хостинг от uCoz