diff options
| author | Michael Manring <michael@manring> | 2024-09-02 13:51:02 +1000 |
|---|---|---|
| committer | Michael Manring <michael@manring> | 2024-09-02 14:51:54 +1000 |
| commit | f0d97c322ad8201eaf3c5a95e2fb74eba1ceaa82 (patch) | |
| tree | ef59cd3166f5034124040f443ca7afcf6129466c | |
| parent | 0512711fccf91c731495f1dd901349cc900ec299 (diff) | |
| download | perlweeklychallenge-club-f0d97c322ad8201eaf3c5a95e2fb74eba1ceaa82.tar.gz perlweeklychallenge-club-f0d97c322ad8201eaf3c5a95e2fb74eba1ceaa82.tar.bz2 perlweeklychallenge-club-f0d97c322ad8201eaf3c5a95e2fb74eba1ceaa82.zip | |
pwc285 solution in python
| -rw-r--r-- | challenge-285/pokgopun/python/ch-1.py | 50 | ||||
| -rw-r--r-- | challenge-285/pokgopun/python/ch-2.py | 75 |
2 files changed, 125 insertions, 0 deletions
diff --git a/challenge-285/pokgopun/python/ch-1.py b/challenge-285/pokgopun/python/ch-1.py new file mode 100644 index 0000000000..fcebb07e89 --- /dev/null +++ b/challenge-285/pokgopun/python/ch-1.py @@ -0,0 +1,50 @@ +### https://theweeklychallenge.org/blog/perl-weekly-challenge-285/ +""" + +Task 1: No Connection + +Submitted by: [49]Mohammad Sajid Anwar + __________________________________________________________________ + + You are given a list of routes, @routes. + + Write a script to find the destination with no further outgoing + connection. + +Example 1 + +Input: @routes = (["B","C"], ["D","B"], ["C","A"]) +Output: "A" + +"D" -> "B" -> "C" -> "A". +"B" -> "C" -> "A". +"C" -> "A". +"A". + +Example 2 + +Input: @routes = (["A","Z"]) +Output: "Z" + +Task 2: Making Change +""" +### solution by pokgopun@gmail.com + +def nc(routes: tuple): + srcs = tuple(e[0] for e in routes) + for src, dst in routes: + if dst not in srcs: + return dst + return None + +import unittest + +class TestNc(unittest.TestCase): + def test(self): + for inpt, otpt in { + (("B","C"), ("D","B"), ("C","A")): "A", + (("A","Z"),): "Z", + }.items(): + self.assertEqual(nc(inpt),otpt) + +unittest.main() diff --git a/challenge-285/pokgopun/python/ch-2.py b/challenge-285/pokgopun/python/ch-2.py new file mode 100644 index 0000000000..813b8cf378 --- /dev/null +++ b/challenge-285/pokgopun/python/ch-2.py @@ -0,0 +1,75 @@ +### https://theweeklychallenge.org/blog/perl-weekly-challenge-285/ +""" + +Task 2: Making Change + +Submitted by: [50]David Ferrone + __________________________________________________________________ + + Compute the number of ways to make change for given amount in cents. By + using the coins e.g. Penny, Nickel, Dime, Quarter and Half-dollar, in + how many distinct ways can the total value equal to the given amount? + Order of coin selection does not matter. +A penny (P) is equal to 1 cent. +A nickel (N) is equal to 5 cents. +A dime (D) is equal to 10 cents. +A quarter (Q) is equal to 25 cents. +A half-dollar (HD) is equal to 50 cents. + +Example 1 + +Input: $amount = 9 +Ouput: 2 + +1: 9P +2: N + 4P + +Example 2 + +Input: $amount = 15 +Ouput: 6 + +1: D + 5P +2: D + N +3: 3N +4: 2N + 5P +5: N + 10P +6: 15P + +Example 3 + +Input: $amount = 100 +Ouput: 292 + __________________________________________________________________ + + Last date to submit the solution 23:59 (UK Time) Sunday 8th September + 2024. + __________________________________________________________________ + +SO WHAT DO YOU THINK ? +""" +### solution by pokgopun@gmail.com + +def mc(amount: int): + c = 0 + for a50 in range(0,amount+1,50): + for a25 in range(0,amount-a50+1,25): + for a10 in range(0,amount-a50-a25+1,10): + for a5 in range(0,amount-a50-a25-a10+1,5): + for a1 in range(0,amount-a50-a25-a10-a5+1,1): + if a50 + a25 + a10 + a5 + a1 == amount: + c += 1 + return c + +import unittest + +class TestMc(unittest.TestCase): + def test(self): + for inpt, otpt in { + 9: 2, + 15: 6, + 100: 292, + }.items(): + self.assertEqual(mc(inpt),otpt) + +unittest.main() |
