aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Firkins <michael@firkins>2023-11-07 18:45:30 +1100
committerMichael Firkins <michael@firkins>2023-11-07 20:32:57 +1100
commitb4afa897c67454d274607b8a367ba5d980e0136b (patch)
treea91aba81b044921fe79ed1669b84c99da8633641
parentfc617cb1d972620a289435540faa93c6f5f956e1 (diff)
downloadperlweeklychallenge-club-b4afa897c67454d274607b8a367ba5d980e0136b.tar.gz
perlweeklychallenge-club-b4afa897c67454d274607b8a367ba5d980e0136b.tar.bz2
perlweeklychallenge-club-b4afa897c67454d274607b8a367ba5d980e0136b.zip
pwc242 solution in go
-rw-r--r--challenge-242/pokgopun/go/ch-1.go76
-rw-r--r--challenge-242/pokgopun/go/ch-2.go88
2 files changed, 164 insertions, 0 deletions
diff --git a/challenge-242/pokgopun/go/ch-1.go b/challenge-242/pokgopun/go/ch-1.go
new file mode 100644
index 0000000000..697e9f4c06
--- /dev/null
+++ b/challenge-242/pokgopun/go/ch-1.go
@@ -0,0 +1,76 @@
+//# https://theweeklychallenge.org/blog/perl-weekly-challenge-242/
+/*#
+
+Task 1: Missing Members
+
+Submitted by: [42]Mohammad S Anwar
+ __________________________________________________________________
+
+ You are given two arrays of integers.
+
+ Write a script to find out the missing members in each other arrays.
+
+Example 1
+
+Input: @arr1 = (1, 2, 3)
+ @arr2 = (2, 4, 6)
+Output: ([1, 3], [4, 6])
+
+(1, 2, 3) has 2 members (1, 3) missing in the array (2, 4, 6).
+(2, 4, 6) has 2 members (4, 6) missing in the array (1, 2, 3).
+
+Example 2
+
+Input: @arr1 = (1, 2, 3, 3)
+ @arr2 = (1, 1, 2, 2)
+Output: ([3])
+
+(1, 2, 3, 3) has 2 members (3, 3) missing in the array (1, 1, 2, 2). Since they
+are same, keep just one.
+(1, 1, 2, 2) has 0 member missing in the array (1, 2, 3, 3).
+
+Task 2: Flip Matrix
+#*/
+//# solution by pokgopun@gmail.com
+
+package main
+
+import (
+ "fmt"
+ "reflect"
+ "slices"
+)
+
+type arr []int
+
+type arrp struct {
+ arr1, arr2 arr
+}
+
+func (ap arrp) missing() (sa []arr) {
+ ap.arr1 = slices.Compact(ap.arr1)
+ ap.arr2 = slices.Compact(ap.arr2)
+ aa := [2]arr{ap.arr1, ap.arr2}
+ for i, v := range aa {
+ arr0 := make(arr, len(v))
+ copy(arr0, v)
+ arr0 = slices.DeleteFunc(arr0, func(n int) bool {
+ return slices.Contains(aa[i^1], n)
+ })
+ if len(arr0) > 0 {
+ sa = append(sa, arr0)
+ }
+ }
+ return sa
+}
+func main() {
+ for _, data := range []struct {
+ input arrp
+ output []arr
+ }{
+ {arrp{arr{1, 2, 3}, arr{2, 4, 6}}, []arr{arr{1, 3}, arr{4, 6}}},
+ {arrp{arr{1, 2, 3, 3}, arr{1, 1, 2, 2}}, []arr{arr{3}}},
+ } {
+ fmt.Println(reflect.DeepEqual(data.input.missing(), data.output))
+ }
+}
diff --git a/challenge-242/pokgopun/go/ch-2.go b/challenge-242/pokgopun/go/ch-2.go
new file mode 100644
index 0000000000..1ab3904423
--- /dev/null
+++ b/challenge-242/pokgopun/go/ch-2.go
@@ -0,0 +1,88 @@
+//# https://theweeklychallenge.org/blog/perl-weekly-challenge-242/
+/*#
+
+Task 2: Flip Matrix
+
+Submitted by: [43]Mohammad S Anwar
+ __________________________________________________________________
+
+ You are given n x n binary matrix.
+
+ Write a script to flip the given matrix as below.
+1 1 0
+0 1 1
+0 0 1
+
+a) Reverse each row
+
+0 1 1
+1 1 0
+1 0 0
+
+b) Invert each member
+
+1 0 0
+0 0 1
+0 1 1
+
+Example 1
+
+Input: @matrix = ([1, 1, 0], [1, 0, 1], [0, 0, 0])
+Output: ([1, 0, 0], [0, 1, 0], [1, 1, 1])
+
+Example 2
+
+Input: @matrix = ([1, 1, 0, 0], [1, 0, 0, 1], [0, 1, 1, 1], [1, 0, 1, 0])
+Output: ([1, 1, 0, 0], [0, 1, 1, 0], [0, 0, 0, 1], [1, 0, 1, 0])
+ __________________________________________________________________
+
+ Last date to submit the solution 23:59 (UK Time) Sunday 12th November
+ 2023.
+ __________________________________________________________________
+
+SO WHAT DO YOU THINK ?
+#*/
+//# solution by pokgopun@gmail.com
+
+package main
+
+import (
+ "fmt"
+ "reflect"
+ "slices"
+)
+
+type row []int
+
+func (r row) invert() row {
+ for i := range r {
+ r[i] ^= 1
+ }
+ return r
+}
+
+func (r row) reverse() row {
+ slices.Reverse(r)
+ return r
+}
+
+type matrix []row
+
+func (m matrix) flip() matrix {
+ for _, v := range m {
+ v.invert().reverse()
+ }
+ return m
+}
+
+func main() {
+ for _, data := range []struct {
+ input, output matrix
+ }{
+ {matrix{row{1, 1, 0}, row{1, 0, 1}, row{0, 0, 0}}, matrix{row{1, 0, 0}, row{0, 1, 0}, row{1, 1, 1}}},
+ {matrix{row{1, 1, 0, 0}, row{1, 0, 0, 1}, row{0, 1, 1, 1}, row{1, 0, 1, 0}}, matrix{row{1, 1, 0, 0}, row{0, 1, 1, 0}, row{0, 0, 0, 1}, row{1, 0, 1, 0}}},
+ } {
+ //fmt.Println(data.input, data.output)
+ fmt.Println(reflect.DeepEqual(data.input.flip(), data.output))
+ }
+}