Difference between revisions of "StringReverse"
Void Singer (talk | contribs) m (tweaked) |
Void Singer (talk | contribs) m (~updated small code w/ thanks to Pete) |
||
Line 9: | Line 9: | ||
'''Smaller Code:''' | '''Smaller Code:''' | ||
* LSO: | * 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 | 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. //*/ | ||
/*// | /*// 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
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials | User-Defined Functions | Void's User Page |
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