No, it's not fair. - You need to sort 1-byte characters to approximate operations on 1-byte integers. - You need to ditch the conversions to and from booleans. In J such conversions are relatively costly (compared to /:~, f'instance); in C, the conversion is free.
On Thu, Mar 6, 2014 at 11:47 PM, Linda Alvord <lindaalv...@verizon.net>wrote: > Isn't this a fair timing which shows that <./ is fastest? I still think > /:~#:A is awesome! > > A=:?1000000$10000000 > 10 timer '{.#./:~#:A' > 0.861233 > 10 timer '{./:~A' > 0.152205 > 10 timer '<./A' > 0.00360548 > > {.#./:~#:A > 7 > {./:~A > 7 > <./A > 7 > > Linda > > > -----Original Message----- > From: programming-boun...@forums.jsoftware.com > [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Linda > Alvord > Sent: Thursday, March 06, 2014 10:55 PM > To: programm...@jsoftware.com > Subject: Re: [Jprogramming] a good bar bet! > > You warned me that dyadic /: was spectacular! > > Linda > > -----Original Message----- > From: programming-boun...@forums.jsoftware.com > [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Roger Hui > Sent: Thursday, March 06, 2014 10:39 PM > To: Programming forum > Subject: Re: [Jprogramming] a good bar bet! > > Kind of, except I don't think you need to convert to bits and then convert > back. > > It boggles my mind that taking the first element of sort to find the > minimum is competitive with the conventional coding for finding the > minimum: > > x=: a.{~1e7 ?@$ 256 > y=: 1e7 ?@$ 2e9 > timer=: 6!:2 > 10 timer '{./:~x' > 0.0134736 > 10 timer '<./y' > 0.0126129 > > I can not do a direct comparison in J because J doesn't have 1-byte > integers. In Dyalog APL, which does have 1-byte integers, the times > are 0.0124262 > for the conventional coding and 0.0104232 for the first element of the > sort. Unbelievable. > > > > On Thu, Mar 6, 2014 at 6:45 PM, Linda Alvord <lindaalv...@verizon.net > >wrote: > > > Is this considered fair? > > > > ]A=:?20$1000 > > 951 524 574 923 841 986 242 790 695 936 140 901 900 366 33 309 244 327 > 817 > > 680 > > > > f=: 13 :'{.#.(#:y)/:#:y' > > f > > [: {. [: #. #: /: #: > > > > f A > > 33 > > > > Linda > > > > -----Original Message----- > > From: programming-boun...@forums.jsoftware.com > > [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Roger Hui > > Sent: Thursday, March 06, 2014 8:50 PM > > To: Programming forum > > Subject: Re: [Jprogramming] a good bar bet! > > > > You are not guaranteed sortedness, but nobody promised that it'd be > sorted. > > > > > > On Thu, Mar 6, 2014 at 5:42 PM, Yike Lu <yikelu.h...@gmail.com> wrote: > > > > > Problem with the hash table is how do you guarantee sortedness when you > > > spit the result back out? > > > On Mar 6, 2014 6:49 PM, "Roger Hui" <rogerhui.can...@gmail.com> wrote: > > > > > > > Well, if you use a hash table it'd be O(1) expected time to read and > > > write. > > > > The method I know is O(1) worst case time to read and write. > > > > > > > > > > > > On Thu, Mar 6, 2014 at 2:54 PM, Yike Lu <yikelu.h...@gmail.com> > wrote: > > > > > > > > > Hmm, maybe not. It has to basically be able to insert ordered in > > > constant > > > > > time. Everything I remember seems to be log time for one or the > > other. > > > > > > > > > > I'm starting to lean towards a multi-pass / multi-array solution. > > > > > > > > > > > > > > > On Thu, Mar 6, 2014 at 4:42 PM, Roger Hui < > rogerhui.can...@gmail.com > > > > > > > > wrote: > > > > > > > > > > > The method I know offers O(1) time to read and write. Can your > > > > > dictionary > > > > > > do the same? (And I think we are talking about _how_ you > implement > > a > > > > > > dictionary.) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Thu, Mar 6, 2014 at 2:34 PM, Yike Lu <yikelu.h...@gmail.com> > > > wrote: > > > > > > > > > > > > > Using a dictionary is another way. > > > > > > > > > > > > > > > > > > > > > On Thu, Mar 6, 2014 at 3:30 PM, Roger Hui < > > > rogerhui.can...@gmail.com > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > Yes, that's the cost. The trick is to avoid initializing > count > > > > > > > altogether, > > > > > > > > because for this subproblem M is much greater than n. The > > answer > > > > is > > > > > > > > algorithmic and not a matter of using this or that C > operation. > > > > > > > > > > > > > > > > Recently I had occasion to use the trick for M=65536 and n > > about > > > > > 5000. > > > > > > > As > > > > > > > > originally posed, I think the intention was that M would be > > > > zillions. > > > > > > > > > > > > > > > > > > > > ---------------------------------------------------------------------- > > > > > > > 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