A Dice Problem for the HP-41
Overview
-If you throw 2 identical dices having 6 sides ( numbered from 1 to 6 ) , there are 5 combinations giving the total 6:
1 + 5 = 2 + 4 = 3 + 3 = 4 + 2 = 5 + 1.
-The following program calculates how many dice combinations D( n ,
s , t ) result in a given total t
when you throw n dices ( n > 1 ) having s sides ( numbered
1 , 2 , ...... , s )
Program Listing
Data Registers:
All registers are cleared by this program ( line 02 ), but only R00 thru
Rnn are actually used
Flags: /
Subroutines: /
-As usual, synthetic registers M , N , O , P can be replaced by any
unused standard registers ( Rmm with m > n ).
01 LBL "DST"
02 CLRG 03 X<>Y 04 STO N 05 X<> Z 06 STO M 07 - 08 .1 09 % 10 STO O |
11 LBL 01
12 RCL M 13 STO P 14 DSE P 15 RCL O 16 INT 17 RCL N 18 / 19 FRC 20 X#0? |
21 GTO 02
22 LASTX 23 ENTER^ 24 R^ 25 - 26 RCL 00 27 ST* Y 28 - 29 X<>Y 30 X#0? |
31 /
32 X=0? 33 SIGN 34 STO 00 35 ST+ IND M 36 LBL 02 37 RCL P 38 SIGN 39 ST+ L 40 RCL IND L |
41 ST+ IND P
42 DSE P 43 GTO 02 44 ISG O 45 GTO 01 46 RCL 01 47 CLA 48 END |
( 77 bytes / SIZE n+1 )
STACK | INPUTS | OUTPUTS |
Z | n | / |
Y | s | / |
X | t | D( n , s , t ) |
Example: How many combinations
result in a total of 41 if you throw 7 dices having 12 sides ( numbered
from 1 to 12 ) ?
7 ENTER^
12 ENTER^
41 XEQ "DST" yields
1,369,368 in X-register and in R01 ( execution
time = 67 seconds )
Notes:
1- This routine requires: n < = t <
= n.s ( otherwise the answer is of course 0 but "DST" may give
a wrong result )
2- The propertie D( n , s , t ) = D(
n , s , n.s + n - t ) could be used to reduce execution time when
n.s + n - t < t
( execution time is approximately proportional
to n.t )
3- If you want to know the probability rather than the number of combinations,
add
RCL N RCL M Y^X
/ after line 46.
4- This program doesn't work if t - n > 999 . If you want
to overcome this limitation:
replace line
44 by DSE O
replace lines 15-16
by RCL Q RCL O -
replace lines 08 to 10 by
1 + STO O STO Q
Reference:
-Issues # 29 and # 41 of "48SXTANT" ( a Dutch magazine edited
by Robert Pulluard ) ( in French ).