diff options
| author | Abigail <abigail@abigail.be> | 2021-08-11 00:33:29 +0200 |
|---|---|---|
| committer | Abigail <abigail@abigail.be> | 2021-08-11 00:33:29 +0200 |
| commit | 9fc9a8a98be3336fb1bd9fb909c68af45186744e (patch) | |
| tree | 7d641a5ae4dd9a9f4a41202bd43b33e606e82892 /challenge-125/abigail/lua/ch-1.lua | |
| parent | 3b86d11379632b17ca5328d8b92756e4950f0bfc (diff) | |
| download | perlweeklychallenge-club-9fc9a8a98be3336fb1bd9fb909c68af45186744e.tar.gz perlweeklychallenge-club-9fc9a8a98be3336fb1bd9fb909c68af45186744e.tar.bz2 perlweeklychallenge-club-9fc9a8a98be3336fb1bd9fb909c68af45186744e.zip | |
Solutions in 6 languages for week 125, part 1
Diffstat (limited to 'challenge-125/abigail/lua/ch-1.lua')
| -rw-r--r-- | challenge-125/abigail/lua/ch-1.lua | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/challenge-125/abigail/lua/ch-1.lua b/challenge-125/abigail/lua/ch-1.lua new file mode 100644 index 0000000000..1a0efb40c8 --- /dev/null +++ b/challenge-125/abigail/lua/ch-1.lua @@ -0,0 +1,48 @@ +#!/opt/local/bin/lua + +-- +-- See ../README.md +-- + +-- +-- Run as: lua ch-1.lua < input-file +-- + +function introot (square) + return (math . floor (.4 + math . sqrt (square))) +end + + +for line in io . lines () do + local n = tonumber (line) + if n <= 2 then + print (-1) + goto end_loop + end + + local n_sq = n * n + local c = n + 1 + local c_sq = n_sq + 2 * n + 1 + while 2 * c - 1 <= n_sq do + local b_sq = c_sq - n_sq + local b = introot (b_sq) + + if b_sq == b * b then + print (n .. " " .. b .. " " .. c) + end + + c_sq = c_sq + 2 * c + 1 + c = c + 1 + end + + local max_a = math . floor (n / math . sqrt (2)) + for a = 3, max_a do + local b_sq = n_sq - a * a + local b = introot (b_sq) + if b_sq == b * b then + print (a .. " " .. b .. " " .. n) + end + end + + ::end_loop:: +end |
