The Museum of HP Calculators


A Dice Problem for the HP-41

This program is by Jean-Marc Baillard and is used here by permission.

This program is supplied without representation or warranty of any kind. Jean-Marc Baillard and The Museum of HP Calculators therefore assume no responsibility and shall have no liability, consequential or otherwise, of any kind arising from the use of this program material or any part thereof.

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 )
 

Data Registers:    All registers are cleared by this program ( line 02 ), but only R00 thru Rnn are actually used

Flag: none

Subroutine: none
 
 
 
         STACK            INPUTS           OUTPUTS
              Z                 n                 /
              Y                 s                 /
              X                 t         D( n , s , t )

 

-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 )
 
 

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
           ------- lines 15-16     by  RCL Q    RCL O   -
           ------------ 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 ).

Go back to the HP-41 software library
Go back to the general software library
Go back to the main exhibit hall