Skip to content

Instantly share code, notes, and snippets.

@nikitaborisov
Created May 27, 2018 20:48
Show Gist options
  • Save nikitaborisov/686e65418469a448157c2734ea6a8da1 to your computer and use it in GitHub Desktop.
Save nikitaborisov/686e65418469a448157c2734ea6a8da1 to your computer and use it in GitHub Desktop.
count number of item combinations
import functools
MENU = (
('cake', 99),
('cupcake', 20),
('donut', 10),
('muffin', 25),
('cookie', 5)
)
PRICE = 1035
@functools.lru_cache(maxsize=None)
def combinations(menu, remaining):
if not menu:
if remaining == 0:
return 1
else:
return 0
cur_price = menu[0][1]
return sum(combinations(menu[1:],
remaining - num_cur * cur_price)
for num_cur in range(remaining // cur_price + 1))
print("{} combinations".format(combinations(MENU, PRICE)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment