diff options
| author | Paulo Custodio <pauloscustodio@gmail.com> | 2024-09-24 17:46:51 +0100 |
|---|---|---|
| committer | Paulo Custodio <pauloscustodio@gmail.com> | 2024-09-24 17:46:51 +0100 |
| commit | 7471e4d859724f217eecd4fe691e588b6f7e209e (patch) | |
| tree | b7e9518de085d378124f0b7273eac502c0dabfc6 /challenge-075/paulo-custodio/python/ch-1.py | |
| parent | d3415eb4ede0c67098433eda84e84843267a7d62 (diff) | |
| download | perlweeklychallenge-club-7471e4d859724f217eecd4fe691e588b6f7e209e.tar.gz perlweeklychallenge-club-7471e4d859724f217eecd4fe691e588b6f7e209e.tar.bz2 perlweeklychallenge-club-7471e4d859724f217eecd4fe691e588b6f7e209e.zip | |
Add Python solution to challenge 075
Diffstat (limited to 'challenge-075/paulo-custodio/python/ch-1.py')
| -rw-r--r-- | challenge-075/paulo-custodio/python/ch-1.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/challenge-075/paulo-custodio/python/ch-1.py b/challenge-075/paulo-custodio/python/ch-1.py new file mode 100644 index 0000000000..b86bde2230 --- /dev/null +++ b/challenge-075/paulo-custodio/python/ch-1.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 + +# Challenge 075 +# +# TASK #1 > Coins Sum +# Submitted by: Mohammad S Anwar +# You are given a set of coins @C, assuming you have infinite amount of each +# coin in the set. +# +# Write a script to find how many ways you make sum $S using the coins from +# the set @C. +# +# Example: +# Input: +# @C = (1, 2, 4) +# $S = 6 +# +# Output: 6 +# There are 6 possible ways to make sum 6. +# a) (1, 1, 1, 1, 1, 1) +# b) (1, 1, 1, 1, 2) +# c) (1, 1, 2, 2) +# d) (1, 1, 4) +# e) (2, 2, 2) +# f) (2, 4) + +import sys + +def show_coins(want, coins): + def show_coins1(want, have, coins, seen): + sum_have = sum(have) + if sum_have > want: + pass # busted sum + elif sum_have == want: + out = ", ".join([str(x) for x in sorted(have)]) + if not out in seen: + seen[out] = 1 + print(out) + else: + for coin in coins: + show_coins1(want, have+[coin], coins, seen) + + show_coins1(want, [], coins, {}) + +S = int(sys.argv[1]) +C = [int(x) for x in sys.argv[2:]] +show_coins(S, C) |
