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 )
cmbcomb=: 3 :0 a=. |.#/.~ y b=. |.(] <@comb"0 +/\) a c=. ; ([:,/ [,"1"1 _1 ]{"1"_ 1 [-.~"1 i.@(+&({:@$)))L:0/ b y {~ /:"1 c ) cmbcomb 2#>:i.2 1 1 2 2 1 2 1 2 1 2 2 1 2 1 1 2 2 1 2 1 2 2 1 1 the number of such permutations is determined by (!@(+/)% [:*/ !)x: 2#2 6 (!@(+/)% [:*/ !)x: 5#2 113400 ts'Treb=.cmbcomb 2#>:i.5' 0.043948924 50340608 #Treb 113400 ts'Tpj=.rperm2 2#>:i.5' 0.20252285 42215296 #Tpj 113400 Tpj-: Treb 0 Tpj-:&(/:~) Treb 1 (!@(+/)% [:*/ !)x: 6#2 7484400 ts'rperm2 2#>:i.6' 15.864774 4.8486253e9 ts'cmbcomb 2#>:i.6' 3.8703475 3.2212362e9 R.E. Boss (Add your info to http://www.jsoftware.com/jwiki/Community/Demographics ) > -----Original Message----- > From: programming-boun...@forums.jsoftware.com [mailto:programming- > boun...@forums.jsoftware.com] On Behalf Of R.E. Boss > Sent: zondag 26 april 2015 8:59 > To: programm...@jsoftware.com > Subject: Re: [Jprogramming] Permutations with repeats (combinations?) > > > peermm 'ababc' > |length error: peermm > | m=.,/(u*e)+"1/"_1(1-e) #inv"1/m > > > R.E. Boss > > > > -----Original Message----- > > From: programming-boun...@forums.jsoftware.com > [mailto:programming- > > boun...@forums.jsoftware.com] On Behalf Of Raul Miller > > Sent: zondag 26 april 2015 3:22 > > To: Programming forum > > Subject: Re: [Jprogramming] Permutations with repeats (combinations?) > > > > 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 > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm