Is this a start to your indexing request? $. produces a "sparse array". $. ((57=[+/+/)*[</]*</)~ i. 29 2 27 28 | 1 3 26 28 | 1 4 25 28 | 1 4 26 27 | 1 5 24 28 | 1
[...] 17 18 22 | 1 17 19 21 | 1 18 19 20 | 1 On Sun, May 26, 2013 at 2:54 PM, Robert Herman <[email protected]> wrote: > My reference to Perl's output was of the solutions printed on the count > lines such as this: > > 1: 2 27 28 > 2: 3 26 28 > 3: 4 25 28 > ..... > > 60: 17 19 21 > 61: 18 19 20 > Total 61 > > Raul, thank you so much for your other pointers on inspecting the arrays. I > will have two more days after work going over all of that. It's amazing how > working through this seemingly simple problem with your help has taught me > more about J than the hours I spent just doing single bits from the J > dictionary. What would be the best J book to go through the vocabulary in > problem sets such as this? Rosetta code? J for C programmers? > > My son said that one of the students arrived at the correct answer of 61 > without a computer. I can't believe this given the time it would require to > go through the answer space via pencil and paper (28^3). Is there a closed > form solution, or algebraic solution? > > Good night, it's almost 3 am here in Macau. > > Thanks, > > Rob > > > > On Mon, May 27, 2013 at 2:19 AM, Raul Miller <[email protected]> > wrote: > > > On Sun, May 26, 2013 at 2:01 PM, Robert Herman <[email protected]> > > wrote: > > > I have worked through the solution arrived at by a few of you to better > > > learn J, namely this one: > > > > > > +/,(57=x+/y+/z)*x</y*y</z > > > > > > In order to fully understand the way the matrix operations are carried > > out, > > > I minimized the answer space by making P = 13, and worked through the > > > output (not shown for brevity's sake) of the following input lines I > > placed > > > in a project file (learning the IDE with this problem too): > > > > > > P =: 13 > > > x =: >:i.4 > > > y =: >:x > > > z =: >:y > > > > > > 3 4 $ x,y,z > > > > > > (13=x+/y+/z)*x</y*y</z > > > +/,(13=x+/y+/z)*x</y*y</z > > > > > > +/,((13=[+/+/)*[</]*</)~i.7 > > > > Since this is a rank 3 bit array, we can ask J to display it more > > compactly. > > > > <"2 '.*'{~((13=[+/+/)*[</]*</)~i.7 > > > > We can also use this prefix to inspect some of the intermediate results: > > <"2 '.*'{~([</]*</)~i.7 > > <"2 '.*'{~(</)~i.7 > > > > That said, some interemdiate results are not bit arrays and are > > perhaps best inspected directly: > > (]*</)~i.7 > > > > > > > Anyway, I was tempted to try and make the J program look like the Perl > > > oneby using > > > for. but I realized I was lapsing into old habits. My minimal > programming > > > experience is all with imperative languages or some Lisp too. My next > > > question is how do you get the J program to print the solutions as in > the > > > Perl program? > > > > That's an open-ended question, since "as in" has a contextual and case > > specific meaning. > > > > Personally, I usually try and understand intermediate results (usually > > there is only one and I can just extract an expression which computes > > it and see what it does with sample data. > > > > > In my 3 x 4 matrices of the reduced problem set, I could see > > > how the 1's in the solution selection matrix set related to the > original > > 3 > > > x 4 matrix of x, y and z rows. Without re-writing it, is there a way to > > > index the solution? > > > > I am not sure what you mean by this. > > > > I mean, of course you can index the solution, but the solution has > > only a single number. You can also rewrite the expression which > > creates that solution and index from those results. But I feel like I > > am not understanding your question. > > > > > One question that is on my mind is the tacit vs. explicit style. I am > in > > > love with the way you all distill the solution down to a tacit > one-liner, > > > just as a maths formula is simplified, however, I am starting to think > > that > > > if and when I revisit this problem in the future, it will take a bit of > > > jarring to read it, translate it if you will. I am guessing for. loops > > are > > > very expensive cycle-wise and it would be just as easy to make words > for > > > phrases if I wish to preserve future readability. I am getting addicted > > to > > > the fast way of working in the J environment, and I am grateful to all > > on this > > > list for sharing their wisdom. > > > > I think that any time we delve into some area of computation that > > leaving and coming back after an extended absence can leave us in a > > jarring situation where we need to reacquaint ourselves with the > > original topic. I do not know of any general cure for this, finding > > good names for things, and good examples, can be fruitful. > > > > Thanks, > > > > -- > > Raul > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > -- (B=) <-----my sig Brian Schott ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
