diff options
| author | Michael Firkins <michael@firkins> | 2023-11-07 18:45:30 +1100 |
|---|---|---|
| committer | Michael Firkins <michael@firkins> | 2023-11-07 20:32:57 +1100 |
| commit | b4afa897c67454d274607b8a367ba5d980e0136b (patch) | |
| tree | a91aba81b044921fe79ed1669b84c99da8633641 | |
| parent | fc617cb1d972620a289435540faa93c6f5f956e1 (diff) | |
| download | perlweeklychallenge-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.go | 76 | ||||
| -rw-r--r-- | challenge-242/pokgopun/go/ch-2.go | 88 |
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)) + } +} |
