diff options
| -rw-r--r-- | challenge-252/pokgopun/python/ch-1.py | 67 | ||||
| -rw-r--r-- | challenge-252/pokgopun/python/ch-2.py | 70 |
2 files changed, 137 insertions, 0 deletions
diff --git a/challenge-252/pokgopun/python/ch-1.py b/challenge-252/pokgopun/python/ch-1.py new file mode 100644 index 0000000000..ae6a9021e9 --- /dev/null +++ b/challenge-252/pokgopun/python/ch-1.py @@ -0,0 +1,67 @@ +### https://theweeklychallenge.org/blog/perl-weekly-challenge-252/ +""" + +Task 1: Special Numbers + +Submitted by: [45]Mohammad S Anwar + __________________________________________________________________ + + You are given an array of integers, @ints. + + Write a script to find the sum of the squares of all special elements + of the given array. +An element $int[i] of @ints is called special if i divides n, i.e. n % i == 0. +Where n is the length of the given array. Also the array is 1-indexed for the ta +sk. + +Example 1 + +Input: @ints = (1, 2, 3, 4) +Output: 21 + +There are exactly 3 special elements in the given array: +$ints[1] since 1 divides 4, +$ints[2] since 2 divides 4, and +$ints[4] since 4 divides 4. + +Hence, the sum of the squares of all special elements of given array: +1 * 1 + 2 * 2 + 4 * 4 = 21. + +Example 2 + +Input: @ints = (2, 7, 1, 19, 18, 3) +Output: 63 + +There are exactly 4 special elements in the given array: +$ints[1] since 1 divides 6, +$ints[2] since 2 divides 6, +$ints[3] since 3 divides 6, and +$ints[6] since 6 divides 6. + +Hence, the sum of the squares of all special elements of given array: +2 * 2 + 7 * 7 + 1 * 1 + 3 * 3 = 63 + +Task 2: Unique Sum Zero +""" +### solution by pokgopun@gmail.com + +def snum(tup: tuple): + l = len(tup) + return sum( + tup[i]**2 for i in range(0,l) + if l % (i+1) == 0 + ) + +import unittest + +class TestSnum(unittest.TestCase): + def test(self): + for inpt,otpt in { + (1, 2, 3, 4): 21, + (2, 7, 1, 19, 18, 3): 63, + }.items(): + self.assertEqual(snum(inpt),otpt) + +unittest.main() + + diff --git a/challenge-252/pokgopun/python/ch-2.py b/challenge-252/pokgopun/python/ch-2.py new file mode 100644 index 0000000000..5eb2dc31da --- /dev/null +++ b/challenge-252/pokgopun/python/ch-2.py @@ -0,0 +1,70 @@ +### https://theweeklychallenge.org/blog/perl-weekly-challenge-252/ +""" + +Task 2: Unique Sum Zero + +Submitted by: [46]Mohammad S Anwar + __________________________________________________________________ + + You are given an integer, $n. + + Write a script to find an array containing $n unique integers such that + they add up to zero. + +Example 1 + +Input: $n = 5 +Output: (-7, -1, 1, 3, 4) + +Two other possible solutions could be as below: +(-5, -1, 1, 2, 3) and (-3, -1, 2, -2, 4). + +Example 2 + +Input: $n = 3 +Output: (-1, 0, 1) + +Example 3 + +Input: $n = 1 +Output: (0) + __________________________________________________________________ + + Last date to submit the solution 23:59 (UK Time) Sunday 21st January + 2024. + __________________________________________________________________ + +SO WHAT DO YOU THINK ? +""" +### solution by pokgopun@gmail.com + +from itertools import combinations + +def isUsz(n: int, tup: tuple): + # assuming array member is less than n, the min value for the member will be -(1 + .. + n - 1) + p = range(-sum(i for i in range(1,n)), n) + return set(tup) in ( set(cmb) for cmb in combinations(p,n) if sum(cmb)==0 ) + +import unittest + +class TestIsUsz(unittest.TestCase): + def test1(self): + for n,tup in { + 5: (-7, -1, 1, 3, 4), + 5: (-5, -1, 1, 2, 3), + 5: (-3, -1, 2, -2, 4), + 3: (-1, 0, 1), + 1: (0,), + }.items(): + self.assertEqual(isUsz(n,tup),True) + def test2(self): + for n,tup in { + 5: (-1, 0, 1, 2, 3), + 5: (-2, -1, 0, 1, 3), + 5: (-3, -1, 0, 1, 2), + 3: (-2, 0, 1), + 1: (1,), + }.items(): + self.assertEqual(isUsz(n,tup),False) + +unittest.main() |
