aboutsummaryrefslogtreecommitdiff
path: root/challenge-333/roger-bell-west/lua/ch-1.lua
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2025-08-05 23:40:48 +0100
committerGitHub <noreply@github.com>2025-08-05 23:40:48 +0100
commita22bb8cbcd61aeacf38a434716538f112a6c6ad6 (patch)
tree665d07cc6b51402957d014c09f46683c0d2eb74d /challenge-333/roger-bell-west/lua/ch-1.lua
parent153f22e7dc6b1860d8561da89efeeefdfa83eab9 (diff)
parenta57a3a568368c406944dd042728ed141b66a02a3 (diff)
downloadperlweeklychallenge-club-a22bb8cbcd61aeacf38a434716538f112a6c6ad6.tar.gz
perlweeklychallenge-club-a22bb8cbcd61aeacf38a434716538f112a6c6ad6.tar.bz2
perlweeklychallenge-club-a22bb8cbcd61aeacf38a434716538f112a6c6ad6.zip
Merge pull request #12473 from Firedrake/rogerbw-challenge-333
RogerBW solutions for challenge no. 333
Diffstat (limited to 'challenge-333/roger-bell-west/lua/ch-1.lua')
-rwxr-xr-xchallenge-333/roger-bell-west/lua/ch-1.lua70
1 files changed, 70 insertions, 0 deletions
diff --git a/challenge-333/roger-bell-west/lua/ch-1.lua b/challenge-333/roger-bell-west/lua/ch-1.lua
new file mode 100755
index 0000000000..7a5ff61942
--- /dev/null
+++ b/challenge-333/roger-bell-west/lua/ch-1.lua
@@ -0,0 +1,70 @@
+#! /usr/bin/lua
+
+function straightline(a)
+ local b = {}
+ for _, xy in ipairs(a) do
+ local u = true
+ for __, bxy in ipairs(b) do
+ if xy[1] == bxy[1] and xy[2] == bxy[2] then
+ u = false
+ break
+ end
+ end
+ if u then
+ table.insert(b, xy)
+ end
+ end
+ if #b < 3 then
+ return true
+ end
+ local p = b[1][1]
+ local q = b[2][1] - b[1][1]
+ local r = b[1][2]
+ local s = b[2][2] - b[1][2]
+ for tp = 2, #b do
+ local tpair = b[tp]
+ if q == 0 and tpair[1] ~= b[1][1] then
+ return false
+ end
+ if s == 0 and tpair[2] ~= b[1][2] then
+ return false
+ end
+ if q ~= 0 and s ~= 0 then
+ local n1 = (tpair[1] - p) / q
+ local n2 = (tpair[2] - r) / s
+ if n1 ~= n2 then
+ return false
+ end
+ end
+ end
+ return true
+end
+
+if straightline({{2, 1}, {2, 3}, {2, 5}}) then
+ io.write("Pass")
+else
+ io.write("FAIL")
+end
+io.write(" ")
+
+if straightline({{1, 4}, {3, 4}, {10, 4}}) then
+ io.write("Pass")
+else
+ io.write("FAIL")
+end
+io.write(" ")
+
+if not straightline({{0, 0}, {1, 1}, {2, 3}}) then
+ io.write("Pass")
+else
+ io.write("FAIL")
+end
+io.write(" ")
+
+if straightline({{1, 1}, {1, 1}, {1, 1}}) then
+ io.write("Pass")
+else
+ io.write("FAIL")
+end
+print("")
+