08-04-15.mw

> with(StringTools):
 

> Caesar := proc(plain, shift)
  local numlist;
  numlist:=convert(plain, bytes);
   convert( [ seq(modp(numlist[i]+shift, 127), i=1..nops(numlist))], bytes);
end:
 

> Caesar("Yo' mommy so fat that...",-32);
 

9O (1)
 

> Caesar("Yo' mommy so fat that...",-12);
 

McacaamgcZUhh\Uh (2)
 

> convert("Yo' mommy", bytes);
 

[89, 111, 39, 32, 109, 111, 109, 109, 121] (3)
 

> Caesar("Yo' mommy so fat that...",95);
 

9O (4)
 

> Caesar := proc(plain, shift)
  local numlist;
  numlist:=convert(plain, bytes);
   convert( [ seq(modp(numlist[i]+shift-1, 127)+1, i=1..nops(numlist))], bytes);
end:
 

> Caesar("Yo' mommy so fat that...",95);
 

9OMOMMYSOFATTHAT (5)
 

> IsPrintable("a");
 

true (6)
 

> convert([5],bytes);
 

 (7)
 

> IsPrintable(convert([5],bytes));
 

false (8)
 

> Alphabet:="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+-=;:' ?<>,\".";
 

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+-=;:' ?<>,
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+-=;:' ?<>,
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+-=;:' ?<>,
(9)
 

> length(Alphabet);
 

86 (10)
 

> SearchText("p", Alphabet);
 

16 (11)
 

> SearchText("a", Alphabet);
 

1 (12)
 

> SearchText(".", Alphabet);
 

86 (13)
 

> SearchText("Howdy", Alphabet);
 

0 (14)
 

> word:="Howdy";
 

Howdy (15)
 

> word[1];
 

H (16)
 

> word[5];
 

y (17)
 

> seq(word[i],i=1..length(word));
 

H (18)
 

> StringToList := proc(text)
 global Alphabet;
 return(
     [seq(  SearchText(text[i], Alphabet)   ,i=1..length(text))] );
end;
 

proc (text) global Alphabet; return [seq(SearchText(text[i], Alphabet), i = 1 .. length(text))] end proc
proc (text) global Alphabet; return [seq(SearchText(text[i], Alphabet), i = 1 .. length(text))] end proc
proc (text) global Alphabet; return [seq(SearchText(text[i], Alphabet), i = 1 .. length(text))] end proc
(19)
 

> StringToList("Howdy");
 

[34, 15, 23, 4, 25] (20)
 

> StringToList(3);
 

Error, (in StringToList) invalid arguments for searchtext
 

> StringToList := proc(text::string)
 global Alphabet;
 return(
     [seq(  SearchText(text[i], Alphabet)   ,i=1..length(text))] );
end;
 

proc (`::`(text, string)) global Alphabet; return [seq(SearchText(text[i], Alphabet), i = 1 .. length(text))] end proc
proc (`::`(text, string)) global Alphabet; return [seq(SearchText(text[i], Alphabet), i = 1 .. length(text))] end proc
proc (`::`(text, string)) global Alphabet; return [seq(SearchText(text[i], Alphabet), i = 1 .. length(text))] end proc
(21)
 

> StringToList(3);
 

Error, invalid input: StringToList expects its 1st argument, text, to be of type string, but received 3
 

> StringToList("3");
 

[55] (22)
 

> ListToString := proc( numlist )
 global Alphabet;
 seq( Alphabet[numlist[i]], i=1..nops(numlist) );
end:
 

> ListToString([3,5,1]);
 

c (23)
 

> cat(%);
 

cea (24)
 

> ListToString := proc( numlist )
 global Alphabet;
  cat( seq( Alphabet[numlist[i]], i=1..nops(numlist) ) );
end:
 

> ListToString ( [0, -7, 512, 6 ]);
 

Error, (in ListToString) invalid range for string subscript
 

> ListToString ( "Henry");
 

Error, (in ListToString) invalid string subscript selector
 

> ListToString := proc( numlist :: list(posint))
 global Alphabet;
  cat( seq( Alphabet[numlist[i]], i=1..nops(numlist) ) );
end:
 

> ListToString ( "Henry");
 

Error, invalid input: ListToString expects its 1st argument, numlist, to be of type list(posint), but received Henry
 

> ListToString ( [0, -7, 512, 6 ]);
 

Error, invalid input: ListToString expects its 1st argument, numlist, to be of type list(posint), but received [0, -7, 512, 6]
 

> ListToString ( [1, 7, 512, 6 ]);
 

agf (25)
 

> Alphabet;
 

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+-=;:' ?<>, (26)
 

> Julius := proc( plain::string, shift::integer)
 local nums,crypt, i;
 global Alphabet;
 nums := StringToList(plain);
 crypt := ListToString(   [ seq(nums[i] + shift, i=1..nops(nums)) ] );
 return(crypt);
end:
 

> Julius("hide me.  Please, I'm SCARED!", 1);
 

ijef?nf??Qmfbtf (27)
 

> Julius(%, -1);
 

hide me  Please, I'm SCARED! (28)
 

> Julius("hide me.  Please, I'm SCARED!", 75);
 

>,'   = (29)
 

> Julius(%, -75);
 

hideeeae (30)
 

> Julius := proc( plain::string, shift::integer)
 local nums,crypt, i;
 global Alphabet;
 nums := StringToList(plain);
 crypt := ListToString(   [ seq(
                              modp(nums[i] + shift -1, length(Alphabet)) +1,
                              i=1..nops(nums)) ] );
 return(crypt);
end:
 

> Julius("hide me.  Please, I'm SCARED!", 75);
 

>,' &b -&&Ea =h _&x^b&HrpGtsZ (31)
 

> Julius(%, -75);
 

hide me.  Please, I'm SCARED! (32)
 

> Alphabet;
 

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+-=;:' ?<>, (33)
 

> Julius(" I have heard the mermaids singing, each to each.
I do not think they will sing to me.", 0);
 

 I have heard the mermaids singing, each to each..I do not think they will sing to me. (34)
 

> SearchText("
",Alphabet);
 

0 (35)
 

> Julius(" I have heard the mermaids singing, each to each.
I do not think they will sing to me.", 1);
 

?J?ibwf?ifbse?uif?nfsnbjet?tjohjoh (36)
 

> StringToList("secret");
 

[19, 5, 3, 18, 5, 20] (37)
 

>