Ja, 30 klopt.
Ik heb een truc, methode, maar ik weet niet of die beter is dan recursief die worpen te bepalen. Ik heb nog geen goede recursieve methode. Jij? Hoe zou je het programmeren?
Hier is de methode:
In feite construeer je een getallenstelsel.
3 dobbelstenen, d = 3, dus 3 rijen.
4 zijvlakken, s = 4, dus 4 kolommen.
\({s + d - 1\choose d} = 20 mogelijke worpen.\)
Begin bij 0, een dobbelsteen heeft de zijden 0, 1, 2, 3.
Mogelijke worpen:
Code: Selecteer alles
0 000
1 001
2 002
3 003
4 011
5 012
6 013
7 022
8 023
9 033
10 111
11 112
12 113
13 122
14 123
15 133
16 222
17 223
18 233
19 333
Hier is een deel van de driehoek van Pascal, gedraaid.
Wat je wilt is een manier om bijv. de 11e worp te vinden (geteld vanaf 0) is dat 112
Om al die rijen te vinden kan je het volgende doen:
Een voorbeeld: m = 11. Dan bepalen we de worp.
Het cijfer c = 0. w is de worp, die construeren we en die is nu leeg.
Begin linksonder, bij het getal 10.
10 <= 11 dus verhoog het cijfer c met 1 en
verlaag het getal m met 10, geeft m = 11 - 10 = 1.
Ga een plaats naar rechts, naar cijfer 6.
6 > 1 dus ga naar het cijfer erboven, 3. zet aan w, het (nieuwe) cijfer c = 1. Geeft w = 1
3 > 1 dus ga naar het cijfer erboven, 1. zet aan w, het cijfer c = 1. Geeft w = 11
1 <= 1 dus verhoog het cijfer c met 1. Geeft c = 2.
We zijn nu bovenaan het deel van de driehoek van Pascal, dus plak het cijfer 2 rechts van w. Geeft w = 112.
We gooien 3 dobbelstenen, verleng w totdat die lengte 3 heeft door telkens het cijfer c aan te plakken. De worp w heeft al 3 cijfers dus we hoeven er niets aan te plakken.
Vervolgens wil je nog worp 112 geeft som = 1 + 1 + 2 = 4.
De dobbelsteen gaat van 1 tot en met 4 in plaats van 0 tot en met 3 dus tel voor elke dobbelsteen 1 op.
4 + 3 * 1 = 7. 3 manieren (3 permutaties van 1, 1, 2) om zo 7 te gooien. Dus het aantal manieren om 7 te gooien wordt met 3 verhoogd.
Snap je?
Ja, 30 klopt.
Ik heb een truc, methode, maar ik weet niet of die beter is dan recursief die worpen te bepalen. Ik heb nog geen goede recursieve methode. Jij? Hoe zou je het programmeren?
Hier is de methode:
In feite construeer je een getallenstelsel.
3 dobbelstenen, d = 3, dus 3 rijen.
4 zijvlakken, s = 4, dus 4 kolommen. [tex]{s + d - 1\choose d} = 20 mogelijke worpen.[/tex] Begin bij 0, een dobbelsteen heeft de zijden 0, 1, 2, 3.
Mogelijke worpen:
[code]
0 000
1 001
2 002
3 003
4 011
5 012
6 013
7 022
8 023
9 033
10 111
11 112
12 113
13 122
14 123
15 133
16 222
17 223
18 233
19 333[/code]
Hier is een deel van de driehoek van Pascal, gedraaid.
[code]
1 1 1 1
4 3 2 1
10 6 3 1[/code]
Wat je wilt is een manier om bijv. de 11e worp te vinden (geteld vanaf 0) is dat 112
Om al die rijen te vinden kan je het volgende doen:
Een voorbeeld: m = 11. Dan bepalen we de worp.
Het cijfer c = 0. w is de worp, die construeren we en die is nu leeg.
Begin linksonder, bij het getal 10.
10 <= 11 dus verhoog het cijfer c met 1 en
verlaag het getal m met 10, geeft m = 11 - 10 = 1.
Ga een plaats naar rechts, naar cijfer 6.
6 > 1 dus ga naar het cijfer erboven, 3. zet aan w, het (nieuwe) cijfer c = 1. Geeft w = 1
3 > 1 dus ga naar het cijfer erboven, 1. zet aan w, het cijfer c = 1. Geeft w = 11
1 <= 1 dus verhoog het cijfer c met 1. Geeft c = 2.
We zijn nu bovenaan het deel van de driehoek van Pascal, dus plak het cijfer 2 rechts van w. Geeft w = 112.
We gooien 3 dobbelstenen, verleng w totdat die lengte 3 heeft door telkens het cijfer c aan te plakken. De worp w heeft al 3 cijfers dus we hoeven er niets aan te plakken.
Vervolgens wil je nog worp 112 geeft som = 1 + 1 + 2 = 4.
De dobbelsteen gaat van 1 tot en met 4 in plaats van 0 tot en met 3 dus tel voor elke dobbelsteen 1 op.
4 + 3 * 1 = 7. 3 manieren (3 permutaties van 1, 1, 2) om zo 7 te gooien. Dus het aantal manieren om 7 te gooien wordt met 3 verhoogd.
Snap je?