Raul -

So back to square One, totally different approach. (Most of this again for my reference.)

I reviewed (x #: y) by the 'time' example

   hms=. 24 60 60 & #:
   hms 3600 1825 1201 930
1  0  0
0 30 25
0 20  1
0 15 30

Each atom on the right produces a list (3 items each in this case, according to the given dividers 60 60 24).

This lead to understanding this structure

   2 3 #: i.7
0 0
0 1
0 2
1 0
1 1
1 2
0 0

Replacing the right argument list by a table

   i. 2 3
0 1 2
3 4 5

   2 3 #: i. 2 3
0 0
0 1
0 2

1 0
1 1
1 2

each table element produced a 2-item-list (2 rows, 2 result blocks).

Given this table

   i. 3 3
0 1 2
3 4 5
6 7 8

one can retrieve the 2nd row or 1st column respectively depending on rank used on 'From' (x { y):

   1 {"2 i. 3 3   NB. rank 2 gets the row
3 4 5
   0 {"1 i. 3 3   NB. rank 1 gets the column
0 3 6

If there are several (layout-identical) matrices, it will pick from the same place in each matrix

   0 {"1 (2 3 #: i. 2 3)   NB. 1st column from each
0 0 0
1 1 1

In the original exercise (Bo's question) we would be after the 2nd column:

   1 {"1 (3 5 5 #: i. 3 5 5)   NB. 2nd column from each
0 0 0 0 0
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4

0 0 0 0 0
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4

0 0 0 0 0
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4

Going tacid (step by step) I arrived at these lines:

   1 {"1 (#: i.) 3 5 5
   (1 & {"1 @ #: i.) 3 5 5

which is very near to your solutiion

   (1 & { @ #: i.) 3 5 5

(I had a look at (#:"#:) and (#: b.0) but can't figure out the relevance.)

Q: Why is it that one may skip the rank notation at this time
which had seemed so crucial in the beginning..?

Thanks
-M


At 2016-06-10 10:51, you wrote:
Try this: 3 5 5 #: i. 3 5 5 Then try this: 1 {"1 (3 5 5 #: i. 3 5 5) Then try this: #:"#: I hope that helps, Thanks, -- Raul On Fri, Jun 10, 2016 at 6:38 AM, Martin Kreuzer <[email protected]> wrote: > Raul - > > Following this thread, I managed to grasp (reproduce) the expression (0 2 1 > |: 3 5 5 $ i. 5) which Bo found satisfactory. > > Challenged by your remark "But probably no easier to read." I have tried to > sort of reconstruct your approach: > > First I read up on dyadic Antibase (x #: y) and found the remainder example; > thus > > > ,(i. 10) ;(5 #: i. 10) > 0 1 2 3 4 5 6 7 8 9 > 0 1 2 3 4 0 1 2 3 4 > > Producing this square matrix > > i. 5 5 > 0 1 2 3 4 > 5 6 7 8 9 > 10 11 12 13 14 > 15 16 17 18 19 > 20 21 22 23 24 > > and applying the above I got > > 5 #: i. 5 5 > 0 1 2 3 4 > 0 1 2 3 4 > 0 1 2 3 4 > 0 1 2 3 4 > 0 1 2 3 4 > > and (5 #: i. 3 5 5) got me three blocks of those. > > Changing the axis preference (?) switched rows and columns > > 1 0 |: 5 #: i. 5 5 > 0 0 0 0 0 > 1 1 1 1 1 > 2 2 2 2 2 > 3 3 3 3 3 > 4 4 4 4 4 > > and in the case of the three blocks this would be written as (0 2 1 |: 5 #: > i. 3 5 5) as the number of blocks remains untouched. > > What seemed to me a shortcut for the special case of a three-dimensinal > arrangement of square matrices this gives the same result: > > 1 |: 5 #: i. 3 5 5 > 0 0 0 0 0 > 1 1 1 1 1 > 2 2 2 2 2 > 3 3 3 3 3 > 4 4 4 4 4 > > 0 0 0 0 0 > 1 1 1 1 1 > 2 2 2 2 2 > 3 3 3 3 3 > 4 4 4 4 4 > > 0 0 0 0 0 > 1 1 1 1 1 > 2 2 2 2 2 > 3 3 3 3 3 > 4 4 4 4 4 > > Using brackets I could write that as > (1 |: 5 #: i.) 3 5 5 > replacing the (5) by grabbing it from the list like (1 { 3 5 5) > I continued to > (1 |: 1 & { #: i.) 3 5 5 > which looked promising. > > It looked to me as you were taking advantage of the (1) being mentioned > there twice and therefore combining, but ... > Q: Could you enlighten me on this final step..? > > Thanks > -M > > > > > At 2016-06-10 06:51, you wrote: >> >> I just stumbled across this. It occurs to me that (1&{@#:i.)3 5 5 would >> be one character shorter. But probably no easier to read. Thanks, -- Raul On >> Wed, Jun 8, 2016 at 5:31 PM, 'Bo Jacoby' via Programming >> <[email protected]> wrote: > Thanks everyone! > This: > 0 2 1|:3 >> 5 5$i.5 > > produces what I wanted. > The result is however destroyed in the >> process of emailing it to [email protected] . Line feeds are >> deleted. I don't know why. > Problem is solved. Thanks again. > Bo. > > >> Den 21:10 onsdag den 8. juni 2016 skrev Cliff Reiter >> <[email protected]>: > > > > Or > ,./": 3 5$"1 0 i.5 > > 0 0 0 0 01 1 1 >> 1 12 2 2 2 23 3 3 3 34 4 4 4 4 > > 0 0 0 0 01 1 1 1 12 2 2 2 23 3 3 3 34 4 4 >> 4 4 > > 0 0 0 0 01 1 1 1 12 2 2 2 23 3 3 3 34 4 4 4 4 > > But a strange >> thing to want to build. > > On 6/8/2016 1:37 PM, robert therriault wrote: >> >> Maybe this? >> >> 5( 3 # ,:@,@":@:(#/"0)) i. 5 >> 0 0 0 0 01 1 1 1 12 >> 2 2 2 23 3 3 3 34 4 4 4 4 >> 0 0 0 0 01 1 1 1 12 2 2 2 23 3 3 3 34 4 4 4 4 >> >> 0 0 0 0 01 1 1 1 12 2 2 2 23 3 3 3 34 4 4 4 4 >> >> But I am confused as >> well about the request for a shape 3 5 5 of what appears as a shape 3 45 >> literal matrix. I do have '01' in mine though. :-) >> >> Cheers, bob >> >>> >> On Jun 8, 2016, at 10:29 AM, Raul Miller <[email protected]> wrote: >>> >> >>> Did you mean something like this? >>> >>> (<.0.8*1+i.25) 10&#./."1] >> 3#,:5# i.5 >>> 0 0 0 0 1 1 1 1 12 2 2 2 23 3 3 3 34 4 4 4 4 >>> 0 0 0 0 1 1 >> 1 1 12 2 2 2 23 3 3 3 34 4 4 4 4 >>> 0 0 0 0 1 1 1 1 12 2 2 2 23 3 3 3 34 4 >> 4 4 4 >>> >>> Except, that doesn't get you those leading zeros for the '01' >> column, >>> so maybe instead it needs to be character? >>> >>> But a >> character array would not have anything to do with that 3 5 5 >>> shape you >> suggested, so for that, and guessing what you want, maybe it >>> should be >> something like this? >>> >>> <.25%~i.3 5 5 >>> 0 0 0 0 0 >>> 0 0 0 0 0 >> >>> 0 0 0 0 0 >>> 0 0 0 0 0 >>> 0 0 0 0 0 >>> >>> 1 1 1 1 1 >>> 1 1 1 1 1 >> >>> 1 1 1 1 1 >>> 1 1 1 1 1 >>> 1 1 1 1 1 >>> >>> 2 2 2 2 2 >>> 2 2 2 2 2 >> >>> 2 2 2 2 2 >>> 2 2 2 2 2 >>> 2 2 2 2 2 >>> >>> Except that that doesn't >> look at all like what you asked for. A 5 3 4 >>> shape gets a little closer: >> >>> >>> <.12%~i.5 3 4 >>> 0 0 0 0 >>> 0 0 0 0 >>> 0 0 0 0 >>> >>> 1 1 1 1 >> >>> 1 1 1 1 >>> 1 1 1 1 >>> >>> 2 2 2 2 >>> 2 2 2 2 >>> 2 2 2 2 >>> >>> 3 3 >> 3 3 >>> 3 3 3 3 >>> 3 3 3 3 >>> >>> 4 4 4 4 >>> 4 4 4 4 >>> 4 4 4 4 >>> >>> >> But all of these have conflicts with some aspect of your original >>> >> request, and I can't figure out what it is that you really wanted. >>> >>> I >> hope this helps? >>> >>> Thanks, >>> >>> -- >>> Raul >>> >>> >>> On Wed, Jun >> 8, 2016 at 5:22 AM, 'Bo Jacoby' via Programming >>> >> <[email protected]> wrote: >>>> Dear J'ers. >>>> Please tell me how >> to program the 3 5 5 array below. >>>> I am experimenting rather than >> understanding. I expect the answer to be quite elementary. >>>> Thanks! Bo. >> >>>> >>>> 0 0 0 0 01 1 1 1 12 2 2 2 23 3 3 3 34 4 4 4 4 >>>> 0 0 0 0 01 1 1 >> 1 12 2 2 2 23 3 3 3 34 4 4 4 4 >>>> 0 0 0 0 01 1 1 1 12 2 2 2 23 3 3 3 34 4 >> 4 4 4 >>>> >>>> >> ---------------------------------------------------------------------- >>>> >> For information about J forums see http://www.jsoftware.com/forums.htm >>> >> ---------------------------------------------------------------------- >>> >> For information about J forums see http://www.jsoftware.com/forums.htm >> >> ---------------------------------------------------------------------- >> >> For information about J forums see http://www.jsoftware.com/forums.htm > > >> ---------------------------------------------------------------------- > >> For information about J forums see http://www.jsoftware.com/forums.htm > > > >> > ---------------------------------------------------------------------- > >> For information about J forums see http://www.jsoftware.com/forums.htm >> ---------------------------------------------------------------------- For >> information about J forums see http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- 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