Магический, или волшебный квадрат — это квадратная таблица, заполненная n2 числами, таким образом, что сумма чисел в каждой строке, каждом столбце и на обеих диагоналях оказывается одинаковой — Pascal(Паскаль)

program volhebniy_kvadrat;

uses crt;

var
  per, a: array [1 .. 9] of integer;
  incl: array [1 .. 9] of boolean;
  s: array [1 .. 8] of integer;
  t, i, j: integer;
  nep: boolean;

procedure perest(p: integer);
var
  c: integer;
begin
  if p - 1 = 9 then
  begin
    nep := false;
    s[1] := per[1] + per[5] + per[9];
    s[2] := per[1] + per[4] + per[7];
    s[3] := per[2] + per[5] + per[8];
    s[4] := per[3] + per[6] + per[9];
    s[5] := per[3] + per[5] + per[7];
    s[6] := per[1] + per[2] + per[3];
    s[7] := per[4] + per[5] + per[6];
    s[8] := per[7] + per[8] + per[9];
    for i := 1 to 8 do
      for j := 1 to 8 do
        if s[i] <> s[j] then
          nep := true;
    if nep = false then
    begin
      writeln;
      t := t + 1;
      for i := 1 to 9 do
      begin
        write(per[i]);
      end;
    end;
  end;
  for c := 1 to 9 do
  begin
    if not incl[c] then
    begin
      per[p] := a[c];
      incl[c] := true;
      perest(p + 1);
      per[p] := 0;
      incl[c] := false;
    end;
  end;
end;

begin
  clrscr;
  for i := 1 to 9 do
  begin
    a[i] := i;
    write(a[i], ' ');
  end;
  perest(1);
  writeln;
  writeln(t);
  readkey;

end.

Leave a Comment

13 − 12 =