aboutsummaryrefslogtreecommitdiff
path: root/challenge-192/roger-bell-west/lua/ch-2.lua
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-192/roger-bell-west/lua/ch-2.lua')
-rwxr-xr-xchallenge-192/roger-bell-west/lua/ch-2.lua61
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("")