diff options
| author | Pok <pok@goyangi> | 2025-06-02 19:42:43 +1000 |
|---|---|---|
| committer | Pok <pok@goyangi> | 2025-06-02 19:42:43 +1000 |
| commit | 4395943a514d0274f5b7adb42baf951546a49340 (patch) | |
| tree | 975913ba275041a9ab8137a30a41b90ad1f8f423 | |
| parent | b0159e77cc4e56da3a5a1c86d5769c652bcc887e (diff) | |
| download | perlweeklychallenge-club-4395943a514d0274f5b7adb42baf951546a49340.tar.gz perlweeklychallenge-club-4395943a514d0274f5b7adb42baf951546a49340.tar.bz2 perlweeklychallenge-club-4395943a514d0274f5b7adb42baf951546a49340.zip | |
pwc324 solution in python
| -rw-r--r-- | challenge-324/pokgopun/python/ch-1.py | 47 | ||||
| -rw-r--r-- | challenge-324/pokgopun/python/ch-2.py | 76 |
2 files changed, 123 insertions, 0 deletions
diff --git a/challenge-324/pokgopun/python/ch-1.py b/challenge-324/pokgopun/python/ch-1.py new file mode 100644 index 0000000000..d4f0a3057d --- /dev/null +++ b/challenge-324/pokgopun/python/ch-1.py @@ -0,0 +1,47 @@ +### https://theweeklychallenge.org/blog/perl-weekly-challenge-324/ +""" + +Task 1: 2D Array + +Submitted by: [42]Mohammad Sajid Anwar + __________________________________________________________________ + + You are given an array of integers and two integers $r amd $c. + + Write a script to create two dimension array having $r rows and $c + columns using the given array. + +Example 1 + +Input: @ints = (1, 2, 3, 4), $r = 2, $c = 2 +Output: ([1, 2], [3, 4]) + +Example 2 + +Input: @ints = (1, 2, 3), $r = 1, $c = 3 +Output: ([1, 2, 3]) + +Example 3 + +Input: @ints = (1, 2, 3, 4), $r = 4, $c = 1 +Output: ([1], [2], [3], [4]) + +Task 2: Total XOR +""" +### solution by pokgopun@gmail.com + +def tda(ints: tuple[int], r: int, c: int) -> tuple[list[int]]: + return tuple(list(ints[i*c:i*c+c]) for i in range(r)) + +import unittest + +class TestTda(unittest.TestCase): + def test(self): + for (ints, r, c), otpt in { + ((1, 2, 3, 4), 2, 2): ([1, 2], [3, 4]), + ((1, 2, 3), 1, 3): ([1, 2, 3],), + ((1, 2, 3, 4), 4, 1): ([1], [2], [3], [4]), + }.items(): + self.assertEqual(tda(ints,r,c), otpt) + +unittest.main() diff --git a/challenge-324/pokgopun/python/ch-2.py b/challenge-324/pokgopun/python/ch-2.py new file mode 100644 index 0000000000..96e81c7966 --- /dev/null +++ b/challenge-324/pokgopun/python/ch-2.py @@ -0,0 +1,76 @@ +### https://theweeklychallenge.org/blog/perl-weekly-challenge-324/ +""" + +Task 2: Total XOR + +Submitted by: [43]Mohammad Sajid Anwar + __________________________________________________________________ + + You are given an array of integers. + + Write a script to return the sum of total XOR for every subset of given + array. + +Example 1 + +Input: @ints = (1, 3) +Output: 6 + +Subset [1], total XOR = 1 +Subset [3], total XOR = 3 +Subset [1, 3], total XOR => 1 XOR 3 => 2 + +Sum of total XOR => 1 + 3 + 2 => 6 + +Example 2 + +Input: @ints = (5, 1, 6) +Output: 28 + +Subset [5], total XOR = 5 +Subset [1], total XOR = 1 +Subset [6], total XOR = 6 +Subset [5, 1], total XOR => 5 XOR 1 => 4 +Subset [5, 6], total XOR => 5 XOR 6 => 3 +Subset [1, 6], total XOR => 1 XOR 6 => 7 +Subset [5, 1, 6], total XOR => 5 XOR 1 XOR 6 => 2 + +Sum of total XOR => 5 + 1 + 6 + 4 + 3 + 7 + 2 => 28 + +Example 3 + +Input: @ints = (3, 4, 5, 6, 7, 8) +Output: 480 + __________________________________________________________________ + + Last date to submit the solution 23:59 (UK Time) Sunday 8th June 2025. + __________________________________________________________________ + +SO WHAT DO YOU THINK ? +""" +### solution by pokgopun@gmail.com + +from itertools import combinations + +def txor(ints: tuple[int]) -> int: + tx = 0 + for r in range(len(ints)): + for cmb in combinations(ints,r+1): + x = cmb[0] + for n in cmb[1:]: + x ^= n + tx += x + return tx + +import unittest + +class TestTxor(unittest.TestCase): + def test(self): + for inpt, otpt in { + (1, 3): 6, + (5, 1, 6): 28, + (3, 4, 5, 6, 7, 8): 480, + }.items(): + self.assertEqual(txor(inpt), otpt) + +unittest.main() |
