RosettaCodeData/Task/Equilibrium-index/Icon/equilibrium-index.icon

17 lines
528 B
Plaintext

procedure main(arglist)
L := if *arglist > 0 then arglist else [-7, 1, 5, 2, -4, 3, 0] # command line args or default
every writes( "equilibrium indicies of [ " | (!L ||" ") | "] = " | (eqindex(L)||" ") | "\n" )
end
procedure eqindex(L) # generate equilibrium points in a list L or fail
local s,l,i
every (s := 0, i := !L) do
s +:= numeric(i) | fail # sum and validate
every (l := 0, i := 1 to *L) do {
if l = (s-L[i])/2 then suspend i
l +:= L[i] # sum of left side
}
end