08-04-29.mw

> restart;
 

> with(StringTools):
 

> Alphabet:=cat(op(select( IsPrintable, [seq( convert([i],bytes), i=1..255)])));
 

 !?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~" align="center" border="0">
 !?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~" align="center" border="0">
 !?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~" align="center" border="0">
(1)
 

> StringToList := proc(text::string)
 global Alphabet;
 return(
  [seq(  SearchText(text[i], Alphabet)   ,i=1..length(text))] );
end:
ListToString := proc( numlist :: list(posint))
 global Alphabet;
 cat( seq( Alphabet[numlist[i]], i=1..nops(numlist) ));
end:
 

>
 

> StringToList("this is a message.");
 

[85, 73, 74, 84, 1, 74, 84, 1, 66, 1, 78, 70, 84, 84, 66, 72, 70, 15] (2)
 

> Alphabet:="abcdefghijklmnopqrstuvwxyz";
 

abcdefghijklmnopqrstuvwxyz (3)
 

> StringToList("hi");
 

[8, 9] (4)
 

> convert(1364,base,10);
 

[4, 6, 3, 1] (5)
 

> convert([4,6,3,1],base,10,8);
 

[4, 2, 5, 2] (6)
 

> 4+2*8+5*8^2+2*8^3;
 

1364 (7)
 

> 84+72*95;
 

6924 (8)
 

> 95*95;
 

9025 (9)
 

> convert([4,6,3,1],base,10,100);
 

[64, 13] (10)
 

> Alphabet:=cat(op(select( IsPrintable, [seq( convert([i],bytes), i=1..255)])));
 

 !?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~" align="center" border="0">
 !?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~" align="center" border="0">
 !?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~" align="center" border="0">
(11)
 

> nums:=StringToList("This is a message.");
 

[53, 73, 74, 84, 1, 74, 84, 1, 66, 1, 78, 70, 84, 84, 66, 72, 70, 15] (12)
 

> nums2:=map(x->x-1,nums);
 

[52, 72, 73, 83, 0, 73, 83, 0, 65, 0, 77, 69, 83, 83, 65, 71, 69, 14] (13)
 

> nums2:=[ seq( nums[i]-1, i=1..nops(nums))];
 

[52, 72, 73, 83, 0, 73, 83, 0, 65, 0, 77, 69, 83, 83, 65, 71, 69, 14] (14)
 

> convert(nums2,base,100,100^2);
 

[7252, 8373, 7300, 83, 65, 6977, 8383, 7165, 1469] (15)
 

> p:=length(Alphabet);
 

95 (16)
 

> convert(nums2,base,p,p^2);
 

[6892, 7958, 6935, 83, 65, 6632, 7968, 6810, 1399] (17)
 

> StringToKgraph := proc (text::string, k::posint)
 local p;
 global Alphabet;

 p:=length(Alphabet);
 convert(  map(x->x-1,StringToList(text)), base, p, p^k);
end:
 

> StringToKgraph("This is a message.", 2);
 

[6892, 7958, 6935, 83, 65, 6632, 7968, 6810, 1399] (18)
 

> StringToKgraph("This is a message.", 3);
 

[665717, 658908, 586708, 630040, 594593, 132976] (19)
 

> KgraphToString := proc(numlist::list(nonnegint), k::posint)
 local p;
 global Alphabet;
 p:=length(Alphabet);
 ListToString(
   map(x->x+1, convert( numlist, base, p^k, p)));
end:
 

> KgraphToString([6892, 7958, 6935, 83, 65, 6632, 7968, 6810, 1399], 2);
 

This is a message. (20)
 

> KgraphToString([6892, 7958, 6935, 83, 65, 6632, 7968, 6810, 1399], 5);
 

Th   is    i   s    a    me   ss   ag   e. (21)
 

> KgraphToString([6892, 7958, 6935, 83, 65, 6632, 7968, 6810, 1399], 3);
 

Th is  i s  a  me ss ag e. (22)
 

>