{VERSION 2 3 "SGI IRIS UNIX" "2.3" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 }{CSTYLE "2D Output" 2 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 256 "times" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }{CSTYLE "" -1 257 "courier" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Text Output" -1 2 1 {CSTYLE "" -1 -1 "Courier " 1 10 0 0 255 1 0 0 0 0 0 1 3 0 0 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "Warning" 2 7 1 {CSTYLE "" -1 -1 "" 0 1 0 0 255 1 0 0 0 0 0 0 1 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Maple Output" 0 11 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 3 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 11 12 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {EXCHG {PARA 0 "" 0 "" {TEXT -1 232 "( Oops. I realized I neg lected to save my worksheet from class on 3-03-98. So, I will attemp t to recreate it here. Note that, as usual, there will be no running \+ commentary, so you can just pretend that it is the REAL worksheet)." } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "convert(`Hi`,bytes);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#7$\"#s\"$0\"" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "convert([66, 121, 101],bytes);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%$ByeG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 33 "convert([seq(i,i=1..255)],bytes);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6# %jz|\"|#|$|%|&|'|(|)|*|+|,|-|.|/|0|1|2|3|4|5|6|7|8|9|:|;|<|=|>|?|@~!\" #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefg hijklmnopqrstuvwxyz|fr|gr|hr|ir|jr|[s|\\s|]s|^s|_s|`s|as|bs|cs|ds|es|f s|gs|hs|is|js|[t|\\t|]t|^t|_t|`t|at|bt|ct|dt|et|ft|gt|ht|it|jt|[u|\\u| ]u|^u|_u|`u|au|bu|cu|du|eu|fu|gu|hu|iu|ju|[v|\\v|]v|^v|_v|`v|av|bv|cv| dv|ev|fv|gv|hv|iv|jv|[w|\\w|]w|^w|_w|`w|aw|bw|cw|dw|ew|fw|gw|hw|iw|jw| [x|\\x|]x|^x|_x|`x|ax|bx|cx|dx|ex|fx|gx|hx|ix|jx|[y|\\y|]y|^y|_y|`y|ay |by|cy|dy|ey|fy|gy|hy|iy|jy|[z|\\z|]z|^z|_z|`z|az|bz|cz|dz|ez|fz|gz|hz |iz|jzG" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 87 "Using this, we can sta rt to write a little function to do a Caesar, or shift, cipher. " }} {PARA 0 "" 0 "" {TEXT 256 106 "But first, we have to figure out how we can \"add 5\" to every element in a list of numbers. We can use the \+ " }{TEXT 257 5 " map " }{TEXT -1 20 "function to do that:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "map(sqrt,[0,1,2,3,4,5]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7(\"\"!\"\"\"*$\"\"##F%F'*$\"\"$F(F'*$\"\"&F (" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "map(x->x^2+2, [0,1,2,3 ,4,5]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7(\"\"#\"\"$\"\"'\"#6\"#=\" #F" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 57 "Now we're ready. Read this function from the middle out:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 127 "Encode:= plain -> \n convert(map(x->(x+4) mod 255 + 1,\n \+ convert(plain,bytes)),\n bytes); \+ " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%'EncodeG:6#%&plainG6\"6$%)operat orG%&arrowGF(-%(convertG6$-%$mapG6$:6#%\"xGF(F)F(,&-%$modG6$,&9$\"\"\" \"\"%F;\"$b#F;F;F;F(F(-F-6$F:%&bytesGF@F(F(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "Encode(`Hi`);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#% #MnG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 60 "Encode(`Who put the benzedrine in Mrs. Murphy's Ovaltine?`);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%R\\mt%uzy%ymj%gjs|jrjiwnsj%ns%Rwx3%Rzwum|ir,x%T|frfqyn sjDG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 115 "Encode148:= plain \+ -> \n convert(map(x->(x+147) mod 255 + 1,\n convert(plai n,bytes)),\n bytes); " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 98 "E ncode148(`The quick brown fox jumped over the lazy dog, and then got e aten by the hungry lion.`);" }}{PARA 11 "" 0 "" {TEXT -1 0 "" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%*Encode148G:6#%&plainG6\"6$%)operatorG%&ar rowGF(-%(convertG6$-%$mapG6$:6#%\"xGF(F)F(,&-%$modG6$,&9$\"\"\"\"$Z\"F ;\"$b#F;F;F;F(F(-F-6$F:%&bytesGF@F(F(" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#%_p|cy|gz|dz|_v|'|+|hz|bz|jz|_v|az|(|%|-|$|_v|ez|%|.|_v|iz|+|#|&|dz |cz|_v|%|,|dz|(|_v|*|gz|dz|_v|\"|`z|0|/|_v|cz|%|fz|[w|_v|`z|$|cz|_v|*| gz|dz|$|_v|fz|%|*|_v|dz|`z|*|dz|$|_v|az|/|_v|*|gz|dz|_v|gz|+|$|fz|(|/| _v|\"|hz|%|$|]wG" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 " " 0 "" {TEXT -1 90 "This is not fully satifactory. Now we diverge int o a discussion about writing procedures." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "sqr := x -> sqrt(x);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%$sqrG%%sqrtG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "sqr(25) ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"&" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 32 "sqr2 := proc(x)\n sqrt(x);\nend;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%%sqr2G:6#%\"xG6\"F(F(-%%sqrtG6#9$F(F(" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "sqr2(25);" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#\"\"&" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "s qr2(-25);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#,$%\"IG\"\"&" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 122 "sqr3 := proc(x)\n if (x >= 0) the n\n sqrt(x);\n else\n print(`Square root of `,x,`is not a rea l number`);\n fi;\nend;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%%sqr3G:6 #%\"xG6\"F(F(@%1\"\"!9$-%%sqrtG6#F,-%&printG6%%0Square~root~of~GF,%5is ~not~a~real~numberGF(F(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 " sqr3(-25);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6%%0Square~root~of~G!#D%5i s~not~a~real~numberG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "sqr3 (25);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"\"&" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 77 "try:= proc(x)\n y := x^2;\n if ( y>5) then\n 25;\n else\n y;\n fi;\nend;" }}{PARA 7 "" 1 "" {TEXT -1 41 "Warning, `y` is implicitly declared local" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%$tryG:6#%\"xG6#%\"yG6\"F*C$>8$*$9$\"\"#@%2\"\"&F-\"#D F-F*F*" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 6 "y:=35;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"yG\"#N" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "try(19);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"#D" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 2 "y;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"#N" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 91 "try2 := proc(x)\n global y;\n\n y := x^2;\n if ( y>5) then\n 25;\n \+ else\n y;\n fi;\nend;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%%try2G :6#%\"xG6\"F(F(C$>%\"yG*$9$\"\"#@%2\"\"&F+\"#DF+F(6#F+" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 2 "y;" }}{PARA 11 "" 1 "" {XPPMATH 20 " 6#\"#N" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "try2(19);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#\"#D" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 2 "y;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"$h$" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{MARK "29 0 0" 0 } {VIEWOPTS 1 1 0 3 2 1804 }