38 lines
638 B
Plaintext
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);
|