diff options
| author | Abigail <abigail@abigail.be> | 2021-08-12 17:50:45 +0200 |
|---|---|---|
| committer | Abigail <abigail@abigail.be> | 2021-08-12 17:50:45 +0200 |
| commit | a1e6d2389d3af8169fe5076b00f928d153c69ce7 (patch) | |
| tree | f989454660ca13c109e60425ad4d2daf9d78bc25 | |
| parent | 525d5e4033d2a97406ecf9b4fbc52902c8e2210d (diff) | |
| download | perlweeklychallenge-club-a1e6d2389d3af8169fe5076b00f928d153c69ce7.tar.gz perlweeklychallenge-club-a1e6d2389d3af8169fe5076b00f928d153c69ce7.tar.bz2 perlweeklychallenge-club-a1e6d2389d3af8169fe5076b00f928d153c69ce7.zip | |
AWK and Go solutions for week 125, part 1.
| -rw-r--r-- | challenge-125/abigail/README.md | 2 | ||||
| -rw-r--r-- | challenge-125/abigail/awk/ch-1.awk | 44 | ||||
| -rw-r--r-- | challenge-125/abigail/go/ch-1.go | 61 |
3 files changed, 107 insertions, 0 deletions
diff --git a/challenge-125/abigail/README.md b/challenge-125/abigail/README.md index f8c6f2595b..85399168ce 100644 --- a/challenge-125/abigail/README.md +++ b/challenge-125/abigail/README.md @@ -29,7 +29,9 @@ Output: -1 ~~~~ ### Solutions +* [AWK](awk/ch-1.awk) * [C](c/ch-1.c) +* [Go](go/ch-1.go) * [Lua](lua/ch-1.lua) * [Node.js](node/ch-1.js) * [Perl](perl/ch-1.pl) diff --git a/challenge-125/abigail/awk/ch-1.awk b/challenge-125/abigail/awk/ch-1.awk new file mode 100644 index 0000000000..1758b7d64d --- /dev/null +++ b/challenge-125/abigail/awk/ch-1.awk @@ -0,0 +1,44 @@ +#!/usr/bin/awk + +# +# See ../README.md +# + +# +# Run as: awk -f ch-1.awk < input-file +# + +function introot (square) { + return (int (.4 + sqrt (square))) +} + + +$1 <= 2 { + print (-1) + next +} + + +{ + n = $1 + n_sq = n * n + c = n + 1 + c_sq = n_sq + 2 * n + 1 + while (2 * c - 1 <= n_sq) { + b_sq = c_sq - n_sq + b = introot(b_sq) + if (b_sq == b * b) { + print n, b, c + } + c_sq += 2 * c ++ + 1 + } + + max_a = int (n / sqrt (2)) + for (a = 3; a <= max_a; a ++) { + b_sq = n_sq - a * a + b = introot(b_sq) + if (b_sq == b * b) { + print a, b, n + } + } +} diff --git a/challenge-125/abigail/go/ch-1.go b/challenge-125/abigail/go/ch-1.go new file mode 100644 index 0000000000..f69846b7ed --- /dev/null +++ b/challenge-125/abigail/go/ch-1.go @@ -0,0 +1,61 @@ +package main + +// +// See ../README.md +// + +// +// Run as: go run ch-1.go +// + +import ( + "fmt" + "math" +) + +func introot (square int) int { + return (int (math . Round (math . Sqrt (float64 (square))))); +} + +func main () { + for { + var n, n_sq, a, max_a, b, b_sq, c, c_sq int; + var count, err = fmt . Scanf ("%d", &n); + if (err != nil || count != 1) { + break; + } + + if (n <= 2) { + fmt . Println ("-1"); + continue; + } + + n_sq = n * n; + c = n + 1; + c_sq = n_sq + 2 * n + 1; + + for 2 * c - 1 <= n_sq { + b_sq = c_sq - n_sq; + b = introot (b_sq); + + if (b_sq == b * b) { + fmt . Printf ("%d %d %d\n", n, b, c); + } + + c_sq += 2 * c + 1; + c += 1; + } + + max_a = int (float64 (n) / math . Sqrt (float64 (2))); + + a = 3; + for a <= max_a { + b_sq = n_sq - a * a + b = introot (b_sq) + if (b_sq == b * b) { + fmt . Printf ("%d %d %d\n", a, b, n); + } + a += 1; + } + } +} |
