aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.be>2021-08-12 17:50:45 +0200
committerAbigail <abigail@abigail.be>2021-08-12 17:50:45 +0200
commita1e6d2389d3af8169fe5076b00f928d153c69ce7 (patch)
treef989454660ca13c109e60425ad4d2daf9d78bc25
parent525d5e4033d2a97406ecf9b4fbc52902c8e2210d (diff)
downloadperlweeklychallenge-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.md2
-rw-r--r--challenge-125/abigail/awk/ch-1.awk44
-rw-r--r--challenge-125/abigail/go/ch-1.go61
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;
+ }
+ }
+}