Om contant betalingsverkeer mogelijk te maken, worden geldbriefjes en muntstukken uitgegeven. De toegelaten waarde van die briefjes en munten wordt vastgelegd via een rij gehele getallen. Per object van de te programmeren klasse MuntProbleem houden we per toegelaten waarde een aatal munten/briefjes bij. Bij aanmaak van een object van de klasse MuntProbleem is het aantal beschikbare munten en briefjes 0 (m.a.w. de portefeuille is leeg ...).

Programmer in de klasse MuntProbleem het volgende:

Voorbeeld

Tabblad 1

m = MuntProbleem([2, 6, 9])
m += (7, 2)
print(m) #[(7, 2), (0, 6), (0, 9)]
m += (8, 2)
print(m) #[(15, 2), (0, 6), (0, 9)]

for a in [('ab', 6), (5, 2), (4, 3), [1, 5], (9, 6)]:
	m += a
print(m) #[(20, 2), (9, 6), (0, 9)]

m = MuntProbleem([3, 4])
m += (3, 2)
print(m) #[(0, 3), (0, 4)]
m += 'a'
print(m) #[(0, 3), (0, 4)]

for a in [1, [1, 5], (9, 4), (7, 3), (10, 3)]:
	m += a
print(m) #[(17, 3), (9, 4)]

Tabblad 2

m = MuntProbleem([1, 2, 5, 8])
print(m.betaal_gulzig(37)) #(0, 0, 1, 4)

m = MuntProbleem([1, 2, 5, 8])
print(m.betaal_gulzig(66)) #(0, 1, 0, 8)

Tabblad 3

m = MuntProbleem([3, 7, 10])
for a in [(5, 3), (10, 10), (10, 3), (7, 7), (3, 3), (5, 10), (1, 7), (7, 7)]:
	m += a
print(m) #[(18, 3), (15, 7), (15, 10)]
print(sorted(m.betaal(60))) #[(0, 0, 6), (1, 1, 5), (2, 2, 4), (3, 3, 3), (4, 4, 2), (5, 5, 1), (6, 6, 0), (10, 0, 3), (11, 1, 2), (12, 2, 1), (13, 3, 0), (20, 0, 0)]
print(sorted(m.betaal_budget(60))) #[(0, 0, 6), (1, 1, 5), (2, 2, 4), (3, 3, 3), (4, 4, 2), (5, 5, 1), (6, 6, 0), (10, 0, 3), (11, 1, 2), (12, 2, 1), (13, 3, 0)]

m = MuntProbleem([2, 5, 8])
for a in [(4, 8), (2, 2), (7, 5), (1, 8), (4, 8), (9, 8), (5, 5), (8, 2)]:
	m += a
print(m) #[(10, 2), (12, 5), (18, 8)]
print(sorted(m.betaal(33))) #[(0, 5, 1), (1, 3, 2), (2, 1, 3), (4, 5, 0), (5, 3, 1), (6, 1, 2), (9, 3, 0), (10, 1, 1), (14, 1, 0)]
print(sorted(m.betaal_budget(33))) #[(0, 5, 1), (1, 3, 2), (2, 1, 3), (4, 5, 0), (5, 3, 1), (6, 1, 2), (9, 3, 0), (10, 1, 1)]