In een dobbelspel met $$N$$ dobbelstenen is het de bedoeling om de som van de ogen van alle dobbelstenen zo groot mogelijk te maken. Elke dobbelsteen levert een resultaat tussen 1 en 6 (grenzen inbegrepen). Hierbij kan de speler een aantal keer gooien, en na elke gooi beslissen om een aantal dobbelstenen afzonderlijk te houden, en de waarde ervan constant te houden (met deze stenen wordt dus niet langer gegooid). In deze oefening programmeren we een aantal strategieƫen om stenen afzonderlijk te houden, en kijken we na wat de invloed op de score is. Om de uitvoer van het programma eenduidig te maken, worden alle dobbelstenen genummerd (startend bij 0 t.e.m. $$N-1$$). Elke dobbelsteen krijgt dus een rangnummer.

de klasse HogeOgen

Dit is de basisklasse, die een (weinig intelligente) standaarstrategie implementeert. Programmeer in deze klasse het volgende:

de klasse Strategie6

Deze klasse erft over van de klasse HogeOgen en herdefinieert de strategie-methode plaats_afzonderlijk(). Nu worden alle dobbelstenen met waarde 6 constant gehouden.

de klasse StrategieMinstensM

Ook deze klasse erft over van de klasse HogeOgen, en definieert:
LET OP: verander de seed niet, en gebruik ook de randomgenerator enkel zoals hierboven aangegeven (anders is het resultaat niet controleerbaar via Dodona).

Voorbeeld

random.seed(100)
spel = HogeOgen(5)
print(spel)	#[][0, 0, 0, 0, 0]
spel.nieuwe_worp()
print(spel)	#[][2, 4, 4, 2, 6]
spel.constant(1)
spel.constant(1)
spel.constant(4)
print(spel)	#[1, 4][2, 4, 4, 2, 6]
spel.nieuwe_worp()
print(spel) #[1, 4][4, 4, 6, 3, 6]
print(spel.aantal_ogen()) #23

print(spel.speel_spel(5))	#18
print(spel.gemiddelde_score(5, 1000)) #17.604

spel6 = Strategie6(5)
print(spel6.speel_spel(5))	#16
print(spel6.gemiddelde_score(5, 1000)) #23.87

spel_m = StrategieMinstensM(5, 3)
print(spel_m.speel_spel(5)) #20
print(spel_m.gemiddelde_score(5, 1000)) #22.282