Help with an algorithm...
Alex Tweedly
alex at tweedly.net
Mon Aug 5 16:28:02 EDT 2019
I'm a great fan of, and user of, arrays - but we always need to be
careful of losing data with duplicated keys.
You haven't said that the parent names in LISTNEW are guaranteed to be
unique. This simple code assumes they are - if they're not, it's easy to
add a check ... (And it also assumes the inputs are properly formatted!!)
(inputs are in fields "FNew" and "FOld", output in field "FOut")
on mouseUp
local tOld, tNew, tOut
local tA
local tLastParent
put the text of fld "FNew" into tNew
repeat for each line L in tNew -- convert to array
if L begins with space then -- a child
put L &CR after tA[tLastParent]
else
put L into tLastParent
end if
end repeat
put the text of fld "FOld" into tOld
put empty into tLastParent
repeat for each line L in tOld
if L begins with space then -- a child
if (tLastParent is not empty) \
AND (L is not among the lines of tA[tLastParent]) then
put L &CR after tA[tLastParent]
end if
else
if L is among the keys of tA then -- a Parent we need to deal with
put L into tLastParent
else
put empty into tLastParent
end if
end if
end repeat
-- and then collect the expanded outptu
local tKeys
put the keys of tA into tKeys
sort lines of tKeys
repeat for each line K in tKeys
put K &CR & tA[K] after tOut
end repeat
put tOut into fld "fOut"
end mouseUp
Alex.
On 05/08/2019 16:53, Paul Dupuis via use-livecode wrote:
> Today is not my coding day. I have a problem I should be able to
> design a solution for an am struggling. Clearly I am missing "something"
>
> I have 2 lists (LISTNEW and LISTOLD) of the following format:
>
> ParentA
> <space>Child 1
> <space>Child 2
> <space>etc.
> ParentB
> <space>Child 1
> <space>etc.
> etc.
>
> The parents are in alphabetical sorted order, the children may not be
> in sorted order
>
> I need to hunt through LISTOLD comparing the LISTOLD Parents to the
> LISTNEW Parents
> FOR any LISTOLD Parent present in LISTNEW, check the Children of the
> matching Parents and add any Child for the LISTOLD Parent that is not
> already under its matching LISTNEW Parent
> FOR any LISTOLD Parent NOT in LISTNEW, I can ignore the Parent and
> its Children
>
> I can not seem to write an approach to solve this today. Does any body
> have some code so solve this they may be willing to share?
>
> _______________________________________________
> 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