aboutsummaryrefslogtreecommitdiff
path: root/challenge-075/paulo-custodio/python/ch-1.py
diff options
context:
space:
mode:
authorPaulo Custodio <pauloscustodio@gmail.com>2024-09-24 17:46:51 +0100
committerPaulo Custodio <pauloscustodio@gmail.com>2024-09-24 17:46:51 +0100
commit7471e4d859724f217eecd4fe691e588b6f7e209e (patch)
treeb7e9518de085d378124f0b7273eac502c0dabfc6 /challenge-075/paulo-custodio/python/ch-1.py
parentd3415eb4ede0c67098433eda84e84843267a7d62 (diff)
downloadperlweeklychallenge-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.py47
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)