diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-07-02 12:44:43 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-02 12:44:43 +0100 |
| commit | e567f05dadbff6685fce0c77ee35446a2c33e507 (patch) | |
| tree | 9f364575051cdb43897a6406e5f0e8193db61910 | |
| parent | 18420c4920b8324a658a7dce7aab0bf2d3475f42 (diff) | |
| parent | c72dac8f5f7406025c8b090db54172c900569e7e (diff) | |
| download | perlweeklychallenge-club-e567f05dadbff6685fce0c77ee35446a2c33e507.tar.gz perlweeklychallenge-club-e567f05dadbff6685fce0c77ee35446a2c33e507.tar.bz2 perlweeklychallenge-club-e567f05dadbff6685fce0c77ee35446a2c33e507.zip | |
Merge pull request #10353 from pokgopun/pwc276
Pwc276
| -rw-r--r-- | challenge-276/pokgopun/go/ch-1.go | 83 | ||||
| -rw-r--r-- | challenge-276/pokgopun/go/ch-2.go | 105 | ||||
| -rw-r--r-- | challenge-276/pokgopun/python/ch-1.py | 62 | ||||
| -rw-r--r-- | challenge-276/pokgopun/python/ch-2.py | 53 |
4 files changed, 303 insertions, 0 deletions
diff --git a/challenge-276/pokgopun/go/ch-1.go b/challenge-276/pokgopun/go/ch-1.go new file mode 100644 index 0000000000..ba9885236e --- /dev/null +++ b/challenge-276/pokgopun/go/ch-1.go @@ -0,0 +1,83 @@ +//# https://theweeklychallenge.org/blog/perl-weekly-challenge-276/ +/*# + +Task 1: Complete Day + +Submitted by: [41]Mohammad Sajid Anwar + __________________________________________________________________ + + You are given an array of integers, @hours. + + Write a script to return the number of pairs that forms a complete day. + + A complete day is defined as a time duration that is an exact + multiple of 24 hours. + +Example 1 + +Input: @hours = (12, 12, 30, 24, 24) +Output: 2 + +Pair 1: (12, 12) +Pair 2: (24, 24) + +Example 2 + +Input: @hours = (72, 48, 24, 5) +Output: 3 + +Pair 1: (72, 48) +Pair 2: (72, 24) +Pair 3: (48, 24) + +Example 3 + +Input: @hours = (12, 18, 24) +Output: 0 + +Task 2: Maximum Frequency +#*/ +//# solution by pokgopun@gmail.com + +package main + +import ( + "io" + "os" + + "github.com/google/go-cmp/cmp" +) + +type hour int + +func (hr hour) isCompleteDay() bool { + return hr%24 == 0 +} + +type hours []hour + +func (hrs hours) countCompleteDayPair() int { + c := 0 + l := len(hrs) + for i := 0; i < l-1; i++ { + for j := i + 1; j < l; j++ { + if (hrs[i] + hrs[j]).isCompleteDay() { + c++ + } + } + } + return c +} + +func main() { + for _, data := range []struct { + input hours + output int + }{ + {hours{12, 12, 30, 24, 24}, 2}, + {hours{72, 48, 24, 5}, 3}, + {hours{12, 18, 24}, 0}, + } { + io.WriteString(os.Stdout, cmp.Diff(data.input.countCompleteDayPair(), data.output)) // blank if ok, otherwise show the difference + } +} diff --git a/challenge-276/pokgopun/go/ch-2.go b/challenge-276/pokgopun/go/ch-2.go new file mode 100644 index 0000000000..38f9f25037 --- /dev/null +++ b/challenge-276/pokgopun/go/ch-2.go @@ -0,0 +1,105 @@ +//# https://theweeklychallenge.org/blog/perl-weekly-challenge-276/ +/*# + +Task 2: Maximum Frequency + +Submitted by: [42]Mohammad Sajid Anwar + __________________________________________________________________ + + You are given an array of positive integers, @ints. + + Write a script to return the total number of elements in the given + array which have the highest frequency. + +Example 1 + +Input: @ints = (1, 2, 2, 4, 1, 5) +Ouput: 4 + +The maximum frequency is 2. +The elements 1 and 2 has the maximum frequency. + +Example 2 + +Input: @ints = (1, 2, 3, 4, 5) +Ouput: 5 + +The maximum frequency is 1. +The elements 1, 2, 3, 4 and 5 has the maximum frequency. + __________________________________________________________________ + + Last date to submit the solution 23:59 (UK Time) Sunday 7th July 2024. + __________________________________________________________________ + +SO WHAT DO YOU THINK ? +#*/ +//# solution by pokgopun@gmail.com + +package main + +import ( + "io" + "os" + + "github.com/google/go-cmp/cmp" +) + +type intCount struct { + int, count int +} + +type ints []int + +func (is ints) uniqInts() ints { + seen := make(map[int]bool) + var s ints + for _, v := range is { + if seen[v] { + continue + } + seen[v] = true + s = append(s, v) + } + return s +} + +func (is ints) intCounts() []intCount { + var s []intCount + for _, v := range is.uniqInts() { + c := 0 + for _, e := range is { + if e == v { + c++ + } + } + s = append(s, intCount{v, c}) + } + return s +} + +func (is ints) maxFreq() int { + intCounts := is.intCounts() + mx := intCounts[0].count + for _, v := range intCounts[1:] { + mx = max(mx, v.count) + } + c := 0 + for _, v := range intCounts { + if v.count == mx { + c += mx + } + } + return c +} + +func main() { + for _, data := range []struct { + input ints + output int + }{ + {ints{1, 2, 2, 4, 1, 5}, 4}, + {ints{1, 2, 3, 4, 5}, 5}, + } { + io.WriteString(os.Stdout, cmp.Diff(data.input.maxFreq(), data.output)) // blank if ok, otherwise show the difference + } +} diff --git a/challenge-276/pokgopun/python/ch-1.py b/challenge-276/pokgopun/python/ch-1.py new file mode 100644 index 0000000000..9e9f3c784f --- /dev/null +++ b/challenge-276/pokgopun/python/ch-1.py @@ -0,0 +1,62 @@ +### https://theweeklychallenge.org/blog/perl-weekly-challenge-276/ +""" + +Task 1: Complete Day + +Submitted by: [41]Mohammad Sajid Anwar + __________________________________________________________________ + + You are given an array of integers, @hours. + + Write a script to return the number of pairs that forms a complete day. + + A complete day is defined as a time duration that is an exact + multiple of 24 hours. + +Example 1 + +Input: @hours = (12, 12, 30, 24, 24) +Output: 2 + +Pair 1: (12, 12) +Pair 2: (24, 24) + +Example 2 + +Input: @hours = (72, 48, 24, 5) +Output: 3 + +Pair 1: (72, 48) +Pair 2: (72, 24) +Pair 3: (48, 24) + +Example 3 + +Input: @hours = (12, 18, 24) +Output: 0 + +Task 2: Maximum Frequency +""" +### solution by pokgopun@gmail.com + +def completeDay(hours: tuple): + c = 0 + l = len(hours) + for i in range(l-1): + for j in range(i+1, l): + if (hours[i] + hours[j]) % 24 == 0: + c += 1 + return c + +import unittest + +class TestCompleteDay(unittest.TestCase): + def test(self): + for inpt, otpt in { + (12, 12, 30, 24, 24): 2, + (72, 48, 24, 5): 3, + (12, 18, 24): 0, + }.items(): + self.assertEqual(completeDay(inpt),otpt) + +unittest.main() diff --git a/challenge-276/pokgopun/python/ch-2.py b/challenge-276/pokgopun/python/ch-2.py new file mode 100644 index 0000000000..358fed0eb9 --- /dev/null +++ b/challenge-276/pokgopun/python/ch-2.py @@ -0,0 +1,53 @@ +### https://theweeklychallenge.org/blog/perl-weekly-challenge-276/ +""" + +Task 2: Maximum Frequency + +Submitted by: [42]Mohammad Sajid Anwar + __________________________________________________________________ + + You are given an array of positive integers, @ints. + + Write a script to return the total number of elements in the given + array which have the highest frequency. + +Example 1 + +Input: @ints = (1, 2, 2, 4, 1, 5) +Ouput: 4 + +The maximum frequency is 2. +The elements 1 and 2 has the maximum frequency. + +Example 2 + +Input: @ints = (1, 2, 3, 4, 5) +Ouput: 5 + +The maximum frequency is 1. +The elements 1, 2, 3, 4 and 5 has the maximum frequency. + __________________________________________________________________ + + Last date to submit the solution 23:59 (UK Time) Sunday 7th July 2024. + __________________________________________________________________ + +SO WHAT DO YOU THINK ? +""" +### solution by pokgopun@gmail.com + +def maxFreq(ints: tuple): + ic = tuple((e, ints.count(e)) for e in set(ints)) + mf = max(e[1] for e in ic) + return sum( mf for e in ic if e[1]==mf) + +import unittest + +class TestMaxFreq(unittest.TestCase): + def test(self): + for inpt,otpt in { + (1, 2, 2, 4, 1, 5): 4, + (1, 2, 3, 4, 5): 5, + }.items(): + self.assertEqual(maxFreq(inpt),otpt) + +unittest.main() |
