1. С чего все началось
0
Голосов: 0
Автор: fedorov
Опубликовано: 1802 дня назад (18 декабря 2019)
Блог: Мой Магический Квадрат
Редактировалось: 11 раз — последний 23 декабря 2019
Настроение: отличное
Родился я 31 декабря 1952 года. Немного не дотянул до Нового 1953. Самое лучшее, что произошло в детстве - попал в секцию спортивной гимнастики. Тренировались мы в маленьком зале, что на Часовой улице, внутри здания ВЗИИТ. Поэтому стали юниорами спортивного общества "Локомотив". Тренер достался именитый - заслуженный мастер спорта Рогачев Николай Николаевич. В пятидесятых годах 20 века он был на самой вершине советского спорта, соревновался с Шахлиным, Чукариным, Титовым, Муратовым, Азаряном, Кердемелиди, Аркаевым и, конечно, - с зарубежными соперниками.
Наша команда на дне рождения Рогачева Н.Н. 18 октября 2006 г.
Сидят: Рогачев и Слава Виряскин.
Стоят: Гоша Александров, жена тренера Светлана, я (Саша Фёдоров) и Серёга Подушкин.
Конечно, такими знаменитыми, как Николай Николаевич мы, к сожалению, не стали. Из нас только Сергей Подушкин дошел до мастера спорта и до сих пор работает организатором соревнований, в том числе и международных. Остальные проявили себя так: Слава был долгое время начальником участка Метростроя, Гоша ударился в науку, защитил диссертацию, теперь активно увлечен математикой, я же работаю водителем.
Изредка мы созваниваемся и обмениваемся новостями. И вот недавно Гоша предложил для меня составить именной магический квадрат. Это матрица, состоящая из четырех строк и четырех столбцов. В верхней строке помещаются цифры, характеризующие дату рождения. Так моя дата 31 декабря 1952 года записывается в четырех ячейках таким образом:
31 12 19 52
Задача заключается в заполнении некоторыми числами остальных трёх строк или 12 ячеек. Причем числа должны быть такими, чтобы получился магический квадрат. Очень частный случай такой задачи, а именно для даты своего рождения решил в начале 20 века великий индийский математик Рамануджан. Вот как он выглядит:
Гоша, как он мне рассказал по телефону, обобщил метод Рамануджана и составил программу на одной из версий Бейсика, позволяющую находить не один, а все возможные магические квадраты по заданной дате. Текст проги следующий:
open #1,"FEDOROV.txt","w"
dim a(20),s(10000),sum(1000)
print "Den' rozhdeniya ";:input D
print "Mesyath ";:input M
print "God ";:input god
V=int(god/100)
G=god-V*100
mag=D+M+V+G
print "MAGIC NUMBER = ";:print D+M+V+G
n = 120:n1=n^2+1
for a10=-n to n
for b10=-n to n
if a10<>0 and b10<>0 then
a20=-a10:a30=2*b10+a10:a40=-2*b10-a10
b20=-b10:b30=-b10:b40=b10
c10=-a10-b10:c20=a10+b10:c30=-a10-b10:c40=a10+b10
a(1)=D:a(2)=M:a(3)=V:a(4)=G
a1=G+a10:a2=V+a20:a3=M+a30:a4=D+a40:if a1>0 and a2>0 and a3>0 and a4>0 then
a(5)=a1:a(6)=a2:a(7)=a3:a(8)=a4
b1=M+b10:b2=D+b20:b3=G+b30:b4=V+b40:if b1>0 and b2>0 and b3>0 and b4>0 then
a(9)=b1:a(10)=b2:a(11)=b3:a(12)=b4
c1=V+c10:c2=G+c20:c3=D+c30:c4=M+c40:if c1>0 and c2>0 and c3>0 and c4>0 then
a(13)=c1:a(14)=c2:a(15)=c3:a(16)=c4
t=0:s00=100
for i=1 to 16
for j=1 to 16
if i<>j then
if a(i)=a(j) then t=1:fi
fi
next j
next i
if t=0 then
sa=0
if a10^2<n1 and a20^2<n1 and a30^2<n1 and a40^2<n1 and b10^2<n1 and b20^2<n1 and b30^2<n1 and b40^2<n1 and c10^2<n1 and c20^2<n1 and c30^2<n1 and c40^2<n1 then
s0=1:for i=5 to 16:if a(i)>s0 then s0=a(i)
fi
next i
s1=s1+1
s(s1)=s0
sum=0:for i=5 to 16:sum=sum+a(i)^2:next i
sum(s1)=sum
print s1;:print " max = ";:print s0;:print " summa = ";:print sum
print #1,s1
for m=1 to 4
print a(m) using "####";
print #1,a(m) using "####";
next m
print
print #1
for m=5 to 8
print a(m) using "####";
print #1,a(m) using "####";
next m
print #1
print " ";:print a10,a20,a30,a40
for m=9 to 12
print a(m) using "####";
print #1,a(m) using "####";
next m
print #1
print " ";:print b10,b20,b30,b40
for m=13 to 16
print a(m) using "####";
print #1,a(m) using "####";
next m
print #1
num=num+1
print " ";:print c10,c20,c30,c40
rem print D+M+V+G,a1+a2+a3+a4,b1+b2+b3+b4,c1+c2+c3+c4,D+a1+b1+c1,M+a2+b2+c2,V+a3+b3+c3,G+a4+b4+c4,D+a2+b3+c4,c1+b2+a3+G
rem print D+M+a1+a2,V+G+a3+a4,b1+b2+c1+c2,b3+b4+c3+c4,D+G+c1+c4,a1+M+c3+b4,b1+c2+V+a4,a2+a3+b2+b3,M+V+c2+c3,a1+b1+a4+b4,a1+a2+b1+b2
rem print a3+a4+b3+b4,D+M+c1+c2,V+G+c3+c4,a3+a4+c1+c2,a1+a2+c3+c4,b1+b2+V+G,D+M+b3+b4,M+G+b2+b4,D+V+b1+b3,a1+a3+c1+c3,a2+a4+c2+c4
rem print D+a3+b3+c1,G+a2+b2+c4,a1+V+c3+b1,M+a4+b4+c2
print
fi
fi
fi
fi
fi
fi
next b10
next a10
s00=100
for i=1 to s1:if s(i)<s00 then nk0=i:s00=s(i)
fi
next i
print
print
for i=1 to s1:if s(i)=s00 then print i,s(i),sum(i)
fi
next i
print #1
print #1,num,mag
Итак, я запускаю программу. Она просит меня ввести день рождения. Набираю 31 и кликаю Enter.
Прочит ввести месяц. Набираю 12 и кликаю Enter.
Просит ввести год. Набираю 1952 и кликаю Enter.
Производится расчет.
Просматриваю текстовой файл "FEDOROV.txt" и удивляюсь: распечатываются аж 428 вариантов моих магических квадратов.
Причем магическая сумма равна 114
В самом конце так и напечатано: 428 114
Чтобы воспользоваться следующей программой, необходимо эти два числа скопировать и напечатать над первой строкой данных этого текстового файла.
Но это уже в следующей главе "Поиск оптимального МК".
Наша команда на дне рождения Рогачева Н.Н. 18 октября 2006 г.
Сидят: Рогачев и Слава Виряскин.
Стоят: Гоша Александров, жена тренера Светлана, я (Саша Фёдоров) и Серёга Подушкин.
Конечно, такими знаменитыми, как Николай Николаевич мы, к сожалению, не стали. Из нас только Сергей Подушкин дошел до мастера спорта и до сих пор работает организатором соревнований, в том числе и международных. Остальные проявили себя так: Слава был долгое время начальником участка Метростроя, Гоша ударился в науку, защитил диссертацию, теперь активно увлечен математикой, я же работаю водителем.
Изредка мы созваниваемся и обмениваемся новостями. И вот недавно Гоша предложил для меня составить именной магический квадрат. Это матрица, состоящая из четырех строк и четырех столбцов. В верхней строке помещаются цифры, характеризующие дату рождения. Так моя дата 31 декабря 1952 года записывается в четырех ячейках таким образом:
31 12 19 52
Задача заключается в заполнении некоторыми числами остальных трёх строк или 12 ячеек. Причем числа должны быть такими, чтобы получился магический квадрат. Очень частный случай такой задачи, а именно для даты своего рождения решил в начале 20 века великий индийский математик Рамануджан. Вот как он выглядит:
Гоша, как он мне рассказал по телефону, обобщил метод Рамануджана и составил программу на одной из версий Бейсика, позволяющую находить не один, а все возможные магические квадраты по заданной дате. Текст проги следующий:
open #1,"FEDOROV.txt","w"
dim a(20),s(10000),sum(1000)
print "Den' rozhdeniya ";:input D
print "Mesyath ";:input M
print "God ";:input god
V=int(god/100)
G=god-V*100
mag=D+M+V+G
print "MAGIC NUMBER = ";:print D+M+V+G
n = 120:n1=n^2+1
for a10=-n to n
for b10=-n to n
if a10<>0 and b10<>0 then
a20=-a10:a30=2*b10+a10:a40=-2*b10-a10
b20=-b10:b30=-b10:b40=b10
c10=-a10-b10:c20=a10+b10:c30=-a10-b10:c40=a10+b10
a(1)=D:a(2)=M:a(3)=V:a(4)=G
a1=G+a10:a2=V+a20:a3=M+a30:a4=D+a40:if a1>0 and a2>0 and a3>0 and a4>0 then
a(5)=a1:a(6)=a2:a(7)=a3:a(8)=a4
b1=M+b10:b2=D+b20:b3=G+b30:b4=V+b40:if b1>0 and b2>0 and b3>0 and b4>0 then
a(9)=b1:a(10)=b2:a(11)=b3:a(12)=b4
c1=V+c10:c2=G+c20:c3=D+c30:c4=M+c40:if c1>0 and c2>0 and c3>0 and c4>0 then
a(13)=c1:a(14)=c2:a(15)=c3:a(16)=c4
t=0:s00=100
for i=1 to 16
for j=1 to 16
if i<>j then
if a(i)=a(j) then t=1:fi
fi
next j
next i
if t=0 then
sa=0
if a10^2<n1 and a20^2<n1 and a30^2<n1 and a40^2<n1 and b10^2<n1 and b20^2<n1 and b30^2<n1 and b40^2<n1 and c10^2<n1 and c20^2<n1 and c30^2<n1 and c40^2<n1 then
s0=1:for i=5 to 16:if a(i)>s0 then s0=a(i)
fi
next i
s1=s1+1
s(s1)=s0
sum=0:for i=5 to 16:sum=sum+a(i)^2:next i
sum(s1)=sum
print s1;:print " max = ";:print s0;:print " summa = ";:print sum
print #1,s1
for m=1 to 4
print a(m) using "####";
print #1,a(m) using "####";
next m
print #1
for m=5 to 8
print a(m) using "####";
print #1,a(m) using "####";
next m
print #1
print " ";:print a10,a20,a30,a40
for m=9 to 12
print a(m) using "####";
print #1,a(m) using "####";
next m
print #1
print " ";:print b10,b20,b30,b40
for m=13 to 16
print a(m) using "####";
print #1,a(m) using "####";
next m
print #1
num=num+1
print " ";:print c10,c20,c30,c40
rem print D+M+V+G,a1+a2+a3+a4,b1+b2+b3+b4,c1+c2+c3+c4,D+a1+b1+c1,M+a2+b2+c2,V+a3+b3+c3,G+a4+b4+c4,D+a2+b3+c4,c1+b2+a3+G
rem print D+M+a1+a2,V+G+a3+a4,b1+b2+c1+c2,b3+b4+c3+c4,D+G+c1+c4,a1+M+c3+b4,b1+c2+V+a4,a2+a3+b2+b3,M+V+c2+c3,a1+b1+a4+b4,a1+a2+b1+b2
rem print a3+a4+b3+b4,D+M+c1+c2,V+G+c3+c4,a3+a4+c1+c2,a1+a2+c3+c4,b1+b2+V+G,D+M+b3+b4,M+G+b2+b4,D+V+b1+b3,a1+a3+c1+c3,a2+a4+c2+c4
rem print D+a3+b3+c1,G+a2+b2+c4,a1+V+c3+b1,M+a4+b4+c2
fi
fi
fi
fi
fi
fi
next b10
next a10
s00=100
for i=1 to s1:if s(i)<s00 then nk0=i:s00=s(i)
fi
next i
for i=1 to s1:if s(i)=s00 then print i,s(i),sum(i)
fi
next i
print #1
print #1,num,mag
Итак, я запускаю программу. Она просит меня ввести день рождения. Набираю 31 и кликаю Enter.
Прочит ввести месяц. Набираю 12 и кликаю Enter.
Просит ввести год. Набираю 1952 и кликаю Enter.
Производится расчет.
Просматриваю текстовой файл "FEDOROV.txt" и удивляюсь: распечатываются аж 428 вариантов моих магических квадратов.
Причем магическая сумма равна 114
В самом конце так и напечатано: 428 114
Чтобы воспользоваться следующей программой, необходимо эти два числа скопировать и напечатать над первой строкой данных этого текстового файла.
Но это уже в следующей главе "Поиск оптимального МК".
616 просмотров
Комментарии (0)
Нет комментариев. Ваш будет первым!