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 <[email protected]> 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: [email protected] > [mailto:[email protected]] On Behalf Of Linda Alvord > Sent: Friday, May 31, 2013 5:49 PM > To: [email protected] > Subject: Re: [Jprogramming] Dot conjunction in the leap year verb > > Raul's simplifies even better. > > ly2 > ] #~ [: ~:/ 0 = 4 100 400 |/ ] > > Linda > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Linda Alvord > Sent: Friday, May 31, 2013 3:53 PM > To: [email protected] > 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: [email protected] > [mailto:[email protected]] On Behalf Of Linda Alvord > Sent: Friday, May 31, 2013 3:43 PM > To: [email protected] > 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: [email protected] > [mailto:[email protected]] 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 <[email protected]>wrote: > >> OOPS, Not done yet. Linda >> >> -----Original Message----- >> From: [email protected] [mailto: >> [email protected]] On Behalf Of Linda Alvord >> Sent: Friday, May 31, 2013 4:46 AM >> To: [email protected] >> 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: [email protected] [mailto: >> [email protected]] 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 <[email protected]> wrote: >> >> > Thanks. >> > Is the any advantage of ~:/ .= over ~:/ @:= here in m11? >> > >> > >> > >> > ________________________________ >> > From: Raul Miller <[email protected]> >> > To: Programming forum <[email protected]> >> > 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, <[email protected]> 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
