So, ok, rank...
The question, I imagine, is: how does rank help you understand how to get from
1 {"1 (3 5 5 #: i. 3 5 5)
to
(1&{@#:i.)3 5 5
But let's try that from another angle. Let's instead unfold the hook, giving us:
3 5 5 (1&{@#: i.) 3 5 5
Here, we can see just a bit more clearly that we are using the dyadic
definition of #:
And, if we recall http://www.jsoftware.com/help/dictionary/dictb.htm
we might remember that the three numbers in rank are:
Monadic rank; Left dyadic rank; Right dyadic rank
So, since the rank of #: is _ 1 0, this means its left dyadic rank is
1 and its right dyadic rank is 0.
Also, a verb u@v derived using @ has the rank of v.
So, 1&{@#: has a left dyadic rank of 1 and a right dyadic rank of zero.
Or, thinking about this from a different direction, each rank 1
element of the result of #: was formed based on a left argument of 3 5
5 and a single (rank 0) number from the right argument.
Put differently, we do not need the "1 (from 1 {"1 y) because we get
an implicit "0 from our use of @ (in 1&{@#:).
Put differently, we can often skip using rank because in this case we
get its effect implicitly.
I hope this helps?
Thanks,
--
Raul
On Fri, Jun 10, 2016 at 1:02 PM, Martin Kreuzer <[email protected]> wrote:
> 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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm