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

Reply via email to