aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.freedom.nl>2022-01-15 16:30:51 +0100
committerAbigail <abigail@abigail.freedom.nl>2022-01-15 16:50:29 +0100
commita3f595d255809dfb78e43d0179cbefd67a5a1c62 (patch)
tree6dd24e0ff18c452bd767060b6a721b3c4a0d2f95
parent46a9f55050cb852410da9c80c7e248d8df0328a8 (diff)
downloadperlweeklychallenge-club-a3f595d255809dfb78e43d0179cbefd67a5a1c62.tar.gz
perlweeklychallenge-club-a3f595d255809dfb78e43d0179cbefd67a5a1c62.tar.bz2
perlweeklychallenge-club-a3f595d255809dfb78e43d0179cbefd67a5a1c62.zip
Week 147: Go solutions
-rw-r--r--challenge-147/abigail/go/ch-1.go56
-rw-r--r--challenge-147/abigail/go/ch-2.go31
2 files changed, 87 insertions, 0 deletions
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
+ }
+ }
+ }
+}