aboutsummaryrefslogtreecommitdiff
path: root/challenge-173/deadmarshal/lua
diff options
context:
space:
mode:
authorWalt Mankowski <waltman@pobox.com>2022-07-17 10:56:32 -0400
committerGitHub <noreply@github.com>2022-07-17 10:56:32 -0400
commit45f08a5e1866678d6ac9e42e30afd3a1d5d53fe6 (patch)
tree3f77242a19900a639e6cbc7e6074958bfc465c35 /challenge-173/deadmarshal/lua
parent37698ededed833b0c0d49ac0e44d5d01025e8b0e (diff)
parentef0acd3af69b9cc99dea234b2ab4670e52bb506e (diff)
downloadperlweeklychallenge-club-45f08a5e1866678d6ac9e42e30afd3a1d5d53fe6.tar.gz
perlweeklychallenge-club-45f08a5e1866678d6ac9e42e30afd3a1d5d53fe6.tar.bz2
perlweeklychallenge-club-45f08a5e1866678d6ac9e42e30afd3a1d5d53fe6.zip
Merge branch 'master' into branch-for-challenge-173-python
Diffstat (limited to 'challenge-173/deadmarshal/lua')
-rw-r--r--challenge-173/deadmarshal/lua/ch-1.lua23
-rw-r--r--challenge-173/deadmarshal/lua/ch-2.lua24
2 files changed, 47 insertions, 0 deletions
diff --git a/challenge-173/deadmarshal/lua/ch-1.lua b/challenge-173/deadmarshal/lua/ch-1.lua
new file mode 100644
index 0000000000..c25a62fb47
--- /dev/null
+++ b/challenge-173/deadmarshal/lua/ch-1.lua
@@ -0,0 +1,23 @@
+if #arg ~= 1 then
+ io.stderr:write('No args provided!')
+ os.exit(1)
+end
+
+local function is_esthetic_number(n)
+ assert(type(n) == 'number', 'n must be a number!')
+ local function uabs(a, b)
+ if a < b then return b - a else return a - b end
+ end
+ if n == 0 then return false end
+ local i = n % 10
+ n = n // 10
+ while n > 0 do
+ local j = n % 10
+ if uabs(i, j) ~= 1 then return false end
+ n = n // 10
+ i = j
+ end
+ return true
+end
+
+print(is_esthetic_number(tonumber(arg[1])))
diff --git a/challenge-173/deadmarshal/lua/ch-2.lua b/challenge-173/deadmarshal/lua/ch-2.lua
new file mode 100644
index 0000000000..1cca518763
--- /dev/null
+++ b/challenge-173/deadmarshal/lua/ch-2.lua
@@ -0,0 +1,24 @@
+-- https://github.com/edubart/lua-bint
+-- To install this library: luarocks install bint
+local bint = require 'bint'(1024)
+
+local function product(t, last)
+ assert(type(t) == 'table' and
+ type(last) == 'number',
+ 't, last must be table, number, number respectively!')
+ local prod = bint(1)
+ for i=1, last do prod = prod * t[i] end
+ return prod
+end
+
+local function sylvesters_sequence()
+ local t = {2,3}
+ while(#t ~= 10) do
+ t[#t+1] = bint(product(t, #t) + 1)
+ end
+ return t
+end
+
+local t = sylvesters_sequence()
+for i=1, #t do print(t[i]) end
+