diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-01-17 01:36:49 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-01-17 01:36:49 +0000 |
| commit | ca7cf00e5118ff8b5736155022cdd301d88dbb8c (patch) | |
| tree | 81686bac9eb0304b2cf6e781ead7027cc941d450 /challenge-095 | |
| parent | 61ea26ae214e6ac815922166efe020184f3d39f9 (diff) | |
| parent | c9b4b9cc938582beea85b53056c1a6e88fb5419e (diff) | |
| download | perlweeklychallenge-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.md | 4 | ||||
| -rwxr-xr-x | challenge-095/tyler-wardhaugh/lua/ch-1.lua | 39 | ||||
| -rwxr-xr-x | challenge-095/tyler-wardhaugh/lua/ch-2.lua | 58 | ||||
| -rwxr-xr-x | challenge-095/tyler-wardhaugh/lua/run.lua | 9 | ||||
| -rwxr-xr-x | challenge-095/tyler-wardhaugh/lua/test.lua | 12 |
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) |
