aboutsummaryrefslogtreecommitdiff
path: root/challenge-133/abigail/lua
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.be>2021-11-05 20:58:51 +0100
committerAbigail <abigail@abigail.be>2021-11-05 20:58:51 +0100
commita0298e354570ba3ebf90abaeaf9f2af3b58702e7 (patch)
treeb0aaf38d1443e4d6cf21dd5dc476a5fa2c65e974 /challenge-133/abigail/lua
parent62496f0a55d58841ca5b56cc386a329285d8e35d (diff)
downloadperlweeklychallenge-club-a0298e354570ba3ebf90abaeaf9f2af3b58702e7.tar.gz
perlweeklychallenge-club-a0298e354570ba3ebf90abaeaf9f2af3b58702e7.tar.bz2
perlweeklychallenge-club-a0298e354570ba3ebf90abaeaf9f2af3b58702e7.zip
AWK, Bash, Lua, Node.js, Python and Ruby solutions for week 133, part 2.
Diffstat (limited to 'challenge-133/abigail/lua')
-rw-r--r--challenge-133/abigail/lua/ch-2.lua53
1 files changed, 53 insertions, 0 deletions
diff --git a/challenge-133/abigail/lua/ch-2.lua b/challenge-133/abigail/lua/ch-2.lua
new file mode 100644
index 0000000000..45120a21b3
--- /dev/null
+++ b/challenge-133/abigail/lua/ch-2.lua
@@ -0,0 +1,53 @@
+#!/opt/local/bin/lua
+
+--
+-- See ../README.md
+--
+
+--
+-- Run as: lua ch-2.lua
+--
+
+local small_primes = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31}
+
+function factorize (num)
+ local out = {}
+ for _, prime in ipairs (small_primes) do
+ while num % prime == 0 do
+ table . insert (out, prime)
+ num = num / prime
+ end
+ end
+ if num > 1 then
+ table . insert (out, num)
+ end
+ return (out)
+end
+
+
+function digit_sum (numbers)
+ local sum = 0
+ for _, number in pairs (numbers) do
+ while number > 0 do
+ sum = sum + number % 10
+ number = math . floor (number / 10)
+ end
+ end
+ return (sum)
+end
+
+
+local number = 1
+local count = 0
+
+
+while count < 10 do
+ local factors = factorize (number)
+ if #factors > 1 then
+ if digit_sum ({number}) == digit_sum (factors) then
+ print (number)
+ count = count + 1
+ end
+ end
+ number = number + 1
+end