40 lines
1 KiB
Text
40 lines
1 KiB
Text
$ include "seed7_05.s7i";
|
|
|
|
const array integer: numList is [] (-7, 1, 5, 2, -4, 3, 0);
|
|
|
|
const func array integer: equilibriumIndex (in array integer: elements) is func
|
|
result
|
|
var array integer: indexList is 0 times 0;
|
|
local
|
|
var integer: element is 0;
|
|
var integer: index is 0;
|
|
var integer: sum is 0;
|
|
var integer: subSum is 0;
|
|
var integer: count is 0;
|
|
begin
|
|
indexList := length(elements) times 0;
|
|
for element range elements do
|
|
sum +:= element;
|
|
end for;
|
|
for element key index range elements do
|
|
if 2 * subSum + element = sum then
|
|
incr(count);
|
|
indexList[count] := index;
|
|
end if;
|
|
subSum +:= element;
|
|
end for;
|
|
indexList := indexList[.. count];
|
|
end func;
|
|
|
|
const proc: main is func
|
|
local
|
|
var array integer: indexList is 0 times 0;
|
|
var integer: element is 0;
|
|
begin
|
|
indexList := equilibriumIndex(numList);
|
|
write("Found:");
|
|
for element range indexList do
|
|
write(" " <& element);
|
|
end for;
|
|
writeln;
|
|
end func;
|