Re: Intersection and element counts
- To: mathgroup at smc.vnet.net
 - Subject: [mg20673] Re: [mg20615] Intersection and element counts
 - From: BobHanlon at aol.com
 - Date: Sun, 7 Nov 1999 02:10:08 -0500
 - Sender: owner-wri-mathgroup at wolfram.com
 
Here is an approach using a variation of run length encoding:
runs[aList_List?VectorQ] := {First[#], Length[#]} & /@ Split[Sort[aList]];
myIntersection[list1_List?VectorQ, list2_List?VectorQ] := Module[
      {intr = Intersection[list1, list2]}, 
      Flatten[
        Cases[Transpose[{Select[runs[list1], MemberQ[intr, #[[1]]] &], 
              Select[runs[list2], MemberQ[intr, #[[1]]] &]}], {{x_, 
                m_Integer}, {x_, n_Integer}} :> Table[x, {Min[m, n]}]]]];
myIntersection[{a, a, a, b, b, c}, {a, a, b, b}]
{a, a, b, b}
Bob Hanlon
In a message dated 11/4/1999 6:37:33 AM, acus at itpa.lt writes:
>I am interesting in intersecion, which takes into 
>account the number of the same elements.
>
>It is I would like 
>
>myIntersection[{a,a,a,b,b,c},{a,a,b,b}]
>
>to give me {a,a,b,b}.
>
>Any solutions?
>Do theoretical speed of this function is 
>very different of usual intersection algorithm speed?
>