From a3f595d255809dfb78e43d0179cbefd67a5a1c62 Mon Sep 17 00:00:00 2001 From: Abigail Date: Sat, 15 Jan 2022 16:30:51 +0100 Subject: Week 147: Go solutions --- challenge-147/abigail/go/ch-1.go | 56 ++++++++++++++++++++++++++++++++++++++++ challenge-147/abigail/go/ch-2.go | 31 ++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 challenge-147/abigail/go/ch-1.go create mode 100644 challenge-147/abigail/go/ch-2.go diff --git a/challenge-147/abigail/go/ch-1.go b/challenge-147/abigail/go/ch-1.go new file mode 100644 index 0000000000..a71d770cb3 --- /dev/null +++ b/challenge-147/abigail/go/ch-1.go @@ -0,0 +1,56 @@ +package main + +// +// See https://theweeklychallenge.org/blog/perl-weekly-challenge-147 +// + +// +// Run as: go run ch-1.go +// + +import ( + "fmt" +) + +func is_prime (num int) bool { + if num == 2 { + return true + } + if num % 2 == 0 { + return false + } + for i := 3; i * i <= num; i += 2 { + if num % i == 0 { + return false + } + } + return true +} + +func main () { + todo := [] int {2, 3, 5, 7} + for _, n := range todo { + fmt . Printf ("%d ", n) + } + count := 20 - len (todo) + pow := 10 + for count > 0 && len (todo) > 0 { + new_todo := [] int {} + for d := 1; (d <= 9) && (count > 0); d ++ { + for _, p := range (todo) { + candidate := d * pow + p + if is_prime (candidate) { + fmt . Printf ("%d ", candidate) + new_todo = append (new_todo, candidate) + count -- + } + if count <= 0 { + break + } + } + } + todo = new_todo + pow *= 10 + } + fmt . Print ("\n") +} diff --git a/challenge-147/abigail/go/ch-2.go b/challenge-147/abigail/go/ch-2.go new file mode 100644 index 0000000000..13fe915ad4 --- /dev/null +++ b/challenge-147/abigail/go/ch-2.go @@ -0,0 +1,31 @@ +package main + +// +// See https://theweeklychallenge.org/blog/perl-weekly-challenge-147 +// + +// +// Run as: go run ch-2.go +// + +import ( + "fmt" +) + +func main () { + p := 0 + n := 0 + pentagon := map [int] bool { } + for { + p = p + n + n + n + 1 + n ++ + pentagon [p] = true + for seen := range pentagon { + if seen + seen < p && pentagon [p - seen] && + pentagon [p - seen - seen] { + fmt . Printf ("%d %d\n", seen, p - seen) + return + } + } + } +} -- cgit