At 5:59 PM +1200 7/11/04, Sean Wilson wrote:



While Irv has already provided some crafty code, it's worth noting that for performance's sake you only need to iterate through the _smaller_ list looking for duplicates.


-Sean.


Sean is right. Here's a revised version that accounts for this (still untested):


on FindMatches listA, listB
  -- The output will be a list of all items which are in both lists
  matchList = []
  nItemsInListA = count(listA)
  nItemsInListB = count(listB)

  if nItemsInListA < nItemsInListB then
    -- iterate through all the items in the first list
    repeat with i = 1 to nItemsInListA
      -- grab each item
      itemFromListA = listA[i]
      -- see if it exists in the other list
      where = getOne(listB, itemFromListA)
      -- if so, add it to the resulting matching list
      if where > 0 then
         append(matchList, itemFromListA)
      end if
    end repeat

 else
    -- iterate through all the items in the second list
    repeat with i = 1 to nItemsInListB
      -- grab each item
      itemFromListB = listB[i]
      -- see if it exists in the other list
      where = getOne(listA, itemFromListB)
      -- if so, add it to the resulting matching list
      if where > 0 then
         append(matchList, itemFromListB)
      end if
    end repeat

 end if
  -- return the matching list
  return matchList
end

--

Multimedia Wrangler.

[To remove yourself from this list, or to change to digest mode, go to http://www.penworks.com/lingo-l.cgi To post messages to the list, email [EMAIL PROTECTED] (Problems, email [EMAIL PROTECTED]). Lingo-L is for learning and helping with programming Lingo. Thanks!]

Reply via email to