Difference between revisions of "ListXorY"

From Second Life Wiki
Jump to: navigation, search
(New page: {{LSL Header}} __NOTOC__ <div id="box"> == Function: list ListXorY(list {{LSL Param|lx}}, list {{LSL Param|ly}}); == <div style="padding: 0.5em;"> Join two lists to make one ne...)
 
m (<lsl> tag to <source>)
 
(8 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
{{LSL Header}} __NOTOC__
 
{{LSL Header}} __NOTOC__
 +
[[Category:LSL_User-Defined Functions]]
 
<div id="box">
 
<div id="box">
 
== Function: [[list]] ListXorY([[list]] {{LSL Param|lx}}, [[list]] {{LSL Param|ly}}); ==
 
== Function: [[list]] ListXorY([[list]] {{LSL Param|lx}}, [[list]] {{LSL Param|ly}}); ==
 
<div style="padding: 0.5em;">
 
<div style="padding: 0.5em;">
 
Join two lists to make one new combined list, while also eliminating any resulting duplicates in the new list.
 
Join two lists to make one new combined list, while also eliminating any resulting duplicates in the new list.
 +
 +
See also: [[List|Lists]]
 +
 +
<source lang="lsl2">
 +
list ListXorY(list lx, list ly){ // add the lists eliminating duplicates
 +
    list lz = []; integer x;
 +
    for (x = 0; x < llGetListLength(ly); ++x){
 +
        if (~llListFindList(lx,llList2List(ly,x,x))){
 +
            ;
 +
        }
 +
        else {
 +
            lz = lz + llList2List(ly,x,x);
 +
        }
 +
    }
 +
    return lx + lz;
 +
}
 +
</source>
  
  
 
Example:<br />
 
Example:<br />
  
<lsl>
+
<source lang="lsl2">
 
list l1 = ["a","b","c","d"];
 
list l1 = ["a","b","c","d"];
 
list l2 = ["a","1","b","2","c","3"];
 
list l2 = ["a","1","b","2","c","3"];
  
default{
 
  state_entry() {
 
      llSay(0, "The new combined list is: " + llList2CSV(ListXorY(l1,l2)) );
 
      //will say: a, b, c, d, 1, 2, 3
 
  }
 
}
 
</lsl>
 
 
 
 
</div></div>
 
<div id="box">
 
== Specification ==
 
<div style="padding: 0.5em;">
 
<lsl>
 
 
list ListXorY(list lx, list ly){ // add the lists eliminating duplicates
 
list ListXorY(list lx, list ly){ // add the lists eliminating duplicates
 
     list lz = []; integer x;
 
     list lz = []; integer x;
 
     for (x = 0; x < llGetListLength(ly); ++x){
 
     for (x = 0; x < llGetListLength(ly); ++x){
         if ((integer)~llListFindList(lx,llList2List(ly,x,x))){
+
         if (~llListFindList(lx,llList2List(ly,x,x))){
 
             ;
 
             ;
 
         }
 
         }
Line 39: Line 42:
 
     return lx + lz;
 
     return lx + lz;
 
}
 
}
</lsl>
 
</div></div>
 
  
Posted with the kind permission of Very Keynes, which originated this script June 2007 in the SL scripters forum http://forums.secondlife.com/showthread.php?t=194138
+
default{
 +
  state_entry() {
 +
      llSay(0, "The new combined list is: " + llList2CSV(ListXorY(l1,l2)) );
 +
      //will say: a, b, c, d, 1, 2, 3
 +
  }
 +
}
 +
</source>
 +
 
 +
</div>
 +
 
 +
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
  
{{LSLC|Examples|Float2String}}
+
{{LSLC|Examples|ListXorY}}

Latest revision as of 14:26, 22 January 2015

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

Join two lists to make one new combined list, while also eliminating any resulting duplicates in the new list.

See also: Lists

list ListXorY(list lx, list ly){ // add the lists eliminating duplicates
    list lz = []; integer x;
    for (x = 0; x < llGetListLength(ly); ++x){
        if (~llListFindList(lx,llList2List(ly,x,x))){
            ;
        }
        else {
            lz = lz + llList2List(ly,x,x);
        }
    }
    return lx + lz;
}


Example:

list l1 = ["a","b","c","d"];
list l2 = ["a","1","b","2","c","3"];
 
list ListXorY(list lx, list ly){ // add the lists eliminating duplicates
    list lz = []; integer x;
    for (x = 0; x < llGetListLength(ly); ++x){
        if (~llListFindList(lx,llList2List(ly,x,x))){
            ;
        }
        else {
            lz = lz + llList2List(ly,x,x);
        }
    }
    return lx + lz;
}
 
default{
   state_entry() {
      llSay(0, "The new combined list is: " + llList2CSV(ListXorY(l1,l2)) );
      //will say: a, b, c, d, 1, 2, 3
   }
}
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