Compare two lists

Alex Tweedly alex at tweedly.net
Mon Sep 2 06:53:27 EDT 2013


John,


How about something like (rough, untested pseudo-code) ....

put 1 into tLast
put 1 into tThis
put the number of lines in pLastWeek into countLast
put the number of lines in pThisWeek into countThis

repeat until the sun goes down  (I don't like to do "repeat forever ...")
    if tLast > countLast then  -- last week's is done
       if tThis > countThis then exit repeat   -- we're done
       -- every thing remaining in this week's report is new
       reportNew line tThis of pThisweek
       add 1 to tThis
       next repeat
    end if
    if tThis > countThis then   -- this week's is done, last week's isn't
      reportRemoved line tLast of pLastWeek
      add 1 to tLast
      next repeat
    end if
    if line tLast of pLastWeek = line tThis of pThisweek then next repeat
    if item 1 to 2 of line tLast of pLastWeek = item 1 to 2 of line 
tThis of pThisweek then
         reportChanged line tLast of pLastWeek,  line tThis of pThisweek
         add 1 to tThis
         add 1 to tLast
         next repeat
    end if
    if lineOffset( (CR & item 1 to 2 of line tLast of pLastWeek, line 
tThis to -1 of pThisWeek) > 0 then
        -- last week's line occurs later in this week's report
       reportNew line tThis of pThisweek
       add 1 to tThis
       next repeat
    end if
    -- last week's line doesn't appear - so it has been removed
    reportRemoved  line tLast of pLastWeek
    add 1 to tLast
end repeat

good luck ...
-- Alex.

On 02/09/2013 11:36, John Allijn wrote:
> An automated system sends me weekly reports with the following structure:
> Country,city,device_type,numer_of_devices
> I'm working on an app that evaluates these reports and there is one thing I can't get done.
> I'd like to compare this weeks report with that of last week and report changes.
> Output could be something like this:
> - UK-London - mobile - added 2 devices
> - UAE - Dubai - new location - server - added 1
> - FR - Paris - location removed - no more devices
> - FR - Marseille - Location Added - mobile - 1 device added
> - BE - brussels - no change
>
>
> In my script I open both reports, copy the contents to two fields and with a loop I compare line by line of the two fields.
> This works well as long as only the numbers change. When locations, cities or countries are added or deleted, the number of lines of both fields don't match anymore and my script doesnt work anymore.
>
>
> There is potentially an unlimited number of countries, each with an unlimited number of cities that can be added or removed. I tried skipping a line and checking if that one matches with the next one in the other list, but obviously that didnt work. :(
>
>
> Does anyone have an idea on how to approach this problem?
>
>
>
> Thanks for any insights!!!
>> Sent from Mailbox for iPhone
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the use-livecode mailing list