Wenn mir kein Fehler unterlaufen ist, dann funktioniert dieser Quellcode:
Delphi-Quellcode:
function Schritte(X1, Y1, X2, Y2:Integer): Integer;
var
X,Y: Integer;
begin
if (X1 < 0)
or (X2 < 0)
or (Y1 < 0)
or (Y2 < 0)
then
raise Exception.Create('
Die Werte müssen alle größer oder gleich Null sein.');
X:=abs(X1 - X2);
Y:=abs(Y1 - Y2);
Result:=X;
if (Y*2 > X)
then begin
inc(X,X
mod 2);
dec(Y,X
div 2);
inc(Result,Y);
end;
end;
Edit: an Index beginnend bei 0 angepasst
Edit 2: Exit entfernt
Edit 3: Code funktioniert noch nicht 100%ig - Beispiel: 2-2 9-6
Edit 4: Fix