This started out as a simple solution to https://exercism.org/tracks/python/exercises/change and morphed into a way to search for "optimal" coin sets (because why not).
Welcome to Change on Exercism's Python Track.
If you need help running the tests or submitting your code, check out HELP.md
.
Correctly determine the fewest number of coins to be given to a customer such that the sum of the coins' value would equal the correct amount of change.
- An input of 15 with [1, 5, 10, 25, 100] should return one nickel (5) and one dime (10) or [5, 10]
- An input of 40 with [1, 5, 10, 25, 100] should return one nickel (5) and one dime (10) and one quarter (25) or [5, 10, 25]
- Does your algorithm work for any given set of coins?
- Can you ask for negative change?
- Can you ask for a change value smaller than the smallest coin value?
Sometimes it is necessary to raise an exception. When you do this, you should always include a meaningful error message to indicate what the source of the error is. This makes your code more readable and helps significantly with debugging. For situations where you know that the error source will be a certain type, you can choose to raise one of the built in error types, but should still include a meaningful message.
This particular exercise requires that you use the raise statement to "throw" a ValueError
when change cannot be made with the coins given. The tests will only pass if you both raise
the exception
and include a message with it.
To raise a ValueError
with a message, write the message as an argument to the exception
type:
# example when change cannot be made with the coins passed in
raise ValueError("can't make target with given coins")
- @justani
- @BethanyG
- @cmccandless
- @Dog
- @ikhadykin
- @lucasdpau
- @N-Parsons
- @RJTK
- @sdublish
- @smalley
- @tqa236
Software Craftsmanship - Coin Change Kata - https://web.archive.org/web/20130115115225/http://craftsmanship.sv.cmu.edu:80/exercises/coin-change-kata