How to get the difference between two lists?
Dar Scott
dsc at swcp.com
Tue Apr 5 01:44:30 EDT 2005
On Apr 3, 2005, at 9:04 PM, Ken Ray wrote:
> I can of course do a repeat loop through the small list and remove
> those
> items from the comprehensive list, but I'm wondering if there's a
> faster way
> to do this.
I took a break and tried my hand at this.
The function using offset did better than array element deletion in
some cases. The function using replaceText() did poorly for medium
size lists and bailed out for large lists to be removed. I think there
is something fishy (that is n^2) in replaceText(). The last one was my
attempt to avoid 'line n' and is similar to Frank's, I think. It was
still a little bit slower than array element deletion in my tests.
function shortListDar2 pList, pExcludeList
local resultList = ""
put lf before pList
put 0 into lastUsedChar
if char -1 of pList is not lf then put lf after pList
repeat for each line ex in pExcludeList
put lf & ex & lf into exWithLF
get offset(exWithLf,pList,lastUsedChar)
if it is not zero then
put char lastUsedChar+1 to lastUsedChar+it of pList after
resultList
put lastUsedChar + it + length(exWithLF) - 1 into lastUsedChar
end if
end repeat
put char lastUsedChar+1 to -1 of pList after resultList
return char 2 to -2 of resultList
end shortListDar2
--function shortListDar3 pList, pExcludeList
-- get "(?m)^" & replaceText(pExcludeList,"\n","\n|^") & "\n"
-- return replaceText(pList,it,empty)
--end shortListDar3
function shortListDar4 pList, pExcludeList
local resultList
put lf & "10000000000000" after pExcludeList
put line 1 of pExcludeList into checkLine
put 1 into charOffset
repeat for each line listLine in pList
repeat while checkLine < listLine
add length(checkLine)+1 to charOffset
put line 1 of (char charoffset to charoffset+20 of pExcludeList)
into checkLine
end repeat
if listLine < checkline then
put listLine & lf after resultList
end if
end repeat
return char 1 to -2 of resultList
end shortListDar4
--
**********************************************
DSC (Dar Scott Consulting & Dar's Lab)
http://www.swcp.com/dsc/
Programming Services and Software
**********************************************
More information about the use-livecode
mailing list