[Jprogramming] Dot conjunction in the leap year verb
Linda Alvord
lindaalvord at verizon.net
Fri May 31 23:20:47 UTC 2013
Also it isn't "nub" but "not equal" which is much nicer!
Linda
-----Original Message-----
From: programming-bounces at forums.jsoftware.com [mailto:programming-bounces at forums.jsoftware.com] On Behalf Of Raul Miller
Sent: Friday, May 31, 2013 6:08 PM
To: Programming forum
Subject: Re: [Jprogramming] Dot conjunction in the leap year verb
Here, the result ~:/M is
1 1 1 0 0 0 1 ~: 1 1 0 0 0 0 0 ~: 0 1 0 0 0 0 0
The informal rule is that a monadic verb v/A finds its result by inserting v between the items of A.
I hope this helps,
--
Raul
On Fri, May 31, 2013 at 6:05 PM, Linda Alvord <lindaalvord at verizon.net> wrote:
> My struggle to find a diffent way was because I can't understand:
>
> M
> 1 1 1 0 0 0 1
> 1 1 0 0 0 0 0
> 0 1 0 0 0 0 0
> ~:/M
> 0 1 1 0 0 0 1
>
> Linda
>
> -----Original Message-----
> From: programming-bounces at forums.jsoftware.com [mailto:programming-bounces at forums.jsoftware.com] On Behalf Of Linda Alvord
> Sent: Friday, May 31, 2013 5:49 PM
> To: programming at jsoftware.com
> Subject: Re: [Jprogramming] Dot conjunction in the leap year verb
>
> Raul's simplifies even better.
>
> ly2
> ] #~ [: ~:/ 0 = 4 100 400 |/ ]
>
> Linda
>
> -----Original Message-----
> From: programming-bounces at forums.jsoftware.com [mailto:programming-bounces at forums.jsoftware.com] On Behalf Of Linda Alvord
> Sent: Friday, May 31, 2013 3:53 PM
> To: programming at jsoftware.com
> Subject: Re: [Jprogramming] Dot conjunction in the leap year verb
>
> ly=: 13 :'(((+/"2) 0=4 100 400 |/ y)e. 1 3)#y'
>
> Linda
>
> -----Original Message-----
> From: programming-bounces at forums.jsoftware.com [mailto:programming-bounces at forums.jsoftware.com] On Behalf Of Linda Alvord
> Sent: Friday, May 31, 2013 3:43 PM
> To: programming at jsoftware.com
> Subject: Re: [Jprogramming] Dot conjunction in the leap year verb
>
> More testing seems to hold up.
>
> YEAR=:1900 2000 2012 2013 2014 2015 2016
> ly=:] #~ 1 3 e.~ [: (+/"2) 0 = 4 100 400 |/ ]
> ly YEAR
> 2000 2012 2016
>
> ly
> ] #~ 1 3 e.~ [: (+/"2) 0 = 4 100 400 |/ ]
>
>
> Linda
>
> -----Original Message-----
> From: programming-bounces at forums.jsoftware.com [mailto:programming-bounces at forums.jsoftware.com] On Behalf Of Roger Hui
> Sent: Friday, May 31, 2013 10:15 AM
> To: Programming forum
> Subject: Re: [Jprogramming] Dot conjunction in the leap year verb
>
> Trying it on 1900+i.500 would be a better test.
>
>
> On Fri, May 31, 2013 at 3:22 AM, Linda Alvord <lindaalvord at verizon.net>wrote:
>
>> OOPS, Not done yet. Linda
>>
>> -----Original Message-----
>> From: programming-bounces at forums.jsoftware.com [mailto:
>> programming-bounces at forums.jsoftware.com] On Behalf Of Linda Alvord
>> Sent: Friday, May 31, 2013 4:46 AM
>> To: programming at jsoftware.com
>> Subject: Re: [Jprogramming] Dot conjunction in the leap year verb
>>
>> YEAR=:1900 2000 2001 2002 2003 2004
>> ly=: 13 :'((400|/ y) e. 0 4)#y'
>> ly YEAR
>> 2000 2004
>> ly
>> ] #~ 0 4 e.~ 400 |/ ]
>>
>> Is this OK for leap year?
>>
>> Linda
>>
>> -----Original Message-----
>> From: programming-bounces at forums.jsoftware.com [mailto:
>> programming-bounces at forums.jsoftware.com] On Behalf Of Roger Hui
>> Sent: Thursday, May 30, 2013 11:55 PM
>> To: Programming forum
>> Subject: Re: [Jprogramming] Dot conjunction in the leap year verb
>>
>> That phrase is "mine" and embodies some history. When I started in
>> APL decades ago I found it amusing to find novel inner products, and
>> the one used to find leap years is ≠.= in APL, not-equal dot equal.
>> The phrase found its way into the J phrase book by translation from
>> APL. There was no @ or @: in APL.
>>
>> Since u . v is defined in terms of @, there is not (and can not) be
>> much of an advantage of . over @ . I suppose @ is more open ended and using .
>> provides more of a hint to the system what you intend to compute.
>>
>>
>>
>>
>> On Thu, May 30, 2013 at 8:39 PM, elton wang <ahala2000 at yahoo.com> wrote:
>>
>> > Thanks.
>> > Is the any advantage of ~:/ .= over ~:/ @:= here in m11?
>> >
>> >
>> >
>> > ________________________________
>> > From: Raul Miller <rauldmiller at gmail.com>
>> > To: Programming forum <programming at jsoftware.com>
>> > Sent: Thursday, May 30, 2013 8:35 AM
>> > Subject: Re: [Jprogramming] Dot conjunction in the leap year verb
>> >
>> >
>> > I imagine you are talking about the definition of m11 at
>> > http://www.jsoftware.com/help/phrases/date_time.htm
>> >
>> > In other words: 0: ~:/ .= 4 100 400"_ |/ ]
>> >
>> > For example:
>> > (0: ~:/ .= 4 100 400"_ |/ ]) 1900 2000 2001 2002 2003 2004
>> > 0 1 0 0 0 1
>> >
>> > 1900 is not a leap hear, but 2000 is.
>> >
>> > First off, I should perhaps note that this is old - nowadays we
>> > would leave off the "_ from 4 100 400 because it is implied. But
>> > that's ok, either way works:
>> > (0: ~:/ .= 4 100 400 |/ ]) 1900 2000 2001 2002 2003 2004
>> > 0 1 0 0 0 1
>> >
>> > Anyways, as I am sure you have already determined, the first step is
>> > to find remainders:
>> >
>> > (4 100 400"_ |/ ]) 1900 2000 2001 2002 2003 2004
>> > 0 0 1 2 3 0
>> > 0 0 1 2 3 4
>> > 300 0 1 2 3 4
>> >
>> > Also, from a reference manual point of view, here's the definition
>> > of
>> > "dot": http://www.jsoftware.com/help/dictionary/d300.htm
>> >
>> > In other words ~:/ .= is like matrix inner product, with addition
>> > being replaced by "not equals" (or "exclusive or") and with
>> > multiplication being replaced by =
>> >
>> > Or, put diferently, ~:/ .= is ~:/@(v"1 _)
>> >
>> > In this case:
>> > (0 (="1 _) 4 100 400"_ |/ ]) 1900 2000 2001 2002 2003 2004
>> > 1 1 0 0 0 1
>> > 1 1 0 0 0 0
>> > 0 1 0 0 0 0
>> >
>> > (0 ~:/@(="1 _) 4 100 400"_ |/ ]) 1900 2000 2001 2002 2003 2004
>> > 0 1 0 0 0 1
>> >
>> > In other words, if the year is divisible evenly by an odd number of
>> > integers from the list 4 100 400 it's a leap year, but if it's
>> > divisible evenly by an even number of those integers it's not a leap
>> > year.
>> >
>> > This corresponds to a nested if structure like this (pseudocode):
>> >
>> > if (year evenly divisible by 4) then
>> > if (year evenly divisible by 100) then
>> > if (year evenly divisible by 400) then
>> > leap year
>> > else
>> > not a leap year
>> > else
>> > leap year
>> > else
>> > not a leap year
>> >
>> > (And, of course, modern cpu instruction piplelines struggle with
>> > conditional statements, so there are some real advantages to
>> > avoiding "if statements". See, for example:
>> >
>> > http://software.intel.com/en-us/articles/branch-and-loop-reorganizat
>> > io n-to-prevent-mispredicts but, also, mathematical equivalences are
>> > a powerful tool of thought.)
>> >
>> > Thanks,
>> >
>> > --
>> > Raul
>> >
>> > On Thu, May 30, 2013 at 12:23 AM, <ahala2000 at yahoo.com> wrote:
>> > > Can anyone show me how's the leap year verb work? I am confused on
>> > > the
>> > use of dot. <br/><br/>m11=: 0: ~:/ .= 4 100 400"_ |/ ] NB. Is y a leap
>> > year?<br/>Why does it use ~:/ .= here? Is it the same as ~:/@:= ?
>> > <br/><br/><br/><br/>
>> > > ------------------------------------------------------------------
>> > > --
>> > > -- 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
>
> ----------------------------------------------------------------------
> 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