aboutsummaryrefslogtreecommitdiff
path: root/challenge-096/tyler-wardhaugh/lua/ch-2.lua
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-01-21 01:54:35 +0000
committerGitHub <noreply@github.com>2021-01-21 01:54:35 +0000
commit878d7ba2b2e95df8d0d59caa63019c1ac8cd198f (patch)
tree8335b89b59173681dc8ee0fe75c74fd79824861c /challenge-096/tyler-wardhaugh/lua/ch-2.lua
parent56877338c2addcd41e2a8685b205f505963827b2 (diff)
parentd803b8295cb052657601c0f90392afac7b5fde47 (diff)
downloadperlweeklychallenge-club-878d7ba2b2e95df8d0d59caa63019c1ac8cd198f.tar.gz
perlweeklychallenge-club-878d7ba2b2e95df8d0d59caa63019c1ac8cd198f.tar.bz2
perlweeklychallenge-club-878d7ba2b2e95df8d0d59caa63019c1ac8cd198f.zip
Merge pull request #3328 from tylerw/tw/challenge-096
Challenge 096
Diffstat (limited to 'challenge-096/tyler-wardhaugh/lua/ch-2.lua')
-rwxr-xr-xchallenge-096/tyler-wardhaugh/lua/ch-2.lua50
1 files changed, 50 insertions, 0 deletions
diff --git a/challenge-096/tyler-wardhaugh/lua/ch-2.lua b/challenge-096/tyler-wardhaugh/lua/ch-2.lua
new file mode 100755
index 0000000000..c94022f48c
--- /dev/null
+++ b/challenge-096/tyler-wardhaugh/lua/ch-2.lua
@@ -0,0 +1,50 @@
+local t2 = {}
+t2.DEFAULT_INPUT = {'kitten', 'sitting'}
+
+function t2.zeros_matrix(m, n)
+ local matrix = {}
+ for i = 1, m do
+ matrix[i] = {}
+ for j = 1, n do
+ matrix[i][j] = 0
+ end
+ end
+ return matrix
+ end
+
+function t2.edit_distance(s1, s2)
+ local m = #s1
+ local n = #s2
+ local dp = t2.zeros_matrix(m, n)
+
+ for i = 1, m do
+ for j = 1, n do
+ if i == 1 then
+ dp[i][j] = j
+ elseif j == 1 then
+ dp[i][j] = i
+ elseif s1:sub(i, i) == s2:sub(j, j) then
+ dp[i][j] = dp[i - 1][j - 1]
+ else
+ dp[i][j] = 1 + math.min(dp[i][j - 1],
+ dp[i - 1][j],
+ dp[i - 1][j - 1])
+ end
+ end
+ end
+
+ return dp[m][n]
+end
+
+function t2.run(args)
+ local s1, s2
+ if #args > 0 then
+ s1, s2 = args[1], args[2]
+ else
+ s1, s2 = table.unpack(t2.DEFAULT_INPUT)
+ end
+
+ print(t2.edit_distance(s1, s2))
+end
+
+return t2