diff options
Diffstat (limited to 'challenge-192/roger-bell-west/lua/ch-2.lua')
| -rwxr-xr-x | challenge-192/roger-bell-west/lua/ch-2.lua | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/challenge-192/roger-bell-west/lua/ch-2.lua b/challenge-192/roger-bell-west/lua/ch-2.lua new file mode 100755 index 0000000000..90a1afe43c --- /dev/null +++ b/challenge-192/roger-bell-west/lua/ch-2.lua @@ -0,0 +1,61 @@ +#! /usr/bin/lua + +function equaldistribution(list) + local s = 0 + for i,v in ipairs(list) do + s = s + v + end + if s % #list ~= 0 then + return -1 + end + local m = s / #list + local out = 0 + local w = list + while true do + for i = 1,#w-1 do + if w[i] > m then + v = w[i] - m + w[i+1] = w[i+1] + v + out = out + v + w[i] = m + elseif w[i] < m then + v = math.min(m - w[i], w[i+1]) + w[i+1] = w[i+1] - v + out = out + v + w[i] = w[i] + v + end + end + local done = true + for i,v in ipairs(w) do + if v ~= m then + done = false + break + end + end + if done then + break + end + end + return out +end + +if equaldistribution({1, 0, 5}) == 4 then + io.write("Pass") +else + io.write("FAIL") +end +io.write(" ") + +if equaldistribution({0, 2, 0}) == -1 then + io.write("Pass") +else + io.write("FAIL") +end +io.write(" ") + +if equaldistribution({0, 3, 0}) == 2 then + io.write("Pass") +else + io.write("FAIL") +end +print("") |
