Главная Промышленная автоматика.

p: = q: = n-n-=-4X4; r: = true; for a:=l step 1 until n2-1 do begin beta(l,a-l,a,r); alpha(a,n2-l,a, true);

x[n2,a]: = if q then nn-aXn+n2-fl else nn-aXn + n2; alpha(n2 +l,n,~l q); q:=~1 q; r:= I r end a;

alpha(1,п2-1,п2,"П p); alpha(п2+2,п,п2, false); gamma(l,n2-l,n2+l,p); gamma(n2+2,n,n2+1, true); q:=:p; r:= true; /*

for a:=n2 + 2 step 1 until n do begin beta(l,n-a,a,q);

x[n-a + l,a]:=aXn-a+1; beta{n-a+2,n2-1,a, true); if 1 r then begin x[n2,a]:=nn-aXn+n2;

x[n2+l,a]:=aXn-n2 + ] end else

for b:=n2,n2 + l do

x[b,a]: = nn-aXn + n-b + 1; beta(ii2 + 2,a-l,a,~~lr); alpha(a,n,a, t-rue); q:=~lq; r:=~ г *

end a; for а:=п2,п2-Ы do for b:=n2,n2+l do

x[b,a]: = if p then aXn-n+b else nn-aXn + n-b + 1; if ~~1 p then begin

for а:=п2,п2+1 do x[n2-l,a]:=aXn-n2+2; for b: = n2,n2 + l do x[b,n2+2]:=nXn2-2Xn+b end

end magiceven;

Свидетельство к алгоритму 1176

Алгоритм 1176 является стереотипным переизданием алгоритма 117а.

Свидетельство к алгоритму 117а

Алгоритм 117а получен в результате исправления, сокращения,, оптимизации и ординарной переработки алгоритма 117 (Colli-son D. М. «САСМ», 1962, № 8).

Кроме ошибки, указанной в нижеследующем подтверждении П. Наура, была обнаружена еще одна синтаксическая ошибка, заключавшаяся в том, что между условием if г then .и else стоял оператор цикла, что не допускается «Пересмотренным сообщением об АЛГОЛе-60» [14]. Для исправления указанное условие было заменено на if~~lr then с соответствующей перестановкой подоператоров этого условного оператора.

Переводы «Подтверждений и замечаний к алгоритмам 117 и 118» помещены после алгоритма 1186. Перевод «Подтверждения к алгорит-



мам 117 и 118» К- Басворта (Bosworth К. М. «САСМ», 1963, 3) здесь не привадится, поскольку оно не дает новой информации. Более подробно о магических квадратах см. в справочнике О. В. Мантурова и др. [6] и в работе М. М. Постникова [7].

Алгоритм 117а транслирован для /г=4 и 6 и получены правильные результаты. Для /г=4 магический квадрат имеет вид

1 12 8 13

15 6 10 3

14 7 И 2

4 9 5 16

Следует заметить, что порядок элементов в вышеприведенном ма-тическом квадрате отличается от порядка, указанного в «Подтверждении» Д. Коллисона, приведенного ниже вслед за алгоритмом 1186.

АЛГОРИТМ 1186

Магический квадрат нечетного порядка [Z]

Процедура magicodd {magic - магический, odd - нечетный) по данному размеру я (чисел) стороны квадрата определяет числа от 1 до rfi, образующие «магический квадрат*, и запоминает их в массиве х[1:пхп], где п - нечетное число, не меньшее трех.

Литература та же, что и для алгоритма 1176.

procedure magicodd (n) result: (x)

value n; integer n; integer an ay x; begin integer i,j,k;

for i: = l step 1 until n do

for j: = l step 1 until n do x[i,j]:=0; i:=(n-t-l)--2; j: = n; for k: = l step 1 until nXn do begin

if к[1,]]фО then begin i:=i-1; ]:=]-2; if i<l then i:=i + n; if j<l then j:=j-fn end;

x[i,jl:=k; i:=i-t-I; if i>n then i:=i-n;

з:=з + 1;

if j>n then j:=j-n end к end magicodd;

Свидетельство к алгоритму 1186

Алгоритм 1186 является стереотипным переизданием алгоритма 118а.



. Алгоритм-118а получен в результате ординарной переработки алгоритма 118 (Со Ills on D. М. «САСМ», 1962, № 8).

Алгоритм 118а транслирован для /г=3, 5, 9 и получены правлль-ные результаты. Магический квадрат пятого порядка имеет вид

11 Ш 4 23 17

18 12 6 5 24

25 19 13 7 1

2 21 20 14 8 -

9 3 22 16 15

Подтверждение к алгоритмаа? 117 и 118 П. Наур (Naur Р. «САСМ», 1963, № 1)

В процедуре magiceveit необходимо следующее исправление: в теле процедзфы beta левая квадратная скобка ... then [п/г... долл<на быть заменена на круглую.

С этой поправкой алгоритм был успешно проверен в системе QIER ALGOL. Были получены квадраты четных порядков от 4 до 20 и проверены на «магичность» по строкам и столбцам.

Алгоритм содержит И пар лишних скобок (10 из которых находятся в условных выражениях), и..если присваивание значений пере-менны-м п2 и пп поместить сразу после «end gamma;», то внутренний блок становится излишним.

Процедура magcodd прошла на kauinne без поправок и выдала несколько квадратов.

Время работы следующее.

Процедура . Размер квадрата Время, с

magicodd 9 . 0.6

19 2.5

magiceven 10 0.9

20 2.3

Подтверждение к алгоритмам 117 и 118

Д. Коллисон Со 11 is on D. М. «САСМ», 1962, № g)

Оба алгоритма были проверены и прохронометрированы при помощи специальной АЛГОЛ-программы с транслятором Elliott ALGOL на машине National Elliott 803. Процедура для нечетных порядков оказалась более медленной.

Процедура Размер квадрата Время, с

Нечетный пор.чдок Э 10

19 45

Четный порядок 10 7

20 23

Поскольку В алгоритмах используются разные методы и процедура для четного порядка длинная, то было решено не объединять их вместе.





0 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41

0.0017