{VERSION 2 3 "SUN SPARC SOLARIS" "2.3" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 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 "Heading 1" 0 3 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 }1 0 0 0 6 6 0 0 0 0 0 0 -1 0 }} {SECT 0 {SECT 0 {PARA 3 "" 0 "" {TEXT -1 15 "Permute arrays:" }}{PARA 0 "" 0 "" {TEXT -1 165 "Usage: permute(array1, array2, n) \n This fun ction reorders n elements of array1 into array2. If n\n is the leng th of the array, all the elements are reordered...." }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 456 "permute := proc(index,newindex,n)\nlocal m ,i,j,k,len,tmp;\nm := 1;\nlen := n;\n# save a copy of original array\n tmp := array(1..n);\nfor i from 1 to n do\n tmp[i] := index[i];\nod; \nwhile m < n+1 do\n j := rand(1..len):\n k := j();\n newindex[m] : = index[k]:\n for i from k+1 to len do\n index[i-1] := index[i];\n od;\n len := len-1:\n m := m+1:\nod:\n# restore original array\nfo r i from 1 to n do\n index[i] := tmp[i];\nod;\nprint( `reordered `.n. ` elements`);\nend:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 14 "Define arrays:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "len := 10:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "index := array(1..len):\nnewindex := array(1..len):" }}}}{SECT 0 {PARA 3 "" 0 "" {TEXT -1 18 "Initialize arrays:" }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 59 "for i from 1 to len do\n index[i] \+ := i;\n newindex[i] := i;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "od:" } }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "permute(index,newindex,le n);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 51 "print(`index=`,index );\nprint(`newindex=`,newindex);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}}{MARK "5 0 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 }