我有一个生成类似于此
的2D数组的代码0 0 0 0 0 34 41 43 45 0
0 0 0 0 25 30 35 42 44 0
0 0 0 14 20 26 31 36 40 0
0 0 1 8 15 21 27 32 37 0
0 0 0 2 9 16 22 28 33 0
0 0 0 0 3 10 17 23 29 0
0 0 0 0 0 4 11 18 24 0
0 0 0 0 0 0 5 12 19 0
0 0 0 0 0 0 0 6 13 0
0 0 0 0 0 0 0 0 7 0
用于生成数字的源代码部分是
j:=3;
for i:=4 to 10 do
begin
ms[i,j]:=wrk;
wrk:=wrk+1;
j:=j+1
end;
j:=4;
for i:=4 to 9 do
begin
ms[i,j]:=wrk;
wrk:=wrk+1;
j:=j+1
end;
j:=4;
for i:=3 to 8 do
begin
ms[i,j]:=wrk;
wrk:=wrk+1;
j:=j+1
end;
j:=5;
for i:=3 to 7 do
begin
ms[i,j]:=wrk;
wrk:=wrk+1;
j:=j+1
end;
j:=5;
for i:=2 to 6 do
begin
ms[i,j]:=wrk;
wrk:=wrk+1;
j:=j+1
end;
j:=6;
for i:=2 to 5 do
begin
ms[i,j]:=wrk;
wrk:=wrk+1;
j:=j+1
end;
j:=6;
for i:=1 to 4 do
begin
ms[i,j]:=wrk;
wrk:=wrk+1;
j:=j+1
end;
j:=7;
for i:=1 to 3 do
begin
ms[i,j]:=wrk;
wrk:=wrk+1;
j:=j+1
end;
j:=7;
for i:=1 to 2 do
begin
ms[i,j]:=wrk;
wrk:=wrk+1;
j:=j+1
end;
j:=8;
for i:=1 to 2 do
begin
ms[i,j]:=wrk;
wrk:=wrk+1;
j:=j+1
end;
j:=9;
for i:=1 to 1 do
begin
ms[i,j]:=wrk;
wrk:=wrk+1;
j:=j+1
end;
我需要优化代码并尽可能地缩小代码并执行相同的功能。有没有办法做到这一点?
答案 0 :(得分:0)
从您的陈述“我需要优化代码并尽可能减小代码”我假设您正在优化代码长度。 对不起,如果我错过了什么,但你可以定义一个像
这样的功能f(j,k,l)
begin
for i:=k to l do
begin
ms[i,j]:=wrk;
wrk:=wrk+1;
j:=j+1
end;
end;
它会使你的代码变得更小,你可以像这样调用函数。
f(3,4,10);
f(4,4,9);
f(4,3,8);
...
请添加详细信息,我暂时没有使用Pascal。 请注意,它不会使您的代码更有效,因为函数调用,程序运行速度会慢一些。