[Jprogramming] Help me using rank (")

Martin Kreuzer info at airkreuzer.com
Fri Jun 10 17:02:31 UTC 2016


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 <info at airkreuzer.com> 
>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 >> 
><programming at jsoftware.com> 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  programming at jsoftware.com . 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 >> 
><reiterc at lafayette.edu>: > > > >  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 <rauldmiller at gmail.com> 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 >>> >> 
><programming at jsoftware.com> 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



More information about the Programming mailing list