ListXnotY

From Second Life Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Function: list ListXnotY(list lx, list ly);

Show what x list has that y list is missing.

See also: Lists

list ListXnotY(list lx, list ly) {// return elements in X list that are not in Y list
    list lz;
    integer i = llGetListLength(lx);
    while(i--)
	if ( !~llListFindList(ly,llList2List(lx,i,i)) )  // * see Note
            lz += llList2List(lx,i,i);
    return lz;
}

Note: If the if test is written as if (!~llListFindList ... , the result will be a list of elements in X that are missing from list Y. If it is written as if (~llListFindList ... , the result will be a list of elements in X that are present in list Y.

Example:

list l1 = ["a","b","c","d"];
list l2 = ["a","1","b","2","c","3"];

list ListXnotY(list lx, list ly) {// return elements in X list that are not in Y list
    list lz;
    integer i = llGetListLength(lx);
    while(i--)
	if ( !~llListFindList(ly,llList2List(lx,i,i)) )
            lz += llList2List(lx,i,i);
    return lz;
}

default{
   state_entry() {
      llSay(0, "X list has this in it, but Y list doesn't: " + llList2CSV(ListXnotY(l1,l2)) );
      //will say: d
   }
}

Posted with the kind permission of Very Keynes, who originated this script June 2007 in the SL scripters forum http://forums-archive.secondlife.com/54/e4/194138/1.html