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

Reply via email to