this has wrong results peermm 1 1 ; 2 2 ; 1 1 ; 2 2 ;3
----- Original Message ----- From: Raul Miller <rauldmil...@gmail.com> To: Programming forum <programm...@jsoftware.com> Cc: Sent: Saturday, April 25, 2015 8:24 PM Subject: Re: [Jprogramming] Permutations with repeats (combinations?) What problem does it have with boxed data? (It worked fine on boxed data when I tested it that way.) Thanks, -- Raul On Sat, Apr 25, 2015 at 8:05 PM, 'Pascal Jasmin' via Programming <programm...@jsoftware.com> wrote: > Its even faster, and handles text, but not boxed data > > one use case for boxes is keeping some items together as a group > > ;"1 rperm2 1 2 ; 1 2 ; 3 ;3 ; 3 > 3 3 1 2 1 2 3 > 3 3 1 2 3 1 2 > 3 3 3 1 2 1 2 > 3 1 2 3 1 2 3 > 3 1 2 3 3 1 2 > 3 1 2 1 2 3 3 > 1 2 3 3 1 2 3 > 1 2 3 3 3 1 2 > 1 2 3 1 2 3 3 > 1 2 1 2 3 3 3 > > > > > > > > ----- Original Message ----- > From: Raul Miller <rauldmil...@gmail.com> > To: Programming forum <programm...@jsoftware.com> > Cc: > Sent: Saturday, April 25, 2015 2:02 PM > Subject: Re: [Jprogramming] Permutations with repeats (combinations?) > > My first attempt at implementing like that ran into a problem with > mix-matched types in r for some cases, so I reworked the thing to > support arguments of any type: > > comb=: 4 : 0 > k=. i.>:d=.y-x > z=. (d$<i.0 0),<i.1 0 > for. i.x do. z=. k ,.&.> ,&.>/\. >:&.> z end. > ; z > ) > > peermm=:3 :0 > arg=. (/: #@>)</.~i.~y > n1=. 0 i.~1=#@> arg > m=. (i.@! A. i.)n1 > for_d.n1}.arg do. > u=.{.s=.>d > n=.i.(#s)+{:$m > e=.n e."1 s comb&#n > m=.,/(u*e)+"1/"_1 (1-e)#inv"1/m > end. > m{y > ) > > I have no idea if this is actually faster. I'll let someone else worry > about that. > > -- > Raul > > On Sat, Apr 25, 2015 at 12:58 PM, Roger Hui <rogerhui.can...@gmail.com> wrote: >> The peermm function can be made faster by doing the actual permutations of >> those cells of </.~y having only a single element. >> >> >> On Fri, Apr 24, 2015 at 10:46 PM, Raul Miller <rauldmil...@gmail.com> wrote: >> >>> On Fri, Apr 24, 2015 at 7:03 PM, Roger Hui <rogerhui.can...@gmail.com> >>> wrote: >>> > The details of implementing this algorithm are left as an exercise for >>> the >>> > reader. :-) >>> >>> Do I qualify as a reader? >>> >>> comb=: 4 : 0 >>> k=. i.>:d=.y-x >>> z=. (d$<i.0 0),<i.1 0 >>> for. i.x do. z=. k ,.&.> ,&.>/\. >:&.> z end. >>> ; z >>> ) >>> >>> peermm=:3 :0 >>> r=.i.1 0 >>> for_d.</.~y do. >>> u=.{.s=.>d >>> n=.i.(#s)+{:$r >>> e=.n e."1 s comb&#n >>> r=.,/(u*e)+"1/"_1 (1-e)#inv"1/r >>> end. >>> ) >>> >>> peermm 1 1 2 2 >>> 2 2 1 1 >>> 2 1 2 1 >>> 2 1 1 2 >>> 1 2 2 1 >>> 1 2 1 2 >>> 1 1 2 2 >>> >>> -- >>> Raul >>> ---------------------------------------------------------------------- >>> 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