Finding non-common elements in two arrays
Wouter
wouter.abraham at scarlet.be
Wed Nov 9 07:11:47 EST 2005
Hi again,
A little update on the intersectSpecial function
--> a bit speedier and 3 results in 1 array
function intersectSpecial pListA,pListB, at pR
if char -1 of pListA is not cr then put cr after pListA
replace cr with tab & "1" & cr in pListA
split pListA with cr and tab
repeat for each line i in pListB
add 2 to pListA[i]
end repeat
repeat for each line i in the keys of pListA
put i & cr after pR[pListA[i]]
end repeat
return the keys of pR <> ""
end intersectSpecial
on mouseUp
put the millisecs into zap
get intersectSpecial(fld 1,fld 2,a)
put the millisecs - zap
if it then
put "* Common in both:" & cr & a[3] after tList
put "* Unique in list A:" & cr & a[1] after tList
put "* Unique in list B:" & cr & a[2] after tList
put tList into fld 3
else put it into fld 3
end mouseUp
Greetings,
Wouter
On 07 Nov 2005, at 01:05, Buster wrote:
> function intersectSpecial pList1,pList2,pMode
> repeat for each line i in pList1
> add 1 to a[i]
> end repeat
> repeat for each line i in pList2
> add 2 to a[i]
> end repeat
> combine a with cr and tab
> ### elements only in pList1 --> 1
> ### elements only in pList2 --> 2
> ### elements in both lists --> 3
> if pMode = "bothCommon" then put "*"&tab&"3" into tFilter
> else if pMode = "uniqueA" then put "*"&tab&"1" into tFilter
> else if pMode = "uniqueB" then put "*"&tab&"2" into tFilter
> else if pMode = "bothUnique" then put "*"&tab&"1,*" &tab&"2" into
> tFilter
> repeat for each item tFilterString in tFilter
> put a into b
> filter b with tFilterString
> replace char 2 to -1 of tFilterString with "" in b
> put b & cr after tList
> end repeat
> return tList
> end intersectSpecial
>
> on mouseUp
> put the millisecs into zap
> put intersectSpecial(fld 1,fld 2,"bothUnique") into fld 3
> put the millisecs - zap
> end mouseUp
>
> May be not a real speed monster but not bad either
> (takes < 500 millisecs for 2 fields with > 25000 lines on an iMac
> G5 1.8 gHz)
>
> Greetings,
> Wouter
More information about the use-livecode
mailing list