aboutsummaryrefslogtreecommitdiff
path: root/challenge-140/abigail/lua
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.be>2021-11-23 16:00:43 +0100
committerAbigail <abigail@abigail.be>2021-11-25 17:19:51 +0100
commitfb39699b31d65405e7d104ee2b1c1c4edcdf51a8 (patch)
treee33b7f66d49b274f4a8a322f2651d87d9d400b78 /challenge-140/abigail/lua
parentfd4849655113ac9706753441de784780cc72c389 (diff)
downloadperlweeklychallenge-club-fb39699b31d65405e7d104ee2b1c1c4edcdf51a8.tar.gz
perlweeklychallenge-club-fb39699b31d65405e7d104ee2b1c1c4edcdf51a8.tar.bz2
perlweeklychallenge-club-fb39699b31d65405e7d104ee2b1c1c4edcdf51a8.zip
Solutions for week 140, part 1.
Diffstat (limited to 'challenge-140/abigail/lua')
-rw-r--r--challenge-140/abigail/lua/ch-1.lua28
-rw-r--r--challenge-140/abigail/lua/ch-2.lua30
2 files changed, 58 insertions, 0 deletions
diff --git a/challenge-140/abigail/lua/ch-1.lua b/challenge-140/abigail/lua/ch-1.lua
new file mode 100644
index 0000000000..b0ad7ae3fd
--- /dev/null
+++ b/challenge-140/abigail/lua/ch-1.lua
@@ -0,0 +1,28 @@
+#!/opt/local/bin/lua
+
+--
+-- See ../README.md
+--
+
+--
+-- Run as: lua ch-1.lua < input-file
+--
+
+function dec2bin (dec)
+ local bin = {}
+ local out = ""
+ while dec > 0 do
+ bin [#bin + 1] = dec % 2
+ dec = math . floor (dec / 2)
+ end
+ for i = #bin, 1, -1 do
+ out = out .. bin [i]
+ end
+ return out
+end
+
+
+for line in io . lines () do
+ _, _, a, b = line : find ("([01]+)%s+([01]+)")
+ print (dec2bin (tonumber (a, 2) + tonumber (b, 2)))
+end
diff --git a/challenge-140/abigail/lua/ch-2.lua b/challenge-140/abigail/lua/ch-2.lua
new file mode 100644
index 0000000000..601fc35041
--- /dev/null
+++ b/challenge-140/abigail/lua/ch-2.lua
@@ -0,0 +1,30 @@
+#!/opt/local/bin/lua
+
+--
+-- See ../README.md
+--
+
+--
+-- Run as: lua ch-2.lua < input-file
+--
+
+for line in io . lines () do
+ local _, _, i, j, k = line : find ("([0-9]+)%s+([0-9]+)%s+([0-9]+)")
+ i = tonumber (i)
+ j = tonumber (j)
+ k = tonumber (k)
+
+ local n = 0
+ while k > 0 do
+ n = n + 1
+ local s = math . floor (math . sqrt (n))
+ for d = 1, s do
+ if n % d == 0 then
+ if d <= i and n / d <= j then k = k - 1 end
+ if d <= j and n / d <= i then k = k - 1 end
+ if n == d * d then k = k + 1 end
+ end
+ end
+ end
+ print (n)
+end