The following is getting away from the actual rules as of the task but
is perhaps useful nonetheless ...
>From a storage and processing POV, it will be leaner and faster not to
store the dice boxed. The boxing is nice for display purposes though
so that could be made a separate verb.
facerows=: 0 0 0,1 0 0,0 1 0,0 0 1,:1 0 1 NB. row types on faces
facechars=: ' o' NB. chars used to draw faces
faces=: 0 2 0,1 0 3,1 2 3,4 0 4,4 2 4,:4 4 4 NB. define faces as rows
dice=: facechars {~ facerows {~ faces NB. create dice
displayDice=: [: smoutput <"2 NB. display boxed di
throw=: ] {~ [: ? [ $ [: # ] NB. verb to throw dice
toss=: 2 10 throw ] NB. throw 2 dice 10 times
sumThrows=: [: +/ [: ([: +/ ,)"2 'o' = ] NB. sum each throw
fd=: [: /:~ ({. , #)/.~ NB. calc frequency distribution
displayDice dice
+---+---+---+---+---+---+
| |o |o |o o|o o|o o|
| o | | o | | o |o o|
| | o| o|o o|o o|o o|
+---+---+---+---+---+---+
displayDice Toss1=: toss dice
+---+---+---+---+---+---+---+---+---+---+
|o |o |o o|o | |o o| |o |o o|o |
| o | o |o o| o | o | | o | o | | o |
| o| o|o o| o| |o o| | o|o o| o|
+---+---+---+---+---+---+---+---+---+---+
|o | |o | |o o| |o o|o |o o|o o|
| | o | o | o | | o | | o |o o| |
| o| | o| |o o| |o o| o|o o|o o|
+---+---+---+---+---+---+---+---+---+---+
sumThrows Toss1
5 4 9 4 5 5 5 6 10 7
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm