Difference between revisions of "StringReverse"

From Second Life Wiki
Jump to navigation Jump to search
m (tweaked)
m (~updated small code w/ thanks to Pete)
Line 9: Line 9:


'''Smaller Code:'''
'''Smaller Code:'''
* LSO: 169 bytes
* LSO: 158 bytes
* MONO: 512 bytes
* MONO: 512 bytes
<lsl>string uStringReverse( string vStrSrc ){
<lsl>/*//-- Reverse String Order (small version) --//*/
string uStringReverse( string vStrSrc ){
     integer vIntCnt = llStringLength( vStrSrc );
     integer vIntCnt = llStringLength( vStrSrc );
     while (vIntCnt){
     while (vIntCnt){
         vStrSrc += llGetSubString( vStrSrc, (vIntCnt = ~-vIntCnt), vIntCnt );
         vStrSrc = llDeleteSubString( vStrSrc, vIntCnt, vIntCnt ) +
        vStrSrc = llDeleteSubString( vStrSrc, vIntCnt, vIntCnt );
                  llGetSubString( vStrSrc, (vIntCnt = ~-vIntCnt), vIntCnt );
     }
     }
     return vStrSrc;
     return vStrSrc;
Line 21: Line 22:
/*//--                      Anti-License Text                        --//*/
/*//--                      Anti-License Text                        --//*/
/*//    Contributed Freely to the Public Domain without limitation.    //*/
/*//    Contributed Freely to the Public Domain without limitation.    //*/
/*//  2009 (CC0) [ http://creativecommons.org/publicdomain/zero/1.0 ]  //*/
/*//  2012 (CC0) [ http://creativecommons.org/publicdomain/zero/1.0 ]  //*/
/*//  Void Singer [ https://wiki.secondlife.com/wiki/User:Void_Singer ]  //*/
/*//  Void Singer [ https://wiki.secondlife.com/wiki/User:Void_Singer ]  //*/
/*//--                                                                --//*/</lsl><!-- Please do not remove license statement -->
/*//--                                                                --//*/</lsl><!-- Please do not remove license statement -->

Revision as of 15:37, 17 January 2012

User-Defined Function: string uStringReverse( string vStrSrc );

Returns a string that is vStrSrc with the characters in reverse order

  • vStrSrc: source string to reverse


Smaller Code:

  • LSO: 158 bytes
  • MONO: 512 bytes

<lsl>/*//-- Reverse String Order (small version) --//*/ string uStringReverse( string vStrSrc ){

   integer vIntCnt = llStringLength( vStrSrc );
   while (vIntCnt){
       vStrSrc = llDeleteSubString( vStrSrc, vIntCnt, vIntCnt ) +
                 llGetSubString( vStrSrc, (vIntCnt = ~-vIntCnt), vIntCnt );
   }
   return vStrSrc;

} /*//-- Anti-License Text --//*/ /*// Contributed Freely to the Public Domain without limitation. //*/ /*// 2012 (CC0) [ http://creativecommons.org/publicdomain/zero/1.0 ] //*/ /*// Void Singer [ https://wiki.secondlife.com/wiki/User:Void_Singer ] //*/ /*//-- --//*/</lsl>

Faster Code:

  • LSO: 184 bytes
  • MONO: 512 bytes

<lsl>string uStringReverse( string vStrSrc ){

   integer vIntCnt = llStringLength( vStrSrc );
   while (vIntCnt){
       vStrSrc += llGetSubString( vStrSrc, (vIntCnt = ~-vIntCnt), vIntCnt );
   }
   return llGetSubString( vStrSrc, llStringLength( vStrSrc ) >> 1, 0xFFFFFFFF );

} /*//-- Anti-License Text --//*/ /*// Contributed Freely to the Public Domain without limitation. //*/ /*// 2009 (CC0) [ http://creativecommons.org/publicdomain/zero/1.0 ] //*/ /*// Void Singer [ https://wiki.secondlife.com/wiki/User:Void_Singer ] //*/

/*//-- --//*/</lsl>

Caveats

  • The "Faster" version doubles the string size internally, and is more likely to cause a stack/heap collision(script crash) with large strings and/or limited free memory