Uses Crt; const Width = 13; var Square : array [1..Width,1..Width] of byte; x,y : integer; MaxX, MinX, MaxY, MinY : integer; function WalkRight:boolean; begin while (x<=Width) do begin Write(Square[y,x]:4); if (x=MaxX) then begin WriteLn; WalkRight:=true; inc(MaxX); Exit; end; inc(x); end; WalkRight:=false; end; function WalkBottom:boolean; begin while (y<=Width) do begin Write(Square[y,x]:4); if (y=MaxY) then begin WriteLn; WalkBottom:=true; inc(MaxY); Exit; end; inc(y); end; WalkBottom:=false; end; function WalkLeft:boolean; begin while (x>=1) do begin Write(Square[y,x]:4); if (x=MinX) then begin WriteLn; WalkLeft:=true; dec(MinX); Exit; end; dec(x); end; WalkLeft:=false; end; function WalkTop:boolean; begin while (y>=1) do begin Write(Square[y,x]:4); if (y=MinY) then begin WriteLn; WalkTop:=true; dec(MinY); Exit; end; dec(y); end; WalkTop:=false; end; var i,j : integer; begin ClrScr; for i:=1 to Width do begin for j:=1 to Width do begin Square[i,j] := (i-1)*Width+j; Write(Square[i,j]:4); walkleft; walktop; walkright; walkbottom; end; WriteLn; end; readkey; end.