diff options
| author | 冯昶 <fengchang@novel-supertv.com> | 2024-03-04 16:39:31 +0800 |
|---|---|---|
| committer | 冯昶 <fengchang@novel-supertv.com> | 2024-03-04 16:39:31 +0800 |
| commit | 8edd4508d3af07ed272eec6ceeca1a9789b5e68a (patch) | |
| tree | 2db742aea75a7a3005575c04a7e44da6d5c88a1f /challenge-258/pokgopun/python/ch-2.py | |
| parent | d64db60d9dcf17d59060a03f5b1fbc5e82fc1953 (diff) | |
| parent | ad381c1123e47114d3d98f1749f9f354eebafcdd (diff) | |
| download | perlweeklychallenge-club-8edd4508d3af07ed272eec6ceeca1a9789b5e68a.tar.gz perlweeklychallenge-club-8edd4508d3af07ed272eec6ceeca1a9789b5e68a.tar.bz2 perlweeklychallenge-club-8edd4508d3af07ed272eec6ceeca1a9789b5e68a.zip | |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-258/pokgopun/python/ch-2.py')
| -rw-r--r-- | challenge-258/pokgopun/python/ch-2.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/challenge-258/pokgopun/python/ch-2.py b/challenge-258/pokgopun/python/ch-2.py new file mode 100644 index 0000000000..049d7348b1 --- /dev/null +++ b/challenge-258/pokgopun/python/ch-2.py @@ -0,0 +1,64 @@ +### https://theweeklychallenge.org/blog/perl-weekly-challenge-258/ +""" + +Task 2: Sum of Values + +Submitted by: [43]Mohammad Sajid Anwar + __________________________________________________________________ + + You are given an array of integers, @int and an integer $k. + + Write a script to find the sum of values whose index binary + representation has exactly $k number of 1-bit set. + +Example 1 + +Input: @ints = (2, 5, 9, 11, 3), $k = 1 +Output: 17 + +Binary representation of index 0 = 0 +Binary representation of index 1 = 1 +Binary representation of index 2 = 10 +Binary representation of index 3 = 11 +Binary representation of index 4 = 100 + +So the indices 1, 2 and 4 have total one 1-bit sets. +Therefore the sum, $ints[1] + $ints[2] + $ints[3] = 17 + +Example 2 + +Input: @ints = (2, 5, 9, 11, 3), $k = 2 +Output: 11 + +Example 3 + +Input: @ints = (2, 5, 9, 11, 3), $k = 0 +Output: 2 + __________________________________________________________________ + + Last date to submit the solution 23:59 (UK Time) Sunday 1st March 2024. + __________________________________________________________________ + +SO WHAT DO YOU THINK ? +""" +### solution by pokgopun@gmail.com + +def SOV(ints: tuple, k: int): + return sum( + ints[i] for i in range(len(ints)) + if sum( + int(e) for e in bin(i).lstrip('0b') + ) == k + ) +import unittest + +class TestSOV(unittest.TestCase): + def test(self): + for (ints, k), otpt in { + ((2, 5, 9, 11, 3), 1): 17, + ((2, 5, 9, 11, 3), 2): 11, + ((2, 5, 9, 11, 3), 0): 2, + }.items(): + self.assertEqual(SOV(ints,k),otpt) + +unittest.main() |
