To try and encourage more sales of different books from a popular 5 book series, a bookshop has decided to offer discounts on multiple book purchases.
One copy of any of the five books costs $8.
If, however, you buy two different books, you get a 5% discount on those two books.
If you buy 3 different books, you get a 10% discount.
If you buy 4 different books, you get a 20% discount.
If you buy all 5, you get a 25% discount.
Note that if you buy four books, of which 3 are different titles, you get a 10% discount on the 3 that form part of a set, but the fourth book still costs $8.
Your mission is to write code to calculate the price of any conceivable shopping basket (containing only books of the same series), giving as big a discount as possible.
For example, how much does this basket of books cost?
One way of grouping these 8 books is:
This would give a total of:
Resulting in:
Which equals $51.60.
However, a different way to group these 8 books is:
This would give a total of:
Resulting in:
Which equals $51.20.
And $51.20 is the price with the biggest discount.
Define a single Go func, Cost, which calculates the cost for a given list of books based on the defined discounts.
Use the following signature for func Cost:
func Cost(books []int) int
Cost will return the total cost (after discounts) in cents. For example, for a single book, the cost is 800 cents, which equals $8.00. Only integer calculations are necessary for this exercise.
Sign up to Exercism to learn and master Go with 34 concepts, 141 exercises, and real human mentoring, all for free.