RosettaCodeData/Task/Equilibrium-index/Pluto/equilibrium-index.pluto
2026-04-30 12:34:36 -04:00

29 lines
669 B
Text

local fmt = require "fmt"
local function equilibrium(a)
local len = #a
local equi = {}
if len == 0 then return equi end -- sequence has no indices at all
local rsum = a:reduce(|acc, x| -> acc + x)
local lsum = 0
for i = 1, len do
rsum -= a[i]
if rsum == lsum then equi:insert(i) end
lsum += a[i]
end
return equi
end
local tests = {
{-7, 1, 5, 2, -4, 3, 0},
{2, 4, 6},
{2, 9, 2},
{1, -1, 1, -1, 1, -1, 1},
{1},
{}
}
print("The equilibrium indices for the following sequences are:\n")
for tests as test do
fmt.print("%24s -> %s", fmt.swrite(test), fmt.swrite(equilibrium(test)))
end