Mexicanen1 of Mexen is een dobbelspel dat door twee personen gespeeld kan worden. Elke worp bestaat uit twee dobbelstenen. In het spel wordt voornamelijk gebluft over de worpen, maar hier focussen we ons enkel op de scoringsregels. In tegenstelling tot veel andere dobbelspellen is de score van een worp niet zomaar de som van de dobbelstenen.
In plaats daarvan is de puntentelling voor een worp als volgt:
Een Mex is altijd de hoogste score, namelijk 1000;
of
Daarna komen de dubbele worpen, bijvoorbeeld
, …
Indien beide spelers een dubbele worp hebben, dan wint diegene met het hoogste aantal ogen, vermenigvuldig hiervoor het aantal ogen met 100.
De andere worpen worden gerangschikt zodat grootste aantal ogen eerst komt te staan. Onderstaande worp krijgt bijvoorbeeld 43 als score.
Schrijf een functie mexen(s0, s1, t0, t1)
dat de winnaar bepaalt, waarbij s0
en s1
de worpen van speler 1 voorstellen en t0
en t1
deze van speler 2. Indien speler 1 wint, retourneer je "speler 1"
, wint speler 2, dan retourneer je "speler 2"
en anders "gelijkspel
.
Om deze functie te kunnen maken programmeer je eerst een hulpfunctie score(worp1, worp2)
dat gegeven twee worpen de waarde van deze worp gaat bepalen.
Bestudeer zorgvuldig onderstaande voorbeelden.
>>> mexen(1, 2, 1, 3)
speler 1
want
>>> score(1, 2)
1000
>>> score(1, 3)
31
>>> mexen(3, 3, 2, 1)
speler 2
want
>>> score(3, 3)
300
>>> score(2, 1)
1000
>>> mexen(6, 6, 2, 2)
speler 1
want
>>> score(6, 6)
600
>>> score(2, 2)
200
>>> mexen(4, 2, 2, 4)
gelijkspel
want
>>> score(4, 2)
42
>>> score(2, 4)
42
Bron
Virginia Tech High School Programming Contest 2014