aboutsummaryrefslogtreecommitdiff
path: root/challenge-095
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-01-17 01:36:49 +0000
committerGitHub <noreply@github.com>2021-01-17 01:36:49 +0000
commitca7cf00e5118ff8b5736155022cdd301d88dbb8c (patch)
tree81686bac9eb0304b2cf6e781ead7027cc941d450 /challenge-095
parent61ea26ae214e6ac815922166efe020184f3d39f9 (diff)
parentc9b4b9cc938582beea85b53056c1a6e88fb5419e (diff)
downloadperlweeklychallenge-club-ca7cf00e5118ff8b5736155022cdd301d88dbb8c.tar.gz
perlweeklychallenge-club-ca7cf00e5118ff8b5736155022cdd301d88dbb8c.tar.bz2
perlweeklychallenge-club-ca7cf00e5118ff8b5736155022cdd301d88dbb8c.zip
Merge pull request #3278 from tylerw/tw/challenge-095
Ch95 (Lua): Task 1 & 2
Diffstat (limited to 'challenge-095')
-rw-r--r--challenge-095/tyler-wardhaugh/lua/README.md4
-rwxr-xr-xchallenge-095/tyler-wardhaugh/lua/ch-1.lua39
-rwxr-xr-xchallenge-095/tyler-wardhaugh/lua/ch-2.lua58
-rwxr-xr-xchallenge-095/tyler-wardhaugh/lua/run.lua9
-rwxr-xr-xchallenge-095/tyler-wardhaugh/lua/test.lua12
5 files changed, 120 insertions, 2 deletions
diff --git a/challenge-095/tyler-wardhaugh/lua/README.md b/challenge-095/tyler-wardhaugh/lua/README.md
index 5e25cb80fd..4898f791cd 100644
--- a/challenge-095/tyler-wardhaugh/lua/README.md
+++ b/challenge-095/tyler-wardhaugh/lua/README.md
@@ -1,13 +1,13 @@
# The Weekly Challenge
-The Weekly Challenge - #091 - Tyler Wardhaugh
+The Weekly Challenge - #095 - Tyler Wardhaugh
## Usage
Run Task 1:
- $ ./run.lua ch-1 S1 S2 S3...
+ $ ./run.lua ch-1 N
Run Task 2:
diff --git a/challenge-095/tyler-wardhaugh/lua/ch-1.lua b/challenge-095/tyler-wardhaugh/lua/ch-1.lua
new file mode 100755
index 0000000000..c1bdcad5bf
--- /dev/null
+++ b/challenge-095/tyler-wardhaugh/lua/ch-1.lua
@@ -0,0 +1,39 @@
+#!/usr/bin/env lua
+
+local t1 = {}
+t1.DEFAULT_INPUT = 1221
+
+function t1.is_palindrome(n)
+ local nstr = tostring(n)
+ local mid = #nstr // 2
+
+ local function _is_palindrome(s, e)
+ if e < mid and s > mid then
+ return true
+ elseif nstr:sub(s, s) ~= nstr:sub(e, e) then
+ return false
+ else
+ return _is_palindrome(s + 1, e - 1)
+ end
+ end
+
+ return _is_palindrome(1, #nstr)
+end
+
+
+function t1.run(args)
+ local n
+ if #args > 0 then
+ n = tonumber(args[1])
+ else
+ n = t1.DEFAULT_INPUT
+ end
+
+ if t1.is_palindrome(n) then
+ print(1)
+ else
+ print(0)
+ end
+end
+
+return t1
diff --git a/challenge-095/tyler-wardhaugh/lua/ch-2.lua b/challenge-095/tyler-wardhaugh/lua/ch-2.lua
new file mode 100755
index 0000000000..ef01235e13
--- /dev/null
+++ b/challenge-095/tyler-wardhaugh/lua/ch-2.lua
@@ -0,0 +1,58 @@
+#!/usr/bin/env lua
+
+--[[ Stack class ]]--
+Stack = {}
+Stack.__index = Stack
+
+function Stack:new()
+ local stack = {}
+ setmetatable(stack, Stack)
+ stack.stack = {}
+ return stack
+end
+
+function Stack:push(x)
+ table.insert(self.stack, x)
+end
+
+function Stack:pop()
+ return table.remove(self.stack, #self.stack)
+end
+
+function Stack:top()
+ return self.stack[#self.stack]
+end
+
+function Stack:min()
+ local min = self.stack[1]
+ for _, v in ipairs(self.stack) do
+ if v < min then min = v end
+ end
+ return min
+end
+
+function Stack:print(sep)
+ sep = sep or ' '
+ print(table.concat(self.stack, sep))
+end
+
+--[[ Usage ]]--
+local t2 = {}
+
+function t2.demostack()
+ local stack = Stack:new()
+ stack:push(2)
+ stack:push(-1)
+ stack:push(0)
+ stack:pop()
+ print(stack:top())
+ stack:push(0)
+ print(stack:min())
+end
+
+function t2.run(_)
+ print("Running stack demo:")
+ t2.demostack()
+end
+
+return t2
diff --git a/challenge-095/tyler-wardhaugh/lua/run.lua b/challenge-095/tyler-wardhaugh/lua/run.lua
new file mode 100755
index 0000000000..c6e7473bee
--- /dev/null
+++ b/challenge-095/tyler-wardhaugh/lua/run.lua
@@ -0,0 +1,9 @@
+#!/usr/bin/env lua
+
+local filename = arg[1]
+local run_args = table.move(arg, 2, #arg, 1, {})
+
+io.write(string.format("Running task from '%s' with {%s}:\n",
+ filename, table.concat(run_args, ", ")))
+
+require(filename).run(run_args)
diff --git a/challenge-095/tyler-wardhaugh/lua/test.lua b/challenge-095/tyler-wardhaugh/lua/test.lua
new file mode 100755
index 0000000000..164a3d3e3d
--- /dev/null
+++ b/challenge-095/tyler-wardhaugh/lua/test.lua
@@ -0,0 +1,12 @@
+#!/usr/bin/env lua
+
+require 'busted.runner'()
+
+describe("Task 1, Palindrome Number", function()
+ local t1 = require'ch-1'
+ it("produces correct results for the examples", function()
+ assert.truthy(t1.is_palindrome(1221))
+ assert.falsy(t1.is_palindrome(-101))
+ assert.falsy(t1.is_palindrome(90))
+ end)
+end)