Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Second solution in Clear category for Making Change by gyahun_dash
def checkio(price, denoms):
maxs = {d: price // d for d in denoms}
dsets = ({d for d in denoms if i < maxs[d]} for i in range(price))
sequence = (dset for dset in dsets if dset)
sums, seen = set(), set()
for number, dset in enumerate(sequence, 1):
sums = {s + d for s in sums for d in dset} - seen or dset
if price in sums: return number
minsum = min(sums)
seen = {s for s in seen if s > minsum} | sums
March 23, 2016