SRL Archive - SRL Archives

MinEx and MaxEx- functions


marpis

2009-02-25 16:56:04

Example: MinEx([6, 3, 0, 7]) returns 0
function MinEx(numbers: array of integer): integer;
var
i: integer;
begin
result:= numbers[0];
for i:= 1 to high(numbers) do
begin
if (numbers[i] < result) then
result:= numbers[i];
end;
end;

Example: MaxEx([2, -1, 4, 8, 2]) returns 8
function MaxEx(numbers: array of integer): integer;
var
i: integer;
begin
result:= numbers[0];
for i:= 1 to high(numbers) do
begin
if (numbers[i] > result) then
result:= numbers[i];
end;
end;

Max() and Min() only return the greater one from 2 numbers, these functions return it from how many numbers u want.

I think this would make a great addition in SRL (comparing distances or levels, for example)
In-Game example:

procedure TrainWeakestLevel;
begin
case MinEx([Players[CP].Level[1], Players[CP].Level[2], Players[CP].Level[3]) of
Players[CP].Level[1]: SetFightMode(1);
Players[CP].Level[2]: SetFightMode(2);
Players[CP].Level[3]: SetFightMode(4);
end;
end;
(Haha, TrainWeakestLevel wouldnt be a bad addition on its own either :D)

Wizzup?

2009-02-25 17:14:28

Isn't there MinA and MaxA?

senrath

2009-02-25 18:12:01

From: Wizzup?
Isn't there MinA and MaxA?


It's AMin and AMax, but yes.

lordsaturn

2009-02-25 19:38:51

Much quicker:
function MinEx(a: TIntegerArray; var where: integer): integer;
begin
Result := AMin(a);
InIntArrayEx(a, where, Result);
end;

function MaxEx(a: TIntegerArray; var where: integer): integer;
begin
Result := AMax(a);
InIntArrayEx(a, where, Result);
end;

marpis

2009-02-26 00:46:56

oh noes.