I'm trying to learn to work backwards from tacit to explicit. Here's what 
happened.
This is a file that you can run.

s=:3 6 3 7 5 2 6 8 11 3
fdla=: 13 :'(~.(/:y){y),.+/"1 (~.(/:y){y)=/ y'
fdla
fdkm2=: 13 :'/:~(~.y),.+/"1 =y'
fdkm2
fdkm2=:[: /:~ ~. ,. [: +/"1 =
fdrs=: [: /:~ ({. , #)/.~  
NB. x u/.y ↔ (=x) u@# y
 
NB. Nice function, but it has  @

NB. Save for total J

NB. fd is now kip's version with one less nub

fdla=: ([: ~. /: { ]) ,. [: +/"1 ] =/~ [: ~. /: { ]
fdkm =: [: /:~ ~. ,. [: +/"1 ~. =/ ]
fdkm2=: [: /:~ ~. ,. [: +/"1 =
fdrs=: [: /:~ ({. , #)/.~  
fd=: [: /:~ ~. ,. [: +/"1 =

fd  is now kip's version with one less  nub 

Linda

-----Original Message-----
From: programming-boun...@jsoftware.com 
[mailto:programming-boun...@jsoftware.com] On Behalf Of Ric Sherlock
Sent: Thursday, December 01, 2011 3:50 AM
To: Programming forum
Subject: Re: [Jprogramming] Turkey Roll - Challenge 2

Responses inline.

2011/12/1 Linda Alvord <lindaalv...@verizon.net>:
> Dice has a little problem that was caused by the difficulty in transmitting
> the result without the code that creates it.  I would appreciate it if you
> would correct and reply to this message so the dice look like this (sort
> of). The two and the three should be on a diagonal from upper left to lower
> right:
>
> ----T---T---T---T---T---┐
> │   │o  │o   │o o│o o │o o│
> │ o │   │ o  │   │ o  │o o│
> │   │  o│  o │o o|o o │o o│
> L---+---+---+---+---+----
>

I see now will do.

>
> Please add the following lines to your script and then it will be easy for
> the reader to see that it has complied with the rules. Assert is a wonderful
> addition for this and future challenges!
>
>   dice
>   toss
>   toss
>   fd c
>   0 0 0 3 = 4!:0 ;:'dice toss c fd'
>
> Also, you couldn't follow my rules and I couldn't either! I wanted a niladic
> function (no arguments) which is what you wrote. But it always returns the
> same result. A monadic function would be better in the long run, but it
> would be nice also if someone could follow the original instructions. I
> could write it so
> Toss 6 gave the new tosses each time.

Hmmm... My reading of the original rules was that toss should be a
noun. As a noun it will be fixed. If you want it to be a verb (here
are no niladic verbs in J) then ( 4!:0 <'toss' ) should result in a 3
not a 0.

Here is an updated version. Not quite sure if it is what you were after though:

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=: <"2 facechars {~ facerows {~ faces   NB. create dice
throw=: ] {~ [: ? [ $ [: # ]                NB. verb to throw dice
toss=: 2 10 throw ]                         NB. throw 2 dice 10 times
sumThrows=: ([: +/ [: , 'o' = ,)&>/         NB. sum each throw
fd=: [: /:~ ({. , #)/.~                     NB. calc frequency distribution


   dice
+---+---+---+---+---+---+
|   |o  |o  |o o|o o|o o|
| o |   | o |   | o |o o|
|   |  o|  o|o o|o o|o o|
+---+---+---+---+---+---+
   ]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|  o|  o|  o|   |
+---+---+---+---+---+---+---+---+---+---+
   ]Toss2=: 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 |   |
|  o|   |o o|  o|o o|o o|  o|o o|   |  o|
+---+---+---+---+---+---+---+---+---+---+
   ]c=: sumThrows Toss2
8 4 9 4 7 10 7 9 7 7
   fd c
 4 2
 7 4
 8 1
 9 2
10 1
   assert 0 3 0 3 = 4!:0 'dice';'toss';'c';'fd'
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to