From 7471e4d859724f217eecd4fe691e588b6f7e209e Mon Sep 17 00:00:00 2001 From: Paulo Custodio Date: Tue, 24 Sep 2024 17:46:51 +0100 Subject: Add Python solution to challenge 075 --- challenge-075/paulo-custodio/python/ch-1.py | 47 +++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 challenge-075/paulo-custodio/python/ch-1.py (limited to 'challenge-075/paulo-custodio/python/ch-1.py') 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) -- cgit