Średnia macierzy 3x3

0

Witam. Potrzebuje delikatnej optymalizacji kodu liczenia średniej macierzy 3x3

1 2 3
4 5 6
7 8 9

na 
srednia

* * *
* s *
* * * 
 

Mój kod do robienia tego zadania wygląda tak i wcale nie jest mi takie rozpisywanie na rękę a nie mogę wpaść na nic lepszego :)

for i:=Low(r)+1 to High(r)-1 do
	for j:=Low(r[1])+1 to High(r[1])-1 do
		begin
            suma := 0;
	    suma := suma + r[i-1,j];
            suma := suma + r[i,j-1];
            suma := suma + r[i+1,j];
            suma := suma + r[i,j+1];
            suma := suma + r[i-1,j-1];
            suma := suma + r[i+1,j+1];
            suma := suma + r[i-1,j+1];
            suma := suma + r[i+1,j-1];
            r[i,j] := round(suma / 8);

            suma := 0;
	    suma := suma + g[i-1,j];
            suma := suma + g[i,j-1];
            suma := suma + g[i+1,j];
            suma := suma + g[i,j+1];
            suma := suma + g[i-1,j-1];
            suma := suma + g[i+1,j+1];
            suma := suma + g[i-1,j+1];
            suma := suma + g[i+1,j-1];
            g[i,j] := round(suma / 8);

            suma := 0;
	    suma := suma + b[i-1,j];
            suma := suma + b[i,j-1];
            suma := suma + b[i+1,j];
            suma := suma + b[i,j+1];
            suma := suma + b[i-1,j-1];
            suma := suma + b[i+1,j+1];
            suma := suma + b[i-1,j+1];
            suma := suma + b[i+1,j-1];
            b[i,j] := round(suma / 8);
end;
1
        suma := suma + r[i-1,j];
            suma := suma + r[i,j-1];
            suma := suma + r[i+1,j];
            suma := suma + r[i,j+1];
            suma := suma + r[i-1,j-1];
            suma := suma + r[i+1,j+1];
            suma := suma + r[i-1,j+1];
            suma := suma + r[i+1,j-1];

To przecież możesz zrobić pętlą (a dokładniej dwiema zagnieżdżonymi) ;)

1
sr:=0;
sg:=0;
sb:=0;
for y:=i-1 to i+1 do for x:=j-1 to j+1 do if (y<>i)||(x<>j) then begin Inc(sr,r[y,x]); Inc(sg,g[y,x]); Inc(sb,b[y,x]); end;
sr:=(sr)shr(3);
sg:=(sg)shr(3);
sb:=(sb)shr(3);

1 użytkowników online, w tym zalogowanych: 0, gości: 1