Mathematica Mathematica: I made a program, but can't manipulate it. Please help

AI Thread Summary
The discussion centers on a programming challenge involving a function that calculates the combinations of three dice rolls that sum to a specified number between 3 and 18. The user is struggling with manipulating the code to achieve the desired outcomes and is unable to identify errors in their implementation. The provided code attempts to iterate through all possible combinations of dice rolls using nested loops and prints the combinations that match a target sum. A suggestion is made to define a function that can be evaluated for different target sums, demonstrating the expected outputs for sums of 3, 4, and 5. The user seeks assistance in refining the code to ensure it works correctly for various inputs.
gikiian
Messages
98
Reaction score
0
The program I wrote accepts a certain number between 3 and 18.
Then it returns the ways this number can be obtained by throwing three dice simultaneously and adding the face values.
I want to manipulate this number, :biggrin:
but can't achieve it using the ordinary code of manipulation.

I tried to find any error, but really wasn't able to figure out where have I gone wrong. :confused:

Need help!

Code:
j = 0;
For [
      x = 1, 
      x <= 6, 
      x++, 
      For [ 
            y = 1, 
            y <= 6, 
            y++, 
            For [ 
                  z = 1, 
                  z <= 6, 
                  z++,
                  {
                   If [ 
                       x + y + z == 5,  (*accepts the required sum of the face values*)
                       { 
                        If [
                            j + 1 <= 9, 
                            Print [j + 1, ".", "   ", x , " ", y, " " , z ], 
                            Print [j + 1, ".", "  ", x , " ", y, " " , z ]
                           ], 
                        j++
                       }    
                      ]
                  }
                 ]
           ]
     ]
 
Last edited:
Physics news on Phys.org
You could define a function, and then evaluate it for different values, like this:

Code:
f[w_] :=
 Module[{j = 0},
  For[x = 1, x <= 6, x++, 
   For[y = 1, y <= 6, y++, 
    For[z = 1, z <= 6, 
     z++, {If[
       x + y + z == 
        w,(*accepts the required sum of the face values*){If[
         j + 1 <= 9, Print[j + 1, ".", "   ", x, " ", y, " ", z], 
         Print[j + 1, ".", "  ", x, " ", y, " ", z]], j++}]}]]]]

f[5]

1.   1 1 3

2.   1 2 2

3.   1 3 1

4.   2 1 2

5.   2 2 1

6.   3 1 1

f[3]

1.   1 1 1

f[4]

1.   1 1 2

2.   1 2 1

3.   2 1 1
 

Similar threads

Replies
2
Views
3K
Replies
3
Views
3K
Replies
2
Views
2K
Replies
1
Views
2K
Replies
2
Views
5K
Replies
5
Views
3K
Replies
1
Views
3K
Back
Top