aboutsummaryrefslogtreecommitdiff
path: root/challenge-306/roger-bell-west/lua
diff options
context:
space:
mode:
authorRoger Bell_West <roger@firedrake.org>2025-01-28 12:18:54 +0000
committerRoger Bell_West <roger@firedrake.org>2025-01-28 12:18:54 +0000
commitffd1c49cd82e7bd0be11ad57ac31090c0dc99b2e (patch)
treeb2ef3d7b4f57f9c049bbc3d1279f32074b4c3470 /challenge-306/roger-bell-west/lua
parent4bb3874d4bbd36d0b85b74031a74479faa9306b7 (diff)
downloadperlweeklychallenge-club-ffd1c49cd82e7bd0be11ad57ac31090c0dc99b2e.tar.gz
perlweeklychallenge-club-ffd1c49cd82e7bd0be11ad57ac31090c0dc99b2e.tar.bz2
perlweeklychallenge-club-ffd1c49cd82e7bd0be11ad57ac31090c0dc99b2e.zip
RogerBW solutions for challenge no. 306
Diffstat (limited to 'challenge-306/roger-bell-west/lua')
-rwxr-xr-xchallenge-306/roger-bell-west/lua/ch-1.lua43
-rwxr-xr-xchallenge-306/roger-bell-west/lua/ch-2.lua34
2 files changed, 77 insertions, 0 deletions
diff --git a/challenge-306/roger-bell-west/lua/ch-1.lua b/challenge-306/roger-bell-west/lua/ch-1.lua
new file mode 100755
index 0000000000..1ab8b6d95c
--- /dev/null
+++ b/challenge-306/roger-bell-west/lua/ch-1.lua
@@ -0,0 +1,43 @@
+#! /usr/bin/lua
+
+function windowed(a, n)
+ local out = {}
+ for i = 1, #a - n + 1 do
+ local t = {}
+ for j = i, i + n - 1 do
+ table.insert(t, a[j])
+ end
+ table.insert(out, t)
+ end
+ return out
+end
+
+function oddsum(a)
+ local out = 0
+ local l = 1
+ while l <= #a do
+ for _i, s in ipairs(windowed(a, l)) do
+ for _j, nn in ipairs(s) do
+ out = out + nn
+ end
+ end
+ l = l + 2
+ end
+ return out
+end
+
+
+if oddsum({2, 5, 3, 6, 4}) == 77 then
+ io.write("Pass")
+else
+ io.write("FAIL")
+end
+io.write(" ")
+
+if oddsum({1, 3}) == 4 then
+ io.write("Pass")
+else
+ io.write("FAIL")
+end
+print("")
+
diff --git a/challenge-306/roger-bell-west/lua/ch-2.lua b/challenge-306/roger-bell-west/lua/ch-2.lua
new file mode 100755
index 0000000000..1d3179e5cb
--- /dev/null
+++ b/challenge-306/roger-bell-west/lua/ch-2.lua
@@ -0,0 +1,34 @@
+#! /usr/bin/lua
+
+function lastelement(a)
+ local b = a
+ while true do
+ table.sort(b)
+ local f = table.remove(b, #b)
+ local s = table.remove(b, #b)
+ if f > s then
+ table.insert(b, f - s)
+ end
+ if #b == 0 then
+ return 0
+ end
+ if #b == 1 then
+ return b[1]
+ end
+ end
+end
+
+if lastelement({3, 8, 5, 2, 9, 2}) == 1 then
+ io.write("Pass")
+else
+ io.write("FAIL")
+end
+io.write(" ")
+
+if lastelement({3, 2, 5}) == 0 then
+ io.write("Pass")
+else
+ io.write("FAIL")
+end
+print("")
+