That's an error on my part. It' not unique to boxed data, you can see the same flaw with:
peermm 'ababc' Basically, I did not spend enough time exploring the boundaries between the two abstractions I was using. I think this fixes that problem: 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 Y=. ;(/: #@>)</.~y 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 ) There might be a better (more concise and faster) way of setting this up? Thanks, -- Raul On Sat, Apr 25, 2015 at 8:29 PM, 'Pascal Jasmin' via Programming <programm...@jsoftware.com> wrote: > 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 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm