diff options
| -rw-r--r-- | challenge-100/abigail/README.md | 1 | ||||
| -rw-r--r-- | challenge-100/abigail/lua/ch-2.lua | 41 |
2 files changed, 42 insertions, 0 deletions
diff --git a/challenge-100/abigail/README.md b/challenge-100/abigail/README.md index c3d1134d80..7e4cf910e0 100644 --- a/challenge-100/abigail/README.md +++ b/challenge-100/abigail/README.md @@ -82,6 +82,7 @@ The minimum path sum from top to bottom: 3 + 1 + 2 + 1 = 7 * [AWK](awk/ch-2.awk) * [Bash](bash/ch-2.sh) * [C](c/ch-2.c) +* [Lua](lua/ch-2.lua) * [Perl](perl/ch-2.pl) ### Blog diff --git a/challenge-100/abigail/lua/ch-2.lua b/challenge-100/abigail/lua/ch-2.lua new file mode 100644 index 0000000000..d3e3b3b1d1 --- /dev/null +++ b/challenge-100/abigail/lua/ch-2.lua @@ -0,0 +1,41 @@ +#!/opt/local/bin/lua + +-- +-- See ../README.md +-- + +-- +-- Run as: lua ch-2.lua < input-file +-- + +local numbers = {} + +-- +-- Read in the data +-- +for line in io . lines () do + local row = {} + for n in line : gsub ("\n", "") : gmatch ("-?%d+") do + table . insert (row, n) + end + table . insert (numbers, row) +end + +-- +-- Calculate minimum path, bottom to top +-- +for x = #numbers - 1, 1, -1 do + local row = numbers [x] + for y = 1, #row do + min = numbers [x + 1] [y] + if numbers [x + 1] [y + 1] < min + then min = numbers [x + 1] [y + 1] + end + numbers [x] [y] = numbers [x] [y] + min + end +end + +-- +-- Print result +-- +print (numbers [1] [1]) |
