Wisselgeld

Wisselgeld#

Opgave 1#

Schrijf een functie exact_change(target_amount, L) die een integer target_amount accepteert (een hoeveelheid geld in centen) en een lijst L die munten van type int (centen) bevat.

De functie controleert of het bedrag target_amount betaald kan worden met de munten in L. Indien het bedrag betaald kan worden geeft de functie True terug en anders False.

Gebruik de volgende assertions om jouw oplossing te controleren:

assert exact_change(100, [5, 5, 5, 10, 10, 25, 50]) == True # 5 + 10 + 10 + 25 + 50
assert exact_change(120, [5, 5, 5, 10, 10, 25, 50]) == False # 5 + 5 + 5 +10 + 10 + 25 + 50 = 110
assert exact_change(32, [1, 5, 5, 10, 10, 25, 50]) == False # 25 + 5 + 1 = 31. 32 is niet mogelijk.
assert exact_change(42, []) is False # er zijn geen munten ...
assert exact_change(0, [5, 5]) is True # er is geen bedrag te betalen ...

Opgave 2#

Schrijf een functie num_coins(target_amount, L) die een integer target_amount accepteert (een hoeveelheid geld in centen) en een lijst L die munten van type int (centen) bevat.

De functie geeft terug hoeveel munten uit L gebruikt moeten worden om het bedrag target_amount te kunnen betalen. Indien meerdere opties mogelijk zijn dan mag elke willekeurige optie worden teruggegeven. Maar als het niet mogelijk is om het bedrag target_amount te betalen met de munten in L dan zal de functie 0 moeten teruggeven.

Voorbeelden:

assert num_coins(100, [5, 5, 5, 10, 10, 25, 50]) == 5 # 5 + 10 + 10 + 25 + 50
assert num_coins(120, [5, 5, 5, 10, 10, 25, 50]) == 0 # 5 + 5 + 5 +10 + 10 + 25 + 50 = 110
assert num_coins(32, [1, 5, 5, 10, 10, 25, 50]) == 0 # 25 + 5 + 1 = 31. 32 is niet mogelijk.
assert num_coins(0, [5, 5]) == 0
assert num_coins(42, []) == 0

Opgave 3#

Schrijf een functie min_coins(target_amount, L) die een integer target_amount accepteert (een hoeveelheid geld in centen) en een lijst L die munten van type int (centen) bevat.

De functie geeft de minimale hoeveelheid munten terug die gebruikt moet worden om het bedrag te betalen. Indien het niet mogelijk is om het bedrag te betalen, dan geeft de functie -1 terug.

Voorbeelden:

assert min_coins(100, [5, 5, 5, 10, 10, 25, 50]) == 5 # 5 + 10 + 10 + 25 + 50
assert min_coins(120, [5, 5, 5, 10, 10, 25, 50]) == -1 # 5 + 5 + 5 +10 + 10 + 25 + 50 = 110
assert min_coins(32, [1, 5, 5, 10, 10, 25, 50]) == -1 # 25 + 5 + 1 = 31. 32 is niet mogelijk.