«Улитка» — расположение элементов массива в следующем порядке — меньший порядковый номер означает меньшее значение элемента. Пример для матрицы 5×5: 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9
Program fail1;
var
i, j, a, max: integer;
m: array [1 .. 20, 1 .. 20] of integer;
v: array [1 .. 290] of integer;
begin
randomize;
{ a:=random(30)+1; }
max := 5;
for i := 1 to 17 do
for j := 1 to 17 do
begin
inc(a);
m[i, j] := a;
end;
a := 0; { zapisi }
for i := 1 to 17 do
for j := 1 to 17 do
begin
inc(a);
v[a] := m[i, j];
end;
a := 0;
for j := 1 to 17 do
begin
inc(a);
m[1, j] := v[a];
end;
for i := 2 to 17 do
begin
inc(a);
m[i, 17] := v[a];
end;
for j := 16 downto 1 do
begin
inc(a);
m[17, j] := v[a];
end;
for i := 16 downto 2 do
begin
inc(a);
m[i, 1] := v[a];
end;
for j := 2 to 16 do
begin
inc(a);
m[2, j] := v[a];
end;
for i := 3 to 16 do
begin
inc(a);
m[i, 16] := v[a];
end;
for j := 15 downto 2 do
begin
inc(a);
m[16, j] := v[a];
end;
for i := 15 downto 3 do
begin
inc(a);
m[i, 2] := v[a];
end;
for j := 3 to 15 do
begin
inc(a);
m[3, j] := v[a];
end;
for i := 4 to 15 do
begin
inc(a);
m[i, 15] := v[a];
end;
for j := 14 downto 3 do
begin
inc(a);
m[15, j] := v[a];
end;
for i := 14 downto 4 do
begin
inc(a);
m[i, 3] := v[a];
end;
for j := 4 to 14 do
begin
inc(a);
m[4, j] := v[a];
end;
for i := 5 to 14 do
begin
inc(a);
m[i, 14] := v[a];
end;
for j := 13 downto 4 do
begin
inc(a);
m[14, j] := v[a];
end;
for i := 13 downto 5 do
begin
inc(a);
m[i, 4] := v[a];
end;
for j := 5 to 13 do
begin
inc(a);
m[5, j] := v[a];
end;
for i := 6 to 13 do
begin
inc(a);
m[i, 13] := v[a];
end;
for j := 12 downto 5 do
begin
inc(a);
m[13, j] := v[a];
end;
for i := 12 downto 6 do
begin
inc(a);
m[i, 5] := v[a];
end;
for j := 6 to 12 do
begin
inc(a);
m[6, j] := v[a];
end;
for i := 7 to 12 do
begin
inc(a);
m[i, 12] := v[a];
end;
for j := 11 downto 6 do
begin
inc(a);
m[12, j] := v[a];
end;
for i := 11 downto 7 do
begin
inc(a);
m[i, 6] := v[a];
end;
for j := 7 to 11 do
begin
inc(a);
m[7, j] := v[a];
end;
for i := 8 to 11 do
begin
inc(a);
m[i, 11] := v[a];
end;
for j := 10 downto 7 do
begin
inc(a);
m[11, j] := v[a];
end;
for i := 10 downto 8 do
begin
inc(a);
m[i, 7] := v[a];
end;
for j := 8 to 10 do
begin
inc(a);
m[8, j] := v[a];
end;
for i := 9 to 10 do
begin
inc(a);
m[i, 10] := v[a];
end;
for j := 9 downto 8 do
begin
inc(a);
m[10, j] := v[a];
end;
for i := 9 downto 9 do
begin
inc(a);
m[i, 8] := v[a];
end;
inc(a);
m[9, 9] := v[a];
for i := 1 to 17 do
begin
writeln;
for j := 1 to 17 do
write(m[i, j]:4);
end;
writeln;
writeln;
readln;
end.