From 443bca5fa8deb85b0803d38452129686c079085d Mon Sep 17 00:00:00 2001 From: Dan Morse Date: Tue, 7 Apr 2020 12:27:39 -0700 Subject: [PATCH 1/7] find_max_profits golden path --- stock_prices/stock_prices.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/stock_prices/stock_prices.py b/stock_prices/stock_prices.py index 9de20bc94..cb860570d 100644 --- a/stock_prices/stock_prices.py +++ b/stock_prices/stock_prices.py @@ -2,14 +2,22 @@ import argparse + def find_max_profit(prices): - pass + max_dif = prices[1] - prices[0] + for i in range(len(prices) - 1): + for j in range(i + 1, len(prices)): + current_dif = prices[j] - prices[i] + if current_dif > max_dif: + max_dif = current_dif + return max_dif if __name__ == '__main__': - # This is just some code to accept inputs from the command line - parser = argparse.ArgumentParser(description='Find max profit from prices.') - parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer price') - args = parser.parse_args() + # This is just some code to accept inputs from the command line + parser = argparse.ArgumentParser(description='Find max profit from prices.') + parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer price') + args = parser.parse_args() - print("A profit of ${profit} can be made from the stock prices {prices}.".format(profit=find_max_profit(args.integers), prices=args.integers)) \ No newline at end of file + print("A profit of ${profit} can be made from the stock prices {prices}.".format( + profit=find_max_profit(args.integers), prices=args.integers)) \ No newline at end of file From 027fde22a5eff3c880da1c41a40ff221e7500832 Mon Sep 17 00:00:00 2001 From: Dan Morse Date: Tue, 7 Apr 2020 13:12:22 -0700 Subject: [PATCH 2/7] recipe_batches first pass --- recipe_batches/recipe_batches.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/recipe_batches/recipe_batches.py b/recipe_batches/recipe_batches.py index c845950c5..502d632e6 100644 --- a/recipe_batches/recipe_batches.py +++ b/recipe_batches/recipe_batches.py @@ -2,13 +2,21 @@ import math + def recipe_batches(recipe, ingredients): - pass + batches = [] + for item in recipe: + if item not in ingredients: + return 0 + batches.append(ingredients[item] // recipe[item]) + return min(batches) if __name__ == '__main__': - # Change the entries of these dictionaries to test - # your implementation with different inputs - recipe = { 'milk': 100, 'butter': 50, 'flour': 5 } - ingredients = { 'milk': 132, 'butter': 48, 'flour': 51 } - print("{batches} batches can be made from the available ingredients: {ingredients}.".format(batches=recipe_batches(recipe, ingredients), ingredients=ingredients)) \ No newline at end of file + # Change the entries of these dictionaries to test + # your implementation with different inputs + recipe = { 'milk': 100, 'butter': 50, 'cheese': 10 } + ingredients = { 'milk': 198, 'butter': 52, 'cheese': 10 } + print("{batches} batches can be made from the available ingredients: {ingredients}.".format( + batches=recipe_batches(recipe, ingredients), ingredients=ingredients)) + From ac294b1cdbc287e1127a5609c8fe04fb060add04 Mon Sep 17 00:00:00 2001 From: Dan Morse Date: Tue, 7 Apr 2020 13:52:38 -0700 Subject: [PATCH 3/7] none --- recipe_batches/recipe_batches.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe_batches/recipe_batches.py b/recipe_batches/recipe_batches.py index 502d632e6..196a10ebe 100644 --- a/recipe_batches/recipe_batches.py +++ b/recipe_batches/recipe_batches.py @@ -2,7 +2,7 @@ import math - +# run time: O(n) def recipe_batches(recipe, ingredients): batches = [] for item in recipe: From 446dc4c37fa7f486ea10490bf0e07eaf10fe4f1b Mon Sep 17 00:00:00 2001 From: Dan Morse Date: Wed, 8 Apr 2020 10:04:47 -0700 Subject: [PATCH 4/7] eating cookies first run --- eating_cookies/eating_cookies.py | 33 ++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/eating_cookies/eating_cookies.py b/eating_cookies/eating_cookies.py index 62655d803..14dec8f0b 100644 --- a/eating_cookies/eating_cookies.py +++ b/eating_cookies/eating_cookies.py @@ -2,15 +2,36 @@ import sys + # The cache parameter is here for if you want to implement # a solution that is more efficient than the naive # recursive solution def eating_cookies(n, cache=None): - pass + if cache is None: + cache = [0 for i in range(n + 1)] + total_ways = 0 + if cache[n] != 0: + return cache[n] + if n == 0: + new_ways = 1 + total_ways += new_ways + if n >= 1: + new_ways = eating_cookies(n - 1, cache) + total_ways += new_ways + if n >= 2: + new_ways = eating_cookies(n - 2, cache) + total_ways += new_ways + if n >= 3: + new_ways = eating_cookies(n - 3, cache) + total_ways += new_ways + cache[n] = total_ways + return total_ways + if __name__ == "__main__": - if len(sys.argv) > 1: - num_cookies = int(sys.argv[1]) - print("There are {ways} ways for Cookie Monster to eat {n} cookies.".format(ways=eating_cookies(num_cookies), n=num_cookies)) - else: - print('Usage: eating_cookies.py [num_cookies]') \ No newline at end of file + if len(sys.argv) > 1: + num_cookies = int(sys.argv[1]) + print("There are {ways} ways for Cookie Monster to eat {n} cookies.".format(ways=eating_cookies(num_cookies), + n=num_cookies)) + else: + print('Usage: eating_cookies.py [num_cookies]') From aa8ee8da07af2019fcf1cde81397e2cf3f31f820 Mon Sep 17 00:00:00 2001 From: Dan Morse Date: Wed, 8 Apr 2020 10:06:02 -0700 Subject: [PATCH 5/7] rock paper scissors first run --- rock_paper_scissors/rps.py | 70 ++++++++++++++++++++++++++++++--- rock_paper_scissors/test_rps.py | 2 +- 2 files changed, 65 insertions(+), 7 deletions(-) diff --git a/rock_paper_scissors/rps.py b/rock_paper_scissors/rps.py index 0fc53356e..3ac28b7cb 100644 --- a/rock_paper_scissors/rps.py +++ b/rock_paper_scissors/rps.py @@ -2,13 +2,71 @@ import sys + +def add_plays(plays): + possible_plays = ["rock", "paper", "scissors"] + + if len(plays) <= 1: + return plays + one_third = len(plays) // 3 + first = plays[:one_third] + second = plays[one_third:one_third * 2] + third = plays[one_third * 2:] + for item in first: + item.append(possible_plays[0]) + for item in second: + item.append(possible_plays[1]) + for item in third: + item.append(possible_plays[2]) + + first = add_plays(first) + second = add_plays(second) + third = add_plays(third) + + return first + second + third + + def rock_paper_scissors(n): - pass + + # if n <= 0: + # return [[]] + + outside_length = 3 ** n + + possible_plays = [[] for combination in range(outside_length)] + return add_plays(possible_plays) if __name__ == "__main__": - if len(sys.argv) > 1: - num_plays = int(sys.argv[1]) - print(rock_paper_scissors(num_plays)) - else: - print('Usage: rps.py [num_plays]') \ No newline at end of file + if len(sys.argv) > 1: + num_plays = int(sys.argv[1]) + print(rock_paper_scissors(num_plays)) + else: + print('Usage: rps.py [num_plays]') + +# [['rock', 'rock'], ['rock', 'paper'], ['rock', 'scissors'], +# ['paper', 'rock'], ['paper', 'paper'], ['paper', 'scissors'], +# ['scissors', 'rock'], ['scissors', 'paper'], ['scissors', 'scissors']] + +# r, p, s +# rr, rp, rs +# pr, pp, ps +# sr, sp, ss +# rrr, rrp, rrs, rpr, rpp, rps, rsr, rsp, rss, +# etc + +# +# [['rock', 'rock', 'rock', 'rock', 'rock'], +# ['paper', 'paper', 'rock', 'paper', 'paper'], +# ['scissors', 'scissors', 'scissors', 'rock', 'scissors']], \ +# [['rock', 'paper', 'rock', 'rock', 'rock'], +# ['paper', 'paper', 'paper', 'paper', 'paper'], +# ['scissors', 'scissors', 'scissors', 'paper', 'scissors']], \ +# [['rock', 'scissors', 'rock', 'rock', 'rock'], +# ['paper', 'paper', 'scissors', 'paper', 'paper'], +# ['scissors', 'scissors', 'scissors', 'scissors', 'scissors']] +# +# ([['rock'], ['rock'], +# ['rock']], [['paper'], +# ['paper'], ['paper']], +# [['scissors'], ['scissors'], ['scissors']]) diff --git a/rock_paper_scissors/test_rps.py b/rock_paper_scissors/test_rps.py index 9bcefd746..c3a0456c9 100644 --- a/rock_paper_scissors/test_rps.py +++ b/rock_paper_scissors/test_rps.py @@ -9,7 +9,7 @@ def test_rock_paper_scissors_output(self): self.assertEqual(rock_paper_scissors(2), [['rock', 'rock'], ['rock', 'paper'], ['rock', 'scissors'], ['paper', 'rock'], ['paper', 'paper'], ['paper', 'scissors'], ['scissors', 'rock'], ['scissors', 'paper'], ['scissors', 'scissors']]) self.assertEqual(rock_paper_scissors(3), [['rock', 'rock', 'rock'], ['rock', 'rock', 'paper'], ['rock', 'rock', 'scissors'], ['rock', 'paper', 'rock'], ['rock', 'paper', 'paper'], ['rock', 'paper', 'scissors'], ['rock', 'scissors', 'rock'], ['rock', 'scissors', 'paper'], ['rock', 'scissors', 'scissors'], ['paper', 'rock', 'rock'], ['paper', 'rock', 'paper'], ['paper', 'rock', 'scissors'], ['paper', 'paper', 'rock'], ['paper', 'paper', 'paper'], ['paper', 'paper', 'scissors'], ['paper', 'scissors', 'rock'], ['paper', 'scissors', 'paper'], ['paper', 'scissors', 'scissors'], ['scissors', 'rock', 'rock'], ['scissors', 'rock', 'paper'], ['scissors', 'rock', 'scissors'], ['scissors', 'paper', 'rock'], ['scissors', 'paper', 'paper'], ['scissors', 'paper', 'scissors'], ['scissors', 'scissors', 'rock'], ['scissors', 'scissors', 'paper'], ['scissors', 'scissors', 'scissors']]) self.assertEqual(rock_paper_scissors(4), [['rock', 'rock', 'rock', 'rock'], ['rock', 'rock', 'rock', 'paper'], ['rock', 'rock', 'rock', 'scissors'], ['rock', 'rock', 'paper', 'rock'], ['rock', 'rock', 'paper', 'paper'], ['rock', 'rock', 'paper', 'scissors'], ['rock', 'rock', 'scissors', 'rock'], ['rock', 'rock', 'scissors', 'paper'], ['rock', 'rock', 'scissors', 'scissors'], ['rock', 'paper', 'rock', 'rock'], ['rock', 'paper', 'rock', 'paper'], ['rock', 'paper', 'rock', 'scissors'], ['rock', 'paper', 'paper', 'rock'], ['rock', 'paper', 'paper', 'paper'], ['rock', 'paper', 'paper', 'scissors'], ['rock', 'paper', 'scissors', 'rock'], ['rock', 'paper', 'scissors', 'paper'], ['rock', 'paper', 'scissors', 'scissors'], ['rock', 'scissors', 'rock', 'rock'], ['rock', 'scissors', 'rock', 'paper'], ['rock', 'scissors', 'rock', 'scissors'], ['rock', 'scissors', 'paper', 'rock'], ['rock', 'scissors', 'paper', 'paper'], ['rock', 'scissors', 'paper', 'scissors'], ['rock', 'scissors', 'scissors', 'rock'], ['rock', 'scissors', 'scissors', 'paper'], ['rock', 'scissors', 'scissors', 'scissors'], ['paper', 'rock', 'rock', 'rock'], ['paper', 'rock', 'rock', 'paper'], ['paper', 'rock', 'rock', 'scissors'], ['paper', 'rock', 'paper', 'rock'], ['paper', 'rock', 'paper', 'paper'], ['paper', 'rock', 'paper', 'scissors'], ['paper', 'rock', 'scissors', 'rock'], ['paper', 'rock', 'scissors', 'paper'], ['paper', 'rock', 'scissors', 'scissors'], ['paper', 'paper', 'rock', 'rock'], ['paper', 'paper', 'rock', 'paper'], ['paper', 'paper', 'rock', 'scissors'], ['paper', 'paper', 'paper', 'rock'], ['paper', 'paper', 'paper', 'paper'], ['paper', 'paper', 'paper', 'scissors'], ['paper', 'paper', 'scissors', 'rock'], ['paper', 'paper', 'scissors', 'paper'], ['paper', 'paper', 'scissors', 'scissors'], ['paper', 'scissors', 'rock', 'rock'], ['paper', 'scissors', 'rock', 'paper'], ['paper', 'scissors', 'rock', 'scissors'], ['paper', 'scissors', 'paper', 'rock'], ['paper', 'scissors', 'paper', 'paper'], ['paper', 'scissors', 'paper', 'scissors'], ['paper', 'scissors', 'scissors', 'rock'], ['paper', 'scissors', 'scissors', 'paper'], ['paper', 'scissors', 'scissors', 'scissors'], ['scissors', 'rock', 'rock', 'rock'], ['scissors', 'rock', 'rock', 'paper'], ['scissors', 'rock', 'rock', 'scissors'], ['scissors', 'rock', 'paper', 'rock'], ['scissors', 'rock', 'paper', 'paper'], ['scissors', 'rock', 'paper', 'scissors'], ['scissors', 'rock', 'scissors', 'rock'], ['scissors', 'rock', 'scissors', 'paper'], ['scissors', 'rock', 'scissors', 'scissors'], ['scissors', 'paper', 'rock', 'rock'], ['scissors', 'paper', 'rock', 'paper'], ['scissors', 'paper', 'rock', 'scissors'], ['scissors', 'paper', 'paper', 'rock'], ['scissors', 'paper', 'paper', 'paper'], ['scissors', 'paper', 'paper', 'scissors'], ['scissors', 'paper', 'scissors', 'rock'], ['scissors', 'paper', 'scissors', 'paper'], ['scissors', 'paper', 'scissors', 'scissors'], ['scissors', 'scissors', 'rock', 'rock'], ['scissors', 'scissors', 'rock', 'paper'], ['scissors', 'scissors', 'rock', 'scissors'], ['scissors', 'scissors', 'paper', 'rock'], ['scissors', 'scissors', 'paper', 'paper'], ['scissors', 'scissors', 'paper', 'scissors'], ['scissors', 'scissors', 'scissors', 'rock'], ['scissors', 'scissors', 'scissors', 'paper'], ['scissors', 'scissors', 'scissors', 'scissors']]) - self.assertEqual(rock_paper_scissors(5), [['rock', 'rock', 'rock', 'rock', 'rock'], ['rock', 'rock', 'rock', 'rock', 'paper'], ['rock', 'rock', 'rock', 'rock', 'scissors'], ['rock', 'rock', 'rock', 'paper', 'rock'], ['rock', 'rock', 'rock', 'paper', 'paper'], ['rock', 'rock', 'rock', 'paper', 'scissors'], ['rock', 'rock', 'rock', 'scissors', 'rock'], ['rock', 'rock', 'rock', 'scissors', 'paper'], ['rock', 'rock', 'rock', 'scissors', 'scissors'], ['rock', 'rock', 'paper', 'rock', 'rock'], ['rock', 'rock', 'paper', 'rock', 'paper'], ['rock', 'rock', 'paper', 'rock', 'scissors'], ['rock', 'rock', 'paper', 'paper', 'rock'], ['rock', 'rock', 'paper', 'paper', 'paper'], ['rock', 'rock', 'paper', 'paper', 'scissors'], ['rock', 'rock', 'paper', 'scissors', 'rock'], ['rock', 'rock', 'paper', 'scissors', 'paper'], ['rock', 'rock', 'paper', 'scissors', 'scissors'], ['rock', 'rock', 'scissors', 'rock', 'rock'], ['rock', 'rock', 'scissors', 'rock', 'paper'], ['rock', 'rock', 'scissors', 'rock', 'scissors'], ['rock', 'rock', 'scissors', 'paper', 'rock'], ['rock', 'rock', 'scissors', 'paper', 'paper'], ['rock', 'rock', 'scissors', 'paper', 'scissors'], ['rock', 'rock', 'scissors', 'scissors', 'rock'], ['rock', 'rock', 'scissors', 'scissors', 'paper'], ['rock', 'rock', 'scissors', 'scissors', 'scissors'], ['rock', 'paper', 'rock', 'rock', 'rock'], ['rock', 'paper', 'rock', 'rock', 'paper'], ['rock', 'paper', 'rock', 'rock', 'scissors'], ['rock', 'paper', 'rock', 'paper', 'rock'], ['rock', 'paper', 'rock', 'paper', 'paper'], ['rock', 'paper', 'rock', 'paper', 'scissors'], ['rock', 'paper', 'rock', 'scissors', 'rock'], ['rock', 'paper', 'rock', 'scissors', 'paper'], ['rock', 'paper', 'rock', 'scissors', 'scissors'], ['rock', 'paper', 'paper', 'rock', 'rock'], ['rock', 'paper', 'paper', 'rock', 'paper'], ['rock', 'paper', 'paper', 'rock', 'scissors'], ['rock', 'paper', 'paper', 'paper', 'rock'], ['rock', 'paper', 'paper', 'paper', 'paper'], ['rock', 'paper', 'paper', 'paper', 'scissors'], ['rock', 'paper', 'paper', 'scissors', 'rock'], ['rock', 'paper', 'paper', 'scissors', 'paper'], ['rock', 'paper', 'paper', 'scissors', 'scissors'], ['rock', 'paper', 'scissors', 'rock', 'rock'], ['rock', 'paper', 'scissors', 'rock', 'paper'], ['rock', 'paper', 'scissors', 'rock', 'scissors'], ['rock', 'paper', 'scissors', 'paper', 'rock'], ['rock', 'paper', 'scissors', 'paper', 'paper'], ['rock', 'paper', 'scissors', 'paper', 'scissors'], ['rock', 'paper', 'scissors', 'scissors', 'rock'], ['rock', 'paper', 'scissors', 'scissors', 'paper'], ['rock', 'paper', 'scissors', 'scissors', 'scissors'], ['rock', 'scissors', 'rock', 'rock', 'rock'], ['rock', 'scissors', 'rock', 'rock', 'paper'], ['rock', 'scissors', 'rock', 'rock', 'scissors'], ['rock', 'scissors', 'rock', 'paper', 'rock'], ['rock', 'scissors', 'rock', 'paper', 'paper'], ['rock', 'scissors', 'rock', 'paper', 'scissors'], ['rock', 'scissors', 'rock', 'scissors', 'rock'], ['rock', 'scissors', 'rock', 'scissors', 'paper'], ['rock', 'scissors', 'rock', 'scissors', 'scissors'], ['rock', 'scissors', 'paper', 'rock', 'rock'], ['rock', 'scissors', 'paper', 'rock', 'paper'], ['rock', 'scissors', 'paper', 'rock', 'scissors'], ['rock', 'scissors', 'paper', 'paper', 'rock'], ['rock', 'scissors', 'paper', 'paper', 'paper'], ['rock', 'scissors', 'paper', 'paper', 'scissors'], ['rock', 'scissors', 'paper', 'scissors', 'rock'], ['rock', 'scissors', 'paper', 'scissors', 'paper'], ['rock', 'scissors', 'paper', 'scissors', 'scissors'], ['rock', 'scissors', 'scissors', 'rock', 'rock'], ['rock', 'scissors', 'scissors', 'rock', 'paper'], ['rock', 'scissors', 'scissors', 'rock', 'scissors'], ['rock', 'scissors', 'scissors', 'paper', 'rock'], ['rock', 'scissors', 'scissors', 'paper', 'paper'], ['rock', 'scissors', 'scissors', 'paper', 'scissors'], ['rock', 'scissors', 'scissors', 'scissors', 'rock'], ['rock', 'scissors', 'scissors', 'scissors', 'paper'], ['rock', 'scissors', 'scissors', 'scissors', 'scissors'], ['paper', 'rock', 'rock', 'rock', 'rock'], ['paper', 'rock', 'rock', 'rock', 'paper'], ['paper', 'rock', 'rock', 'rock', 'scissors'], ['paper', 'rock', 'rock', 'paper', 'rock'], ['paper', 'rock', 'rock', 'paper', 'paper'], ['paper', 'rock', 'rock', 'paper', 'scissors'], ['paper', 'rock', 'rock', 'scissors', 'rock'], ['paper', 'rock', 'rock', 'scissors', 'paper'], ['paper', 'rock', 'rock', 'scissors', 'scissors'], ['paper', 'rock', 'paper', 'rock', 'rock'], ['paper', 'rock', 'paper', 'rock', 'paper'], ['paper', 'rock', 'paper', 'rock', 'scissors'], ['paper', 'rock', 'paper', 'paper', 'rock'], ['paper', 'rock', 'paper', 'paper', 'paper'], ['paper', 'rock', 'paper', 'paper', 'scissors'], ['paper', 'rock', 'paper', 'scissors', 'rock'], ['paper', 'rock', 'paper', 'scissors', 'paper'], ['paper', 'rock', 'paper', 'scissors', 'scissors'], ['paper', 'rock', 'scissors', 'rock', 'rock'], ['paper', 'rock', 'scissors', 'rock', 'paper'], ['paper', 'rock', 'scissors', 'rock', 'scissors'], ['paper', 'rock', 'scissors', 'paper', 'rock'], ['paper', 'rock', 'scissors', 'paper', 'paper'], ['paper', 'rock', 'scissors', 'paper', 'scissors'], ['paper', 'rock', 'scissors', 'scissors', 'rock'], ['paper', 'rock', 'scissors', 'scissors', 'paper'], ['paper', 'rock', 'scissors', 'scissors', 'scissors'], ['paper', 'paper', 'rock', 'rock', 'rock'], ['paper', 'paper', 'rock', 'rock', 'paper'], ['paper', 'paper', 'rock', 'rock', 'scissors'], ['paper', 'paper', 'rock', 'paper', 'rock'], ['paper', 'paper', 'rock', 'paper', 'paper'], ['paper', 'paper', 'rock', 'paper', 'scissors'], ['paper', 'paper', 'rock', 'scissors', 'rock'], ['paper', 'paper', 'rock', 'scissors', 'paper'], ['paper', 'paper', 'rock', 'scissors', 'scissors'], ['paper', 'paper', 'paper', 'rock', 'rock'], ['paper', 'paper', 'paper', 'rock', 'paper'], ['paper', 'paper', 'paper', 'rock', 'scissors'], ['paper', 'paper', 'paper', 'paper', 'rock'], ['paper', 'paper', 'paper', 'paper', 'paper'], ['paper', 'paper', 'paper', 'paper', 'scissors'], ['paper', 'paper', 'paper', 'scissors', 'rock'], ['paper', 'paper', 'paper', 'scissors', 'paper'], ['paper', 'paper', 'paper', 'scissors', 'scissors'], ['paper', 'paper', 'scissors', 'rock', 'rock'], ['paper', 'paper', 'scissors', 'rock', 'paper'], ['paper', 'paper', 'scissors', 'rock', 'scissors'], ['paper', 'paper', 'scissors', 'paper', 'rock'], ['paper', 'paper', 'scissors', 'paper', 'paper'], ['paper', 'paper', 'scissors', 'paper', 'scissors'], ['paper', 'paper', 'scissors', 'scissors', 'rock'], ['paper', 'paper', 'scissors', 'scissors', 'paper'], ['paper', 'paper', 'scissors', 'scissors', 'scissors'], ['paper', 'scissors', 'rock', 'rock', 'rock'], ['paper', 'scissors', 'rock', 'rock', 'paper'], ['paper', 'scissors', 'rock', 'rock', 'scissors'], ['paper', 'scissors', 'rock', 'paper', 'rock'], ['paper', 'scissors', 'rock', 'paper', 'paper'], ['paper', 'scissors', 'rock', 'paper', 'scissors'], ['paper', 'scissors', 'rock', 'scissors', 'rock'], ['paper', 'scissors', 'rock', 'scissors', 'paper'], ['paper', 'scissors', 'rock', 'scissors', 'scissors'], ['paper', 'scissors', 'paper', 'rock', 'rock'], ['paper', 'scissors', 'paper', 'rock', 'paper'], ['paper', 'scissors', 'paper', 'rock', 'scissors'], ['paper', 'scissors', 'paper', 'paper', 'rock'], ['paper', 'scissors', 'paper', 'paper', 'paper'], ['paper', 'scissors', 'paper', 'paper', 'scissors'], ['paper', 'scissors', 'paper', 'scissors', 'rock'], ['paper', 'scissors', 'paper', 'scissors', 'paper'], ['paper', 'scissors', 'paper', 'scissors', 'scissors'], ['paper', 'scissors', 'scissors', 'rock', 'rock'], ['paper', 'scissors', 'scissors', 'rock', 'paper'], ['paper', 'scissors', 'scissors', 'rock', 'scissors'], ['paper', 'scissors', 'scissors', 'paper', 'rock'], ['paper', 'scissors', 'scissors', 'paper', 'paper'], ['paper', 'scissors', 'scissors', 'paper', 'scissors'], ['paper', 'scissors', 'scissors', 'scissors', 'rock'], ['paper', 'scissors', 'scissors', 'scissors', 'paper'], ['paper', 'scissors', 'scissors', 'scissors', 'scissors'], ['scissors', 'rock', 'rock', 'rock', 'rock'], ['scissors', 'rock', 'rock', 'rock', 'paper'], ['scissors', 'rock', 'rock', 'rock', 'scissors'], ['scissors', 'rock', 'rock', 'paper', 'rock'], ['scissors', 'rock', 'rock', 'paper', 'paper'], ['scissors', 'rock', 'rock', 'paper', 'scissors'], ['scissors', 'rock', 'rock', 'scissors', 'rock'], ['scissors', 'rock', 'rock', 'scissors', 'paper'], ['scissors', 'rock', 'rock', 'scissors', 'scissors'], ['scissors', 'rock', 'paper', 'rock', 'rock'], ['scissors', 'rock', 'paper', 'rock', 'paper'], ['scissors', 'rock', 'paper', 'rock', 'scissors'], ['scissors', 'rock', 'paper', 'paper', 'rock'], ['scissors', 'rock', 'paper', 'paper', 'paper'], ['scissors', 'rock', 'paper', 'paper', 'scissors'], ['scissors', 'rock', 'paper', 'scissors', 'rock'], ['scissors', 'rock', 'paper', 'scissors', 'paper'], ['scissors', 'rock', 'paper', 'scissors', 'scissors'], ['scissors', 'rock', 'scissors', 'rock', 'rock'], ['scissors', 'rock', 'scissors', 'rock', 'paper'], ['scissors', 'rock', 'scissors', 'rock', 'scissors'], ['scissors', 'rock', 'scissors', 'paper', 'rock'], ['scissors', 'rock', 'scissors', 'paper', 'paper'], ['scissors', 'rock', 'scissors', 'paper', 'scissors'], ['scissors', 'rock', 'scissors', 'scissors', 'rock'], ['scissors', 'rock', 'scissors', 'scissors', 'paper'], ['scissors', 'rock', 'scissors', 'scissors', 'scissors'], ['scissors', 'paper', 'rock', 'rock', 'rock'], ['scissors', 'paper', 'rock', 'rock', 'paper'], ['scissors', 'paper', 'rock', 'rock', 'scissors'], ['scissors', 'paper', 'rock', 'paper', 'rock'], ['scissors', 'paper', 'rock', 'paper', 'paper'], ['scissors', 'paper', 'rock', 'paper', 'scissors'], ['scissors', 'paper', 'rock', 'scissors', 'rock'], ['scissors', 'paper', 'rock', 'scissors', 'paper'], ['scissors', 'paper', 'rock', 'scissors', 'scissors'], ['scissors', 'paper', 'paper', 'rock', 'rock'], ['scissors', 'paper', 'paper', 'rock', 'paper'], ['scissors', 'paper', 'paper', 'rock', 'scissors'], ['scissors', 'paper', 'paper', 'paper', 'rock'], ['scissors', 'paper', 'paper', 'paper', 'paper'], ['scissors', 'paper', 'paper', 'paper', 'scissors'], ['scissors', 'paper', 'paper', 'scissors', 'rock'], ['scissors', 'paper', 'paper', 'scissors', 'paper'], ['scissors', 'paper', 'paper', 'scissors', 'scissors'], ['scissors', 'paper', 'scissors', 'rock', 'rock'], ['scissors', 'paper', 'scissors', 'rock', 'paper'], ['scissors', 'paper', 'scissors', 'rock', 'scissors'], ['scissors', 'paper', 'scissors', 'paper', 'rock'], ['scissors', 'paper', 'scissors', 'paper', 'paper'], ['scissors', 'paper', 'scissors', 'paper', 'scissors'], ['scissors', 'paper', 'scissors', 'scissors', 'rock'], ['scissors', 'paper', 'scissors', 'scissors', 'paper'], ['scissors', 'paper', 'scissors', 'scissors', 'scissors'], ['scissors', 'scissors', 'rock', 'rock', 'rock'], ['scissors', 'scissors', 'rock', 'rock', 'paper'], ['scissors', 'scissors', 'rock', 'rock', 'scissors'], ['scissors', 'scissors', 'rock', 'paper', 'rock'], ['scissors', 'scissors', 'rock', 'paper', 'paper'], ['scissors', 'scissors', 'rock', 'paper', 'scissors'], ['scissors', 'scissors', 'rock', 'scissors', 'rock'], ['scissors', 'scissors', 'rock', 'scissors', 'paper'], ['scissors', 'scissors', 'rock', 'scissors', 'scissors'], ['scissors', 'scissors', 'paper', 'rock', 'rock'], ['scissors', 'scissors', 'paper', 'rock', 'paper'], ['scissors', 'scissors', 'paper', 'rock', 'scissors'], ['scissors', 'scissors', 'paper', 'paper', 'rock'], ['scissors', 'scissors', 'paper', 'paper', 'paper'], ['scissors', 'scissors', 'paper', 'paper', 'scissors'], ['scissors', 'scissors', 'paper', 'scissors', 'rock'], ['scissors', 'scissors', 'paper', 'scissors', 'paper'], ['scissors', 'scissors', 'paper', 'scissors', 'scissors'], ['scissors', 'scissors', 'scissors', 'rock', 'rock'], ['scissors', 'scissors', 'scissors', 'rock', 'paper'], ['scissors', 'scissors', 'scissors', 'rock', 'scissors'], ['scissors', 'scissors', 'scissors', 'paper', 'rock'], ['scissors', 'scissors', 'scissors', 'paper', 'paper'], ['scissors', 'scissors', 'scissors', 'paper', 'scissors'], ['scissors', 'scissors', 'scissors', 'scissors', 'rock'], ['scissors', 'scissors', 'scissors', 'scissors', 'paper'], ['scissors', 'scissors', 'scissors', 'scissors', 'scissors']]) + self.assertEqual(rock_paper_scissors(5), [['rock', 'rock', 'rock', 'rock', 'rock'], ['rock', 'rock', 'rock', 'rock', 'paper'], ['rock', 'rock', 'rock', 'rock', 'scissors'], ['rock', 'rock', 'rock', 'paper', 'rock'], ['rock', 'rock', 'rock', 'paper', 'paper'], ['rock', 'rock', 'rock', 'paper', 'scissors'], ['rock', 'rock', 'rock', 'scissors', 'rock'], ['rock', 'rock', 'rock', 'scissors', 'paper'], ['rock', 'rock', 'rock', 'scissors', 'scissors'], ['rock', 'rock', 'paper', 'rock', 'rock'], ['rock', 'rock', 'paper', 'rock', 'paper'], ['rock', 'rock', 'paper', 'rock', 'scissors'], ['rock', 'rock', 'paper', 'paper', 'rock'], ['rock', 'rock', 'paper', 'paper', 'paper'], ['rock', 'rock', 'paper', 'paper', 'scissors'], ['rock', 'rock', 'paper', 'scissors', 'rock'], ['rock', 'rock', 'paper', 'scissors', 'paper'], ['rock', 'rock', 'paper', 'scissors', 'scissors'], ['rock', 'rock', 'scissors', 'rock', 'rock'], ['rock', 'rock', 'scissors', 'rock', 'paper'], ['rock', 'rock', 'scissors', 'rock', 'scissors'], ['rock', 'rock', 'scissors', 'paper', 'rock'], ['rock', 'rock', 'scissors', 'paper', 'paper'], ['rock', 'rock', 'scissors', 'paper', 'scissors'], ['rock', 'rock', 'scissors', 'scissors', 'rock'], ['rock', 'rock', 'scissors', 'scissors', 'paper'], ['rock', 'rock', 'scissors', 'scissors', 'scissors'], ['rock', 'paper', 'rock', 'rock', 'rock'], ['rock', 'paper', 'rock', 'rock', 'paper'], ['rock', 'paper', 'rock', 'rock', 'scissors'], ['rock', 'paper', 'rock', 'paper', 'rock'], ['rock', 'paper', 'rock', 'paper', 'paper'], ['rock', 'paper', 'rock', 'paper', 'scissors'], ['rock', 'paper', 'rock', 'scissors', 'rock'], ['rock', 'paper', 'rock', 'scissors', 'paper'], ['rock', 'paper', 'rock', 'scissors', 'scissors'], ['rock', 'paper', 'paper', 'rock', 'rock'], ['rock', 'paper', 'paper', 'rock', 'paper'], ['rock', 'paper', 'paper', 'rock', 'scissors'], ['rock', 'paper', 'paper', 'paper', 'rock'], ['rock', 'paper', 'paper', 'paper', 'paper'], ['rock', 'paper', 'paper', 'paper', 'scissors'], ['rock', 'paper', 'paper', 'scissors', 'rock'], ['rock', 'paper', 'paper', 'scissors', 'paper'], ['rock', 'paper', 'paper', 'scissors', 'scissors'], ['rock', 'paper', 'scissors', 'rock', 'rock'], ['rock', 'paper', 'scissors', 'rock', 'paper'], ['rock', 'paper', 'scissors', 'rock', 'scissors'], ['rock', 'paper', 'scissors', 'paper', 'rock'], ['rock', 'paper', 'scissors', 'paper', 'paper'], ['rock', 'paper', 'scissors', 'paper', 'scissors'], ['rock', 'paper', 'scissors', 'scissors', 'rock'], ['rock', 'paper', 'scissors', 'scissors', 'paper'], ['rock', 'paper', 'scissors', 'scissors', 'scissors'], ['rock', 'scissors', 'rock', 'rock', 'rock'], ['rock', 'scissors', 'rock', 'rock', 'paper'], ['rock', 'scissors', 'rock', 'rock', 'scissors'], ['rock', 'scissors', 'rock', 'paper', 'rock'], ['rock', 'scissors', 'rock', 'paper', 'paper'], ['rock', 'scissors', 'rock', 'paper', 'scissors'], ['rock', 'scissors', 'rock', 'scissors', 'rock'], ['rock', 'scissors', 'rock', 'scissors', 'paper'], ['rock', 'scissors', 'rock', 'scissors', 'scissors'], ['rock', 'scissors', 'paper', 'rock', 'rock'], ['rock', 'scissors', 'paper', 'rock', 'paper'], ['rock', 'scissors', 'paper', 'rock', 'scissors'], ['rock', 'scissors', 'paper', 'paper', 'rock'], ['rock', 'scissors', 'paper', 'paper', 'paper'], ['rock', 'scissors', 'paper', 'paper', 'scissors'], ['rock', 'scissors', 'paper', 'scissors', 'rock'], ['rock', 'scissors', 'paper', 'scissors', 'paper'], ['rock', 'scissors', 'paper', 'scissors', 'scissors'], ['rock', 'scissors', 'scissors', 'rock', 'rock'], ['rock', 'scissors', 'scissors', 'rock', 'paper'], ['rock', 'scissors', 'scissors', 'rock', 'scissors'], ['rock', 'scissors', 'scissors', 'paper', 'rock'], ['rock', 'scissors', 'scissors', 'paper', 'paper'], ['rock', 'scissors', 'scissors', 'paper', 'scissors'], ['rock', 'scissors', 'scissors', 'scissors', 'rock'], ['rock', 'scissors', 'scissors', 'scissors', 'paper'], ['rock', 'scissors', 'scissors', 'scissors', 'scissors'], ['paper', 'rock', 'rock', 'rock', 'rock'], ['paper', 'rock', 'rock', 'rock', 'paper'], ['paper', 'rock', 'rock', 'rock', 'scissors'], ['paper', 'rock', 'rock', 'paper', 'rock'], ['paper', 'rock', 'rock', 'paper', 'paper'], ['paper', 'rock', 'rock', 'paper', 'scissors'], ['paper', 'rock', 'rock', 'scissors', 'rock'], ['paper', 'rock', 'rock', 'scissors', 'paper'], ['paper', 'rock', 'rock', 'scissors', 'scissors'], ['paper', 'rock', 'paper', 'rock', 'rock'], ['paper', 'rock', 'paper', 'rock', 'paper'], ['paper', 'rock', 'paper', 'rock', 'scissors'], ['paper', 'rock', 'paper', 'paper', 'rock'], ['paper', 'rock', 'paper', 'paper', 'paper'], ['paper', 'rock', 'paper', 'paper', 'scissors'], ['paper', 'rock', 'paper', 'scissors', 'rock'], ['paper', 'rock', 'paper', 'scissors', 'paper'], ['paper', 'rock', 'paper', 'scissors', 'scissors'], ['paper', 'rock', 'scissors', 'rock', 'rock'], ['paper', 'rock', 'scissors', 'rock', 'paper'], ['paper', 'rock', 'scissors', 'rock', 'scissors'], ['paper', 'rock', 'scissors', 'paper', 'rock'], ['paper', 'rock', 'scissors', 'paper', 'paper'], ['paper', 'rock', 'scissors', 'paper', 'scissors'], ['paper', 'rock', 'scissors', 'scissors', 'rock'], ['paper', 'rock', 'scissors', 'scissors', 'paper'], ['paper', 'rock', 'scissors', 'scissors', 'scissors'], ['paper', 'paper', 'rock', 'rock', 'rock'], ['paper', 'paper', 'rock', 'rock', 'paper'], ['paper', 'paper', 'rock', 'rock', 'scissors'], ['paper', 'paper', 'rock', 'paper', 'rock'], ['paper', 'paper', 'rock', 'paper', 'paper'], ['paper', 'paper', 'rock', 'paper', 'scissors'], ['paper', 'paper', 'rock', 'scissors', 'rock'], ['paper', 'paper', 'rock', 'scissors', 'paper'], ['paper', 'paper', 'rock', 'scissors', 'scissors'], ['paper', 'paper', 'paper', 'rock', 'rock'], ['paper', 'paper', 'paper', 'rock', 'paper'], ['paper', 'paper', 'paper', 'rock', 'scissors'], ['paper', 'paper', 'paper', 'paper', 'rock'], ['paper', 'paper', 'paper', 'paper', 'paper'], ['paper', 'paper', 'paper', 'paper', 'scissors'], ['paper', 'paper', 'paper', 'scissors', 'rock'], ['paper', 'paper', 'paper', 'scissors', 'paper'], ['paper', 'paper', 'paper', 'scissors', 'scissors'], ['paper', 'paper', 'scissors', 'rock', 'rock'], ['paper', 'paper', 'scissors', 'rock', 'paper'], ['paper', 'paper', 'scissors', 'rock', 'scissors'], ['paper', 'paper', 'scissors', 'paper', 'rock'], ['paper', 'paper', 'scissors', 'paper', 'paper'], ['paper', 'paper', 'scissors', 'paper', 'scissors'], ['paper', 'paper', 'scissors', 'scissors', 'rock'], ['paper', 'paper', 'scissors', 'scissors', 'paper'], ['paper', 'paper', 'scissors', 'scissors', 'scissors'], ['paper', 'scissors', 'rock', 'rock', 'rock'], ['paper', 'scissors', 'rock', 'rock', 'paper'], ['paper', 'scissors', 'rock', 'rock', 'scissors'], ['paper', 'scissors', 'rock', 'paper', 'rock'], ['paper', 'scissors', 'rock', 'paper', 'paper'], ['paper', 'scissors', 'rock', 'paper', 'scissors'], ['paper', 'scissors', 'rock', 'scissors', 'rock'], ['paper', 'scissors', 'rock', 'scissors', 'paper'], ['paper', 'scissors', 'rock', 'scissors', 'scissors'], ['paper', 'scissors', 'paper', 'rock', 'rock'], ['paper', 'scissors', 'paper', 'rock', 'paper'], ['paper', 'scissors', 'paper', 'rock', 'scissors'], ['paper', 'scissors', 'paper', 'paper', 'rock'], ['paper', 'scissors', 'paper', 'paper', 'paper'], ['paper', 'scissors', 'paper', 'paper', 'scissors'], ['paper', 'scissors', 'paper', 'scissors', 'rock'], ['paper', 'scissors', 'paper', 'scissors', 'paper'], ['paper', 'scissors', 'paper', 'scissors', 'scissors'], ['paper', 'scissors', 'scissors', 'rock', 'rock'], ['paper', 'scissors', 'scissors', 'rock', 'paper'], ['paper', 'scissors', 'scissors', 'rock', 'scissors'], ['paper', 'scissors', 'scissors', 'paper', 'rock'], ['paper', 'scissors', 'scissors', 'paper', 'paper'], ['paper', 'scissors', 'scissors', 'paper', 'scissors'], ['paper', 'scissors', 'scissors', 'scissors', 'rock'], ['paper', 'scissors', 'scissors', 'scissors', 'paper'], ['paper', 'scissors', 'scissors', 'scissors', 'scissors'], ['scissors', 'rock', 'rock', 'rock', 'rock'], ['scissors', 'rock', 'rock', 'rock', 'paper'], ['scissors', 'rock', 'rock', 'rock', 'scissors'], ['scissors', 'rock', 'rock', 'paper', 'rock'], ['scissors', 'rock', 'rock', 'paper', 'paper'], ['scissors', 'rock', 'rock', 'paper', 'scissors'], ['scissors', 'rock', 'rock', 'scissors', 'rock'], ['scissors', 'rock', 'rock', 'scissors', 'paper'], ['scissors', 'rock', 'rock', 'scissors', 'scissors'], ['scissors', 'rock', 'paper', 'rock', 'rock'], ['scissors', 'rock', 'paper', 'rock', 'paper'], ['scissors', 'rock', 'paper', 'rock', 'scissors'], ['scissors', 'rock', 'paper', 'paper', 'rock'], ['scissors', 'rock', 'paper', 'paper', 'paper'], ['scissors', 'rock', 'paper', 'paper', 'scissors'], ['scissors', 'rock', 'paper', 'scissors', 'rock'], ['scissors', 'rock', 'paper', 'scissors', 'paper'], ['scissors', 'rock', 'paper', 'scissors', 'scissors'], ['scissors', 'rock', 'scissors', 'rock', 'rock'], ['scissors', 'rock', 'scissors', 'rock', 'paper'], ['scissors', 'rock', 'scissors', 'rock', 'scissors'], ['scissors', 'rock', 'scissors', 'paper', 'rock'], ['scissors', 'rock', 'scissors', 'paper', 'paper'], ['scissors', 'rock', 'scissors', 'paper', 'scissors'], ['scissors', 'rock', 'scissors', 'scissors', 'rock'], ['scissors', 'rock', 'scissors', 'scissors', 'paper'], ['scissors', 'rock', 'scissors', 'scissors', 'scissors'], ['scissors', 'paper', 'rock', 'rock', 'rock'], ['scissors', 'paper', 'rock', 'rock', 'paper'], ['scissors', 'paper', 'rock', 'rock', 'scissors'], ['scissors', 'paper', 'rock', 'paper', 'rock'], ['scissors', 'paper', 'rock', 'paper', 'paper'], ['scissors', 'paper', 'rock', 'paper', 'scissors'], ['scissors', 'paper', 'rock', 'scissors', 'rock'], ['scissors', 'paper', 'rock', 'scissors', 'paper'], ['scissors', 'paper', 'rock', 'scissors', 'scissors'], ['scissors', 'paper', 'paper', 'rock', 'rock'], ['scissors', 'paper', 'paper', 'rock', 'paper'], ['scissors', 'paper', 'paper', 'rock', 'scissors'], ['scissors', 'paper', 'paper', 'paper', 'rock'], ['scissors', 'paper', 'paper', 'paper', 'paper'], ['scissors', 'paper', 'paper', 'paper', 'scissors'], ['scissors', 'paper', 'paper', 'scissors', 'rock'], ['scissors', 'paper', 'paper', 'scissors', 'paper'], ['scissors', 'paper', 'paper', 'scissors', 'scissors'], ['scissors', 'paper', 'scissors', 'rock', 'rock'], ['scissors', 'paper', 'scissors', 'rock', 'paper'], ['scissors', 'paper', 'scissors', 'rock', 'scissors'], ['scissors', 'paper', 'scissors', 'paper', 'rock'], ['scissors', 'paper', 'scissors', 'paper', 'paper'], ['scissors', 'paper', 'scissors', 'paper', 'scissors'], ['scissors', 'paper', 'scissors', 'scissors', 'rock'], ['scissors', 'paper', 'scissors', 'scissors', 'paper'], ['scissors', 'paper', 'scissors', 'scissors', 'scissors'], ['scissors', 'scissors', 'rock', 'rock', 'rock'], ['scissors', 'scissors', 'rock', 'rock', 'paper'], ['scissors', 'scissors', 'rock', 'rock', 'scissors'], ['scissors', 'scissors', 'rock', 'paper', 'rock'], ['scissors', 'scissors', 'rock', 'paper', 'paper'], ['scissors', 'scissors', 'rock', 'paper', 'scissors'], ['scissors', 'scissors', 'rock', 'scissors', 'rock'], ['scissors', 'scissors', 'rock', 'scissors', 'paper'], ['scissors', 'scissors', 'rock', 'scissors', 'scissors'], ['scissors', 'scissors', 'paper', 'rock', 'rock'], ['scissors', 'scissors', 'paper', 'rock', 'paper'], ['scissors', 'scissors', 'paper', 'rock', 'scissors'], ['scissors', 'scissors', 'paper', 'paper', 'rock'], ['scissors', 'scissors', 'paper', 'paper', 'paper'], ['scissors', 'scissors', 'paper', 'paper', 'scissors'], ['scissors', 'scissors', 'paper', 'scissors', 'rock'], ['scissors', 'scissors', 'paper', 'scissors', 'paper'], ['scissors', 'scissors', 'paper', 'scissors', 'scissors'], ['scissors', 'scissors', 'scissors', 'rock', 'rock'], ['scissors', 'scissors', 'scissors', 'rock', 'paper'], ['scissors', 'scissors', 'scissors', 'rock', 'scissors'], ['scissors', 'scissors', 'scissors', 'paper', 'rock'], ['scissors', 'scissors', 'scissors', 'paper', 'paper'], ['scissors', 'scissors', 'scissors', 'paper', 'scissors'], ['scissors', 'scissors', 'scissors', 'scissors', 'rock'], ['scissors', 'scissors', 'scissors', 'scissors', 'paper'], ['scissors', 'scissors', 'scissors', 'scissors', 'scissors']]) if __name__ == '__main__': From 7c23fd81cb2a6de2d536637845da8d44d8a1179a Mon Sep 17 00:00:00 2001 From: Dan Morse Date: Thu, 9 Apr 2020 11:52:59 -0700 Subject: [PATCH 6/7] making_change first pass, recursive --- making_change/making_change.py | 59 ++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 10 deletions(-) diff --git a/making_change/making_change.py b/making_change/making_change.py index 9adad4470..01235a002 100644 --- a/making_change/making_change.py +++ b/making_change/making_change.py @@ -1,17 +1,56 @@ #!/usr/bin/python +def making_change(amount, denominations): + + return get_combinations(amount, denominations) + # if you can subtract down to 0, return 1. Because that's one possibility + # if it's < 0 return 0 because it doesn't match + # for coin in array of coins, subtract the amount of the coin from the remaining and add the result to possible ways + + +def get_combinations(amount, denominations, index=0): + total_ways = 0 + + if amount == 0: + return 1 + if amount < 0: + return 0 + + for current_index in range(index, len(denominations)): + new_amount = amount - denominations[current_index] + total_ways += get_combinations(new_amount, denominations, current_index) + + return total_ways + + import sys +""" +20 + 10 + 0 + 10 + 5 + 5 +""" + + + +print(making_change(6, [1, 5, 10, 25, 50])) + +# if that combo.sort() not in dict, increase count + + + -def making_change(amount, denominations): - pass if __name__ == "__main__": - # Test our your implementation from the command line - # with `python making_change.py [amount]` with different amounts - if len(sys.argv) > 1: - denominations = [1, 5, 10, 25, 50] - amount = int(sys.argv[1]) - print("There are {ways} ways to make {amount} cents.".format(ways=making_change(amount, denominations), amount=amount)) - else: - print("Usage: making_change.py [amount]") \ No newline at end of file + # Test our your implementation from the command line + # with `python making_change.py [amount]` with different amounts + if len(sys.argv) > 1: + denominations = [1, 5, 10, 25, 50] + amount = int(sys.argv[1]) + print("There are {ways} ways to make {amount} cents.".format(ways=making_change(amount, denominations), + amount=amount)) + else: + print("Usage: making_change.py [amount]") From 1b3fa5bf271a181e69f035d051c99f428765a14f Mon Sep 17 00:00:00 2001 From: Dan Morse Date: Thu, 9 Apr 2020 13:24:14 -0700 Subject: [PATCH 7/7] added dynamic programming solution to be able to complete large test --- making_change/making_change.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/making_change/making_change.py b/making_change/making_change.py index 01235a002..6a6d94f1c 100644 --- a/making_change/making_change.py +++ b/making_change/making_change.py @@ -2,7 +2,7 @@ def making_change(amount, denominations): - return get_combinations(amount, denominations) + return dynamic_get_combinations(amount, denominations) # if you can subtract down to 0, return 1. Because that's one possibility # if it's < 0 return 0 because it doesn't match # for coin in array of coins, subtract the amount of the coin from the remaining and add the result to possible ways @@ -22,6 +22,17 @@ def get_combinations(amount, denominations, index=0): return total_ways +def dynamic_get_combinations(amount, denominations): + combinations_array = [0 for number in range(amount + 1)] + combinations_array[0] = 1 + for index in range(len(denominations)): + for sub_index in range(len(combinations_array)): + denomination = denominations[index] + if sub_index >= denomination: + combinations_array[sub_index] += combinations_array[sub_index - denomination] + + return combinations_array[amount] + import sys """ @@ -35,7 +46,7 @@ def get_combinations(amount, denominations, index=0): -print(making_change(6, [1, 5, 10, 25, 50])) +print(dynamic_get_combinations(12, [1, 2, 5]))#, 10, 25, 50])) # if that combo.sort() not in dict, increase count