Difference between revisions of "User:Abstract Alchemi"

From Second Life Wiki
Jump to navigation Jump to search
m (Another minor issue fixed.)
(Finished my progress!)
 
Line 1: Line 1:
==Scripts==
==Scripts==
Out of some interest in [http://en.wikipedia.org/wiki/Base_(mathematics) Bases], I wanted to make something that could convert from [http://en.wikipedia.org/wiki/Decimal Base-10] to any other base. I started off reading documentation on how to do so, and I decided i'd try just to convert from Base-23 to [http://en.wikipedia.org/wiki/Decimal Base-10]. Here are my results!
Out of some interest in [http://en.wikipedia.org/wiki/Base_(mathematics) Bases], I wanted to make something that could convert from [http://en.wikipedia.org/wiki/Decimal Base-10] to any other base. Here are my results!
==Base-23 and [http://en.wikipedia.org/wiki/Decimal Base-10]==
==Base-N (1 < N < 67)==
<lsl>
<lsl>
string IntegerToBase23(integer int){
string integertobase(integer base, integer int){
     string code = "0123456789ABCDEFGHIJKLMNOPQRSTUVW";
     int = llAbs(int); if(base > 66||base < 1||base == 10) return "-1";
     string base23;
     string code = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
     if(int < 23) return llGetSubString(code,int,int);
     string baseInteger;
     while(int > 23){
     while(int > base){
         integer mod = int%23;
         integer mod = int%base;
         int = int/23;
         int = (integer)llList2String(llParseString2List((string)(int/base),["."],[]),0);
         base23 += llGetSubString(code,mod,mod);
         baseInteger += llGetSubString(code,mod,mod);
     }
     }
     if(int != 0) base23 += llGetSubString(code,int,int); string str; integer i;
     if(int != 0) baseInteger += llGetSubString(code,int,int); string str; integer i;
     for(i = llStringLength(base23)-1; i >= 0; i--) str += llGetSubString(base23,i,i);
     for(i = llStringLength(baseInteger)-1; i >= 0; i--) str += llGetSubString(baseInteger,i,i);
     return str;
     return str;
}
}
integer Base23ToInteger(string src){
 
     integer base23; integer i;
integer basetointeger(integer base, string src){
     string code = "0123456789ABCDEFGHIJKLMNOPQRSTUVW";
    if(base > 66||base < 1||base == 10) return -1;
     integer baseInteger; integer i;
     string code = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
     for(i = 0; i < llStringLength(src);i++){
     for(i = 0; i < llStringLength(src);i++){
         if(llSubStringIndex(code,llGetSubString(src,i,i)) == -1) return -1;
         if(llSubStringIndex(code,llGetSubString(src,i,i)) == -1) return -1;
         base23 += llSubStringIndex(code,llGetSubString(src,i,i))*(integer)llPow(23,llAbs(i-llStringLength(src)+1));
         baseInteger += llSubStringIndex(code,llGetSubString(src,i,i))*(integer)llPow(base,llAbs(i-llStringLength(src)+1));
     }  
     }  
     return base23;
     return baseInteger;
}
 
default{
    state_entry(){
        integer num = 10;
        llSay(0,(string)IntegerToBase23(num)+" == "+(string)Base23ToInteger(IntegerToBase23(num)));
    }
}
}
</lsl>
</lsl>

Latest revision as of 19:52, 29 January 2010

Scripts

Out of some interest in Bases, I wanted to make something that could convert from Base-10 to any other base. Here are my results!

Base-N (1 < N < 67)

<lsl> string integertobase(integer base, integer int){

   int = llAbs(int); if(base > 66||base < 1||base == 10) return "-1";
   string code = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
   string baseInteger;
   while(int > base){
       integer mod = int%base;
       int = (integer)llList2String(llParseString2List((string)(int/base),["."],[]),0);
       baseInteger += llGetSubString(code,mod,mod);
   }
   if(int != 0) baseInteger += llGetSubString(code,int,int); string str; integer i;
   for(i = llStringLength(baseInteger)-1; i >= 0; i--) str += llGetSubString(baseInteger,i,i);
   return str;

}

integer basetointeger(integer base, string src){

   if(base > 66||base < 1||base == 10) return -1;
   integer baseInteger; integer i;
   string code = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
   for(i = 0; i < llStringLength(src);i++){
       if(llSubStringIndex(code,llGetSubString(src,i,i)) == -1) return -1;
       baseInteger += llSubStringIndex(code,llGetSubString(src,i,i))*(integer)llPow(base,llAbs(i-llStringLength(src)+1));
   } 
   return baseInteger;

} </lsl>