Code:
uses crt;
var
n, w, hang, cot, chanhangtang, chanhanggiam, chancottang, chancotgiam, tang, giam: integer;
matran: array[0..12,0..12] of integer;
begin
clrscr;
readln(n);
hang:=0;
cot:=0;
chanhangtang:=n-1;
chancottang:=n-1;
chanhanggiam:=0;
chancotgiam:=0;
tang:=0;
for w:=0 to n*n-1 do
begin
matran[hang,cot]:= w + 1;
case tang of
0 : if (cot < chancottang) then inc(cot) else
begin
inc(tang);
inc(chanhanggiam);
inc(hang);
end;
1 : if (hang < chanhangtang) then inc(hang) else
begin
inc(tang);
dec(chancottang);
dec(cot);
end;
2 : if (cot > chancotgiam) then dec(cot) else
begin
inc(tang);
dec(chanhangtang);
dec(hang);
end;
3 : if (hang > chanhanggiam) then dec(hang) else
begin
tang:=0;
inc(chancotgiam);
inc(cot);
end;
end;
end;
for hang:=0 to n-1 do
begin
for cot:=0 to n-1 do write(matran[hang,cot],' ');
writeln;
end;
readln;
end.
Bookmarks