To try and encourage more sales of the 5 different Harry Potter books they sell, a bookshop has decided to offer discounts of multiple-book purchases.
One copy of any of the five books costs 8 EUR.
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 go the whole hog, and buy all 5, you get a huge 25% discount.
Note that if you buy, say, 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 EUR.
Your mission is to write a piece of code to calculate the price of any conceivable shopping basket (containing only Harry Potter books), giving as big a discount as possible.
For example, how much does this basket of books cost?
- 2 copies of the first book
- 2 copies of the second book
- 2 copies of the third book
- 1 copy of the fourth book
- 1 copy of the fifth book
Answer: 51.20 EUR
I | II | III | IV | V | Formula | Price |
---|---|---|---|---|---|---|
1 | 1 * 8 | 8.00 | ||||
1 | 1 | 2 * 8 * 0.95 | 15.20 | |||
1 | 1 | 1 | 3 * 8 * 0.9 | 21.60 | ||
1 | 1 | 1 | 1 | 4 * 8 * 0.8 | 25.60 | |
1 | 1 | 1 | 1 | 1 | 5 * 8 * 0.75 | 30.00 |
2 | 2 * 8 | 16.00 | ||||
2 | 1 | 2 * 8 * 0.95 + 1 * 8 | 23.20 | |||
2 | 1 | 1 | 3 * 8 * 0.90 + 1 * 8 | 29.60 | ||
2 | 2 | 2 | 1 | 1 | 4 * 8 * 0.8 + 4 * 8 * 0.8 | 51.20 |
- The reference Implementation is done in Kotlin
- All tests are written in SPOCK and Groovy to show the power of this testing framework
- Further all the functions should be accessible via REST API to show the simplicity of Kotlin/ Spring Boot in combination of testing Spring Boot with Spock
- When you do
maven install
abuild
directory is created with a 'living documentation' in it, in Behavior Driven Development style