Как найти Цепи Александрова

Меня старшеклассники буквально умоляли дать теорию Цепей Александрова (ЦА). Ведь когда ведется презентация необходимо хотя бы намекнуть на принцип составления жемчужной цепочки чисел, позволяющей легко строить магические квадраты невероятной красоты.
 Тут я должен огорчить школьников. Теория эта столь сложна, что популярное ее изложение потребует целой книги.
  Проще всего дать программу на языке Yabasic. Прога столь проста в анализе, что ушлые современные старшеклассники могут пороизвести детальный анализ команд и уловить четкий алгоритм. Итак, вот текст.

rem Составление цепи Александрова
open #1,"5-30.txt","w"
dim p(1000),t(1000),r(1000)
for n=5 to 16
kA=(n-2)/4
if kA<>int(kA) then
s1=0
p(1)=1:p(2)=n
k=(n-4)/8
if n/2=int(n/2) then
if k=int(k) then
r1=n/2+2:p1=4*(k+1):p(r1)=2
for i=0 to k-0:p(r1+1+i)=p1-4*i:next i
p2=p1-5:r2=r1+k:p(r2)=p2
for i=0 to k-2:p(r2+i)=p2-4*i:next i
r3=r2+k-1:p(r3)=8
p(r3+1)=4:p(r3+2)=3:p(r3+3)=6
r4=r3+4:for i=0 to k-2:p(r4+i)=5+4*i:next i
r5=n:for i=0 to k-2:p(n-i)=p1-2-4*i:next i:fi
if k<>int(k) then:p(n/2+2)=2
for i=1 to n/4-1:p(n/2+2+i)=n/2-2*(i-1):next i
for j=1 to n/4-1:p(n/2+1+i+j)=3+2*(j-1):next j:fi
for i=3 to n/2+1:p(i)=n+1-p(n+3-i):next i:fi
if n/2<>int(n/2) then:n1=(n-3)/2
p(1)=1:p(2)=n:p((1+n)/2+1)=(1+n)/2:no=(n-3)/2
t(5)=3:t(7)=6:t(9)=2:if n=5 then p(3)=2:p(n)=4:fi
if n=7 then p(3)=3:p(4)=6:p(6)=2:p(n)=5:fi
if n=9 then p(3)=3:p(4)=6:p(5)=2:p(7)=8:p(8)=4:p(n)=7:fi
if n>9 then:t(11)=5:t(13)=7:t(15)=4:t(17)=8:t(19)=12
t(21)=9:s=21
for k=1 to (n+1)/2:for i=1 to 6:s=s+2:t(s)=6*k+t(9+2*i)
next i:next k
rem Блок корректировки значений t(i)
o=mod(n,12)
if o=11 then t(n-4)=t(n-4)-2:fi
if o=1 or o=7 then t(n)=t(n)-3:fi
s1=2:s0=0
for i=5 to n step 2:s1=s1+1:p(s1)=t(i):s0=s0+1:r(s0)=1+n-t(i)
next i:s1=s1+1
for i=n to 5 step -2:s1=s1+1:p(s1)=r(s0):s0=s0-1:next i:fi
s=0:s1=0:s0=0:fi
for i=1 to n:print p(i);:next i
for i=1 to n:print #1, p(i);:next i
print
print #1
print
print #1
fi
next n

Результат счета показан на рисунке.
Я здесь рассмотрел ЦА для матриц размером от 5 до 16. При желании диапазон можно расширить хоть до тысячи. Но такие гигантские идеальные магические квадраты вряд ли кому понравятся.


Рецензии