Origins

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).

Change

Welcome to Change on Exercism's Python Track. If you need help running the tests or submitting your code, check out HELP.md.

Instructions

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.

For example

  • 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]

Edge cases

  • 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?

Exception messages

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")

Source

Created by

  • @justani

Contributed to by

  • @BethanyG
  • @cmccandless
  • @Dog
  • @ikhadykin
  • @lucasdpau
  • @N-Parsons
  • @RJTK
  • @sdublish
  • @smalley
  • @tqa236

Based on

Software Craftsmanship - Coin Change Kata - https://web.archive.org/web/20130115115225/http://craftsmanship.sv.cmu.edu:80/exercises/coin-change-kata