forked from ZoranPandovski/al-go-rithms
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathminimum_coins.py
30 lines (24 loc) · 1.06 KB
/
minimum_coins.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
def minimum_coins(value, denominations):
result = []
# Assuming denominations is sorted in descendig order
for cur_denom in denominations:
while cur_denom <= value:
result.append(cur_denom)
value = value - cur_denom
return result
# Testing
def test():
scenarios = [[100, [50, 25, 10, 5, 1], [50, 50]],
[101, [50, 25, 10, 5, 1], [50, 50, 1]],
[77, [50, 25, 10, 5, 1], [50, 25, 1, 1]],
[38, [50, 25, 10, 5, 1], [25, 10, 1, 1, 1]],
[17, [50, 25, 10, 5, 1], [10, 5, 1, 1]],
[3, [50, 25, 10, 5, 1], [1, 1, 1]],
[191, [100, 50, 25, 10, 5, 1], [100, 50, 25, 10, 5, 1]]]
for scenario in scenarios:
actual = minimum_coins(scenario[0], scenario[1])
if actual != scenario[2]:
message = "Test Failed: Value: {}, Denominations: {}, Expected Result: {}, Actual Result: {}".format(scenario[0], scenario[1], scenario[2], actual)
print message
return None
test()