RosettaCodeData/Task/Caesar-cipher/XBS/caesar-cipher.xbs

38 lines
638 B
Plaintext

set letters="ABCDEFGHIJKLMNOPQRSTUVWXYZ"::split();
func caesar(text,shift:number=1){
set res:string="";
for(i=0;?text-1;1){
set t=text::at(i);
set n=(letters::find(t::upper())+shift)%?letters;
while(n<0){
n=?letters+n;
}
set l=letters[n];
(t::upper()==t)|=>l=l::lower()
res+=l;
}
send res;
}
func decode(text,shift:number=1){
set res:string="";
for(i=0;?text-1;1){
set t=text::at(i);
set n=(letters::find(t::upper())-shift)%?letters;
while(n<0){
n=?letters+n;
}
set l=letters[n];
(t::upper()==t)|=>l=l::lower()
res+=l;
}
send res;
}
set e=caesar("Hi",20);
set d=decode(e,20);
log(e);
log(d);