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);