I can't write you the entire program since that would be make your work a bit moot, but I can certainly draw you up some pseudocode for an algorithm to do it.
Code:
operating on input (list list1, list list2)
define list temp1;
define list temp2;
define list temp3;
define bool checker;
//The following code does this
//Read in each element of the first list one by one
//For each element, check to see if its in the temporary list
//Do this by iterating over each element in temp1 and comparing it
//If it wasn't in that list, add it to the temporary list
//Once this is finished, temp1 will be the non-redundant elements of list1
for (i = 0; i++; i < size(list1)) do
checker = false;
for (j = 0; j++; j < size(temp1)) do
if (temp1[j] == list1[i]) then
checker = true;
end
if checker == false then
temp1.addElement(list1[i]);
end
end
end
//Now copy/paste the above code for list 2.
//This does the exact same thing, making temp2 into the
//Non-redundant elements of list 2
for (i = 0; i++; i < size(list2)) do
checker = false;
for (j = 0; j++; j < size(temp2)) do
if (temp2[j] == list2[i]) then
checker = true;
end
if checker == false then
temp2.addElement(list2[i]);
end
end
end
//Now this is the tricky part. Compare the list temp1 to temp2
//This time, read only the leftmost digits of temp2, based on
//the # of chars in string 1, to check for matches
//without parsing for the "-" symbol this could lead to
//false positives if you say had "ass-kick" and "assassin-ninja"
//And list1 contained "ass". In which case you'd want to use a
//String tokenizer to read the string up to the "-" object;
//you'd have to figure out how to do that yourself
//The final product is "temp3"
for (i = 0; i++; i < size(temp2)) do
checker = false;
for (j = 0; j++; j < size(temp1)) do
if (temp1[j] == right$(temp2[i],size(temp1[j])) then
checker = true;
end
if checker == false then
temp3.addElement(temp2[i]);
end
end
end
This is all pseudocode, it won't run in any language.
Its just a general algorithm that will do exactly what you wanted- and it can easily be done in MMF2, using just
*List Objects
*Fast Loops
*The "Compare 2 general values" condition
Translating between the pseudocode and MMF2 is where all the work is >.>