(*********************************************************************** Mathematica-Compatible Notebook This notebook can be used on any computer system with Mathematica 3.0, MathReader 3.0, or any compatible application. The data for the notebook starts with the line of stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. ***********************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 28751, 1022]*) (*NotebookOutlinePosition[ 29644, 1051]*) (* CellTagsIndexPosition[ 29600, 1047]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell[TextData[{ StyleBox["Mathematica", FontSlant->"Italic"], " Pearls:\nProblems and Solutions\n" }], "Title", CellMargins->{{Inherited, 109}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], Cell["\<\ Edited by Donald T. Piele\t \ Volume 6, No. 1\ \>", "Text", CellMargins->{{Inherited, 109}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ "Welcome back to ", StyleBox["Mathematica", FontSlant->"Italic"], " Pearls, the column devoted to examining those small bytes of polished ", StyleBox["Mathematica", FontSlant->"Italic"], " code that are smooth, tightly packed, and insanely swift. They are not \ easy to find, yet there are thousands of them waiting to be uncovered. \ However, you won't just pick them up off the beach. You'll need to dig a \ little deeper and crack a few tough shells. But WOW, the result can be a gem \ of regal beauty.\n\nHave you got a ", StyleBox["Mathematica", FontSlant->"Italic"], " Pearl burried deep in your files? I invite you\nto share them in this \ column and add them to our string. If you have the goods, then \"Show me the \ pearls!\"\n\nHere's a problem whose solution should yield many gems.\n" }], "Text", CellMargins->{{Inherited, 109}, {Inherited, Inherited}}, Evaluatable->False, AspectRatioFixed->True], Cell[CellGroupData[{ Cell["Factorial Prime Decomposition", "Subsubtitle"], Cell["As we all have experienced, factorials grow very rapidly.", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\({\(5!\), \(10!\), \(20!\)}\n\)\)], "Input"], Cell[BoxData[ \({120, 3628800, 2432902008176640000}\)], "Output"] }, Open ]], Cell[TextData[{ "One way of specifying such large numbers is by computing the number of \ times each prime\nnumber occurs as a factor. In this way 20! could be \ specified as {18,8,4,2,1,1,1,1} from the\nprime decomposition 20! = ", Cell[BoxData[ \(TraditionalForm \`\(2\^18\) \(3\^8\) \(5\^4\) \(7\^2\) 11\ 13\ 17\ 19.\)]], " Notice that for factorials, all primes \nup to the largest prime factor \ are present in the decomposition. In addition, the sequence of multiples \n\ is non-increasing.\n\nWith the built-in function,", StyleBox[" FactorInteger", FontWeight->"Bold"], ", this prime decompositon is very easy to achieve.\n" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Last[Transpose[FactorInteger[\(20!\)]]]\)], "Input"], Cell[BoxData[ \({18, 8, 4, 2, 1, 1, 1, 1}\)], "Output"] }, Open ]], Cell[TextData[{ "The ", StyleBox["FactorInteger", FontWeight->"Bold"], " function is amazingly fast." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Last[Transpose[FactorInteger[\(200!\)]]] // Timing\)], "Input"], Cell[BoxData[ \({0.0333333333333030168`\ Second, {197, 97, 49, 32, 19, 16, 11, 10, 8, 6, 6, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}}\)], "Output"] }, Open ]], Cell["\<\ But for large N, N>1000, it slows down considerably and can be \ easily beat by building a special function to do the job for factorials. Now it's your turn to find a pearl. \ \>", "Text"], Cell[CellGroupData[{ Cell["factorialPrimeDecomposition[n]", "Subsection"], Cell[TextData[{ "Create a function ", StyleBox["factorialPrimeDecomposition[n]", FontWeight->"Bold"], ", that will generate the prime decomposition for\nn! as illustrated \ above. Speed counts, so time your solution for n=5000 and compare it with\n\ the time for FactorInteger[n!]. A good solution will have more than a \ 10-fold speed increase. Like many good\npearls, it can also be written as a \ one-liner. " }], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(\(Last[Transpose[FactorInteger[\(5000!\)]]]; \) // Timing\) // First \), \(\(a = %; \)\)}], "Input"], Cell[BoxData[ \(37.5`\ Second\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[{ \(\(\(factorialPrimeDecomposition[5000]; \) // Timing\) // First\), \(\(b = %; \)\)}], "Input"], Cell[BoxData[ \(2.31666666666660603`\ Second\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(improvementFactor = a/b\)], "Input"], Cell[BoxData[ \(16.1870503597126536`\)], "Output"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Making Change", "Subsubtitle"], Cell["In the last issue, I posed the following problem.", "Text"], Cell["\<\ Write a function that will compute how many ways any amount of \ money X.Y (with X dollars, and Y cents) can be represented using any \ combination of US coins and bills up to the 100 dollar bill. The \ denominations are: penny, nickel, dime, quarter, half dollar, dollar, 2 \ dollar, 5 dollar, 10 dollar, 20 dollar, 50 dollar, 100 dollar.\ \>", "Text"], Cell[TextData[{ "One solution is based on writing a simple recursion relationship. Suppose \ ", StyleBox["W[m,n]", FontWeight->"Bold"], " is the number of ways that you can make make change for ", StyleBox["n", FontSlant->"Italic"], " cents using the first ", StyleBox["m", FontSlant->"Italic"], " coins in the list of demoninations ", StyleBox["d", FontWeight->"Bold"], " (expressed as cents). " }], "Text"], Cell[BoxData[ \(\(d = {1, 5, 10, 25, 50, 100, 200, 500, 1000, 2000, 5000, 10000}; \)\)], "Input"], Cell[TextData[{ "The key recursion relationship is discovered by working through one \ example. ", StyleBox["W[4,100]", FontWeight->"Bold"], " is the number of\nways of making change for 100 cents ($1) with the \ first four coins {penny, nickel, dime, quarter}.\n", StyleBox["W[3,100]", FontWeight->"Bold"], " is the number of ways of making change for 1 dollar with the first three \ coins {penny, nickel,\ndime}. In making change for 1 dollar, you can do it \ by using one quarter, leaving 75 cents which can be changed in ", StyleBox["W[4, 100-25]", FontWeight->"Bold"], " ways, or by not using a quarter and doing it ", StyleBox["W[3,100] ", FontWeight->"Bold"], "ways. The two ways are mutally exclusive. Thus,", StyleBox["W[4,100] = W[3,100] + W[4,75]", FontWeight->"Bold"], " is the key recursion relationship. A similar relationship can be made \ for all the coins. \n\nOf course, you can make change using only pennies in \ only one way, W[1,n]=1. Also,\nW[m,0] means you have no money left, and your \ change is a single coin, which is done in 1 way. Putting this all together, \ we have the following pearl.\n" }], "Text"], Cell[BoxData[{ \(Clear[W]\), \(W[m_, n_] := 0\ \ /; \ n < 0\), \(W[m_, 0] = 1\ ; \nW[1, n_] = 1; \n W[m_, n_] := \(W[m, n] = W[m - 1, n] + W[m, n - d[\([m]\)]]\)\)}], "Input"], Cell["\<\ Here is a table for the number ways of making change with all 12 \ coins in amounts up to $50.\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(sol = Table[{n, W[12, n]}, {n, 100, 2000, 100}]\)], "Input"], Cell[BoxData[ \({{100, 293}, {200, 2729}, {300, 12611}, {400, 41564}, {500, 111023}, { 600, 256995}, {700, 536419}, {800, 1035126}, {900, 1877399}, {1000, 3237135}, {1100, 5351181}, {1200, 8536242}, {1300, 13208613}, {1400, 19907487}, {1500, 29321089}, {1600, 42316960}, {1700, 59977037}, { 1800, 83637533}, {1900, 114933617}, {2000, 155848898}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(ListPlot[sol, PlotJoined -> True, \n \t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PlotLabel -> "\"\ , \ \n \t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Frame -> True]\)], "Input"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .61803 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.00047619 0.0147151 3.77676e-09 [ [.02381 -0.0125 -3 -9 ] [.02381 -0.0125 3 0 ] [.2619 -0.0125 -9 -9 ] [.2619 -0.0125 9 0 ] [.5 -0.0125 -12 -9 ] [.5 -0.0125 12 0 ] [.7381 -0.0125 -12 -9 ] [.7381 -0.0125 12 0 ] [.97619 -0.0125 -12 -9 ] [.97619 -0.0125 12 0 ] [ 0 0 -0.125 0 ] [-0.0125 .01472 -6 -4.5 ] [-0.0125 .01472 0 4.5 ] [-0.0125 .10913 -40.5 -6.25 ] [-0.0125 .10913 0 6.25 ] [-0.0125 .20355 -28.5 -6.25 ] [-0.0125 .20355 0 6.25 ] [-0.0125 .29797 -40.5 -6.25 ] [-0.0125 .29797 0 6.25 ] [-0.0125 .39239 -28.5 -6.25 ] [-0.0125 .39239 0 6.25 ] [-0.0125 .48681 -46.5 -6.25 ] [-0.0125 .48681 0 6.25 ] [-0.0125 .58123 -40.5 -6.25 ] [-0.0125 .58123 0 6.25 ] [ 0 0 -0.125 0 ] [ 0 .61803 .125 0 ] [ 1 0 .125 0 ] [.5 .63053 -41 0 ] [.5 .63053 41 14 ] [ 0 0 0 0 ] [ 1 .61803 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 g .25 Mabswid [ ] 0 setdash .02381 0 m .02381 .00625 L s [(0)] .02381 -0.0125 0 1 Mshowa .2619 0 m .2619 .00625 L s [(500)] .2619 -0.0125 0 1 Mshowa .5 0 m .5 .00625 L s [(1000)] .5 -0.0125 0 1 Mshowa .7381 0 m .7381 .00625 L s [(1500)] .7381 -0.0125 0 1 Mshowa .97619 0 m .97619 .00625 L s [(2000)] .97619 -0.0125 0 1 Mshowa .125 Mabswid .07143 0 m .07143 .00375 L s .11905 0 m .11905 .00375 L s .16667 0 m .16667 .00375 L s .21429 0 m .21429 .00375 L s .30952 0 m .30952 .00375 L s .35714 0 m .35714 .00375 L s .40476 0 m .40476 .00375 L s .45238 0 m .45238 .00375 L s .54762 0 m .54762 .00375 L s .59524 0 m .59524 .00375 L s .64286 0 m .64286 .00375 L s .69048 0 m .69048 .00375 L s .78571 0 m .78571 .00375 L s .83333 0 m .83333 .00375 L s .88095 0 m .88095 .00375 L s .92857 0 m .92857 .00375 L s .25 Mabswid 0 0 m 1 0 L s 0 .01472 m .00625 .01472 L s [(0)] -0.0125 .01472 1 0 Mshowa 0 .10913 m .00625 .10913 L s gsave -0.0125 .10913 -40.5 -4.25 Mabsadd m 1 1 Mabs scale /Courier findfont 10 scalefont setfont (2.5) show /Math1Mono findfont 10 scalefont setfont (\\264) show /Courier findfont 10 scalefont setfont (10) show 0 5.25 rmoveto /Courier findfont 7.5 scalefont setfont (7) show grestore 0 .20355 m .00625 .20355 L s gsave -0.0125 .20355 -28.5 -4.25 Mabsadd m 1 1 Mabs scale /Courier findfont 10 scalefont setfont (5) show /Math1Mono findfont 10 scalefont setfont (\\264) show /Courier findfont 10 scalefont setfont (10) show 0 5.25 rmoveto /Courier findfont 7.5 scalefont setfont (7) show grestore 0 .29797 m .00625 .29797 L s gsave -0.0125 .29797 -40.5 -4.25 Mabsadd m 1 1 Mabs scale /Courier findfont 10 scalefont setfont (7.5) show /Math1Mono findfont 10 scalefont setfont (\\264) show /Courier findfont 10 scalefont setfont (10) show 0 5.25 rmoveto /Courier findfont 7.5 scalefont setfont (7) show grestore 0 .39239 m .00625 .39239 L s gsave -0.0125 .39239 -28.5 -4.25 Mabsadd m 1 1 Mabs scale /Courier findfont 10 scalefont setfont (1) show /Math1Mono findfont 10 scalefont setfont (\\264) show /Courier findfont 10 scalefont setfont (10) show 0 5.25 rmoveto /Courier findfont 7.5 scalefont setfont (8) show grestore 0 .48681 m .00625 .48681 L s gsave -0.0125 .48681 -46.5 -4.25 Mabsadd m 1 1 Mabs scale /Courier findfont 10 scalefont setfont (1.25) show /Math1Mono findfont 10 scalefont setfont (\\264) show /Courier findfont 10 scalefont setfont (10) show 0 5.25 rmoveto /Courier findfont 7.5 scalefont setfont (8) show grestore 0 .58123 m .00625 .58123 L s gsave -0.0125 .58123 -40.5 -4.25 Mabsadd m 1 1 Mabs scale /Courier findfont 10 scalefont setfont (1.5) show /Math1Mono findfont 10 scalefont setfont (\\264) show /Courier findfont 10 scalefont setfont (10) show 0 5.25 rmoveto /Courier findfont 7.5 scalefont setfont (8) show grestore .125 Mabswid 0 .0336 m .00375 .0336 L s 0 .05248 m .00375 .05248 L s 0 .07137 m .00375 .07137 L s 0 .09025 m .00375 .09025 L s 0 .12802 m .00375 .12802 L s 0 .1469 m .00375 .1469 L s 0 .16579 m .00375 .16579 L s 0 .18467 m .00375 .18467 L s 0 .22244 m .00375 .22244 L s 0 .24132 m .00375 .24132 L s 0 .2602 m .00375 .2602 L s 0 .27909 m .00375 .27909 L s 0 .31686 m .00375 .31686 L s 0 .33574 m .00375 .33574 L s 0 .35462 m .00375 .35462 L s 0 .37351 m .00375 .37351 L s 0 .41127 m .00375 .41127 L s 0 .43016 m .00375 .43016 L s 0 .44904 m .00375 .44904 L s 0 .46793 m .00375 .46793 L s 0 .50569 m .00375 .50569 L s 0 .52458 m .00375 .52458 L s 0 .54346 m .00375 .54346 L s 0 .56235 m .00375 .56235 L s 0 .60011 m .00375 .60011 L s .25 Mabswid 0 0 m 0 .61803 L s .02381 .61178 m .02381 .61803 L s .2619 .61178 m .2619 .61803 L s .5 .61178 m .5 .61803 L s .7381 .61178 m .7381 .61803 L s .97619 .61178 m .97619 .61803 L s .125 Mabswid .07143 .61428 m .07143 .61803 L s .11905 .61428 m .11905 .61803 L s .16667 .61428 m .16667 .61803 L s .21429 .61428 m .21429 .61803 L s .30952 .61428 m .30952 .61803 L s .35714 .61428 m .35714 .61803 L s .40476 .61428 m .40476 .61803 L s .45238 .61428 m .45238 .61803 L s .54762 .61428 m .54762 .61803 L s .59524 .61428 m .59524 .61803 L s .64286 .61428 m .64286 .61803 L s .69048 .61428 m .69048 .61803 L s .78571 .61428 m .78571 .61803 L s .83333 .61428 m .83333 .61803 L s .88095 .61428 m .88095 .61803 L s .92857 .61428 m .92857 .61803 L s .25 Mabswid 0 .61803 m 1 .61803 L s .99375 .01472 m 1 .01472 L s .99375 .10913 m 1 .10913 L s .99375 .20355 m 1 .20355 L s .99375 .29797 m 1 .29797 L s .99375 .39239 m 1 .39239 L s .99375 .48681 m 1 .48681 L s .99375 .58123 m 1 .58123 L s .125 Mabswid .99625 .0336 m 1 .0336 L s .99625 .05248 m 1 .05248 L s .99625 .07137 m 1 .07137 L s .99625 .09025 m 1 .09025 L s .99625 .12802 m 1 .12802 L s .99625 .1469 m 1 .1469 L s .99625 .16579 m 1 .16579 L s .99625 .18467 m 1 .18467 L s .99625 .22244 m 1 .22244 L s .99625 .24132 m 1 .24132 L s .99625 .2602 m 1 .2602 L s .99625 .27909 m 1 .27909 L s .99625 .31686 m 1 .31686 L s .99625 .33574 m 1 .33574 L s .99625 .35462 m 1 .35462 L s .99625 .37351 m 1 .37351 L s .99625 .41127 m 1 .41127 L s .99625 .43016 m 1 .43016 L s .99625 .44904 m 1 .44904 L s .99625 .46793 m 1 .46793 L s .99625 .50569 m 1 .50569 L s .99625 .52458 m 1 .52458 L s .99625 .54346 m 1 .54346 L s .99625 .56235 m 1 .56235 L s .99625 .60011 m 1 .60011 L s .25 Mabswid 1 0 m 1 .61803 L s gsave .5 .63053 -102 -4 Mabsadd m 1 1 Mabs scale currentpoint translate 0 22 translate 1 -1 scale 63.000000 15.000000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10.000000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000000 0.000000 0.000000 setrgbcolor 0.000000 0.000000 rmoveto 63.000000 15.000000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10.000000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000000 0.000000 0.000000 setrgbcolor (MAKING) show 105.000000 15.000000 moveto (CHANGE) show 141.000000 15.000000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10.000000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000000 0.000000 0.000000 setrgbcolor 0.000000 0.000000 rmoveto 1.000000 setlinewidth %%DocumentNeededResources: font Courier %%DocumentSuppliedResources: %%DocumentNeededFonts: Courier %%DocumentSuppliedFonts: %%DocumentFonts: font Courier grestore 0 0 m 1 0 L 1 .61803 L 0 .61803 L closepath clip newpath .5 Mabswid .07143 .01472 m .11905 .01473 L .16667 .01476 L .21429 .01487 L .2619 .01513 L .30952 .01569 L .35714 .01674 L .40476 .01862 L .45238 .02181 L .5 .02694 L .54762 .03493 L .59524 .04695 L .64286 .0646 L .69048 .0899 L .7381 .12545 L .78571 .17454 L .83333 .24123 L .88095 .33059 L .92857 .44879 L .97619 .60332 L s % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{288, 177.938}, ImageMargins->{{43, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHggYjN[Vi^OShn03ooeGooj[ooonIgYjN[Vi^OShn03o oclo?ginO[fm_Oclo5D00:X00?l00?l0VOl0I_l0CXf=SLcCXf=SLcII03=VoalO7eiN GYfMWMcLg02Z02@000?o0000 1@0002T000Co003o1002o`h0E?n200;o1`0002T000Co003o10000ol0001Q00_oN0000ol000050000 :@001?l00?l40003o`0006`02?m`0003o`0000D0000Z00;o1@000ol0001d00GoJ`000ol000050000 <@02ogX01OmU00;o1`00034000?o0000OP04of8000?o00001@00034000?o0000PP03oel000?o0000 1@00034000?o0000Q@03oe`000?o00001@0003400_n900?oF002o`L0000a0003o`0008/00omF0003 o`0000D0000a0003o`0008h00omC0003o`0000D0000a0003o`0009400_mA0003o`0000D0000a0003 o`0009<00_m?0003o`0000D0000a00;oUP02od`00_l70000<@000ol0002G0003o`0004X000?o0000 1@00034000?o0000V002odX000?o00001@00034000?o0000VP02odP000?o00001@0003400_nM00;o A@02o`L0000700Co0`02o`<00ol30005o`000?l00P03o`@00_l80003o`0009h000?o0000@`000ol0 0005000020000ol0000300;o1P001ol0003o0?l010000ol000020004o`00o`L000?o0000W`000ol0 00120003o`0000D000090003o`0000X000?o00000P000ol000030003o`00008000Co003o1`000ol0 002P00;o@P000ol0000500002P000ol0000600?o10000ol0o`040003o`00008000Co003o1`02oj<0 00?o0000?P02o`L000070004o`00o`P000?o00000`001Ol0003o00<000?o00000P001?l00?l70003 o`000:<00_lo0003o`0000D0000800;o2@04o`T00_l500;o10001Ol0003o0:L000?o0000?0000ol0 00050000;@001Ol0003o0:P000?o0000>`000ol000050000;@001Ol0003o0:T000?o0000>P000ol0 00050000;P000ol00002ojT000?o0000>002o`L0000/00?o0P000ol0002Y0003o`0003P000?o0000 1@00034000?o0000ZP000ol0000g0003o`0000D0000a0003o`000:/000?o0000=P000ol000050000 <@02ojd000?o0000=002o`L0000a0003o`000:d000?o0000=0000ol000050000<@000ol0002^0003 o`0003<000?o00001@00034000?o0000[`000ol0000b0003o`0000D0000a00;o/@000ol0000`00;o 1`00034000?o0000/@000ol0000`0003o`0000D0000a0003o`000;8000?o0000;`000ol000050000 <@000ol0002b0003o`0002l000?o00001@00034000?o0000/`000ol0000^0003o`0000D0000a00;o ]@000ol0000/00;o1`0001<00ol30005o`000?l00P03o`@00_l80003o`000;@000?o0000;@000ol0 000500005P001ol0003o0?l010000ol000020004o`00o`L000?o0000]@000ol0000/0003o`0000D0 000F0003o`00008000?o00000`000ol000020004o`00o`L000?o0000]P000ol0000[0003o`0000D0 000C00?o10000ol0o`040003o`00008000Co003o1`02okL000?o0000:P02o`L0000C0003o`0000<0 00Go0000o`030003o`00008000Co003o1`000ol0002g0003o`0002X000?o00001@0001<01?l900;o 1@02o`@000Go0000o`2j0003o`0002T000?o00001@0002d000Go0000o`2k0003o`0002P000?o0000 1@0002d000Go0000o`2k0003o`0002P000?o00001@0002h000?o00000_nk0003o`0002H00_l70000 ;003o`8000?o0000^`000ol0000V0003o`0000D0000a0003o`000;/000?o00009P000ol000050000 <@000ol0002l0003o`0002D000?o00001@0003400_nn0003o`0002<00_l70000<@000ol0002m0003 o`0002@000?o00001@00034000?o0000_P000ol0000S0003o`0000D0000a0003o`000;h000?o0000 8`000ol000050000<@02ol0000?o00008@02o`L0000a0003o`000;l000?o00008P000ol000050000 <@000ol000300003o`00024000?o00001@00034000?o0000`0000ol0000Q0003o`0000D0000a0003 o`000<4000?o000080000ol000050000<@02ol8000?o00007`02o`L000080003o`0000<00_l300?o 0`001Ol0003o00800ol400;o20000ol000320003o`0001l000?o00001@0000P000?o00000`02o`H0 00Oo0000o`3o00@000?o00000P001?l00?l70003o`000<<000?o00007P000ol0000500002@000ol0 000:0003o`00008000?o00000`000ol000020004o`00o`L000?o0000``000ol0000N0003o`0000D0 00090003o`0000L00ol40003o`3o00@000?o00000P001?l00?l700;oa@000ol0000L00;o1`0000X0 00?o00001P000ol000030005o`000?l00`000ol000020004o`00o`L000?o0000a0000ol0000M0003 o`0000D0000700Co2004o`T00_l500;o10001Ol0003o00003o`0001<000?o00001@0001<00_l;00;o1@02o`<0 0ol20003o`0000003 o`0000D0000a0003o`000=@000?o00003@000ol000050000<@000ol0003D0003o`0000d000?o0000 1@0003400_oE0003o`0000`00_l7000000@0oooo1002o`<01?l200?o0`001Ol0003o00800ol400;o 20000ol0003E0003o`0000`000?o00001@00008000?o00000`02o`@000?o00001@001ol0003o0?l0 10000ol000020004o`00o`L000?o0000e@000ol0000<0003o`0000D000020003o`0000X000?o0000 10000ol000020003o`0000<000?o00000P001?l00?l70003o`000=D000?o000030000ol000050000 0P000ol0000;0003o`0000?o10000ol0o`040003o`00008000Co003o1`000ol0003F0003o`0000/0 00?o00001@00008000?o000020001?l00?l20003o`0000<000Go0000o`030003o`00008000Co003o 1`02omL000?o00002P02o`L000000`3oo`0;00;o0`04o`T00_l500;o20000ol0003F0003o`0000/0 00?o00001@0002`00ol20003o`000=L000?o00002P000ol000050000;0000ol0o`020003o`000=L0 00?o00002P000ol000050000;@001?l00002omP000?o00002@02o`L0000/0003o`3o008000?o0000 f0000ol000090003o`0000D0000/00?o0P000ol0003H0003o`0000T000?o00001@00034000?o0000 f0000ol000090003o`0000D0000a00;ofP000ol0000700;o1`00034000?o0000f@000ol000080003 o`0000D0000a0003o`000=T000?o000020000ol000050000<@000ol0003J0003o`0000L000?o0000 1@00034000?o0000fP000ol000070003o`0000D0000a00;of`000ol0000600;o1`00034000?o0000 f`000ol000060003o`0000D0000a0003o`000=/000?o00001P000ol000050000<@000ol0003K0003 o`0000H000?o00001@0003400_oM0003o`0000@00_l700001`03o`@00_l300?o0`001Ol0003o0080 0ol400;o20000ol0003L0003o`0000D000?o00001@0000P000?o00000`02o`H000Oo0000o`3o00@0 00?o00000P001?l00?l70003o`000=`000?o00001@000ol00005000020000ol0000;0003o`000080 00?o00000`000ol000020004o`00o`L000?o0000g@000ol000040003o`0000D000080003o`0000P0 0ol40003o`3o00@000?o00000P001?l00?l700;ogP000ol0000300;o1`0000P000?o000020000ol0 00030005o`000?l00`000ol000020004o`00o`L000?o0000g@000ol000040003o`0000D0000700;o 2P04o`T00_l500;o0`03o`8000?o0000gP000ol000030003o`0000D0000/0003o`3o008000?o0000 gP000ol000030003o`0000D0000]0005o`000?l0h0000ol000030003o`0000D0000/0003o`3o0080 0_oP0004o`0000;o1`0002`00ol20003o`000=l000?o00000P000ol000050000<@000ol0003T0003 o`0000D0000a0003o`00008000?o000020000ol000080003o`0000P000?o000020000ol000080003 o`0000P000?o000020000ol000080003o`0000P000?o000020000ol000080003o`0000P000?o0000 20000ol000080003o`0000P000?o000020000ol000080003o`0000P000?o000020000ol000090003 o`00008000?o00001@000340j?l70000o`0Q0000o`0Q0000o`0Q0000o`0Q0000o`0Q0000o`0Q0000 OP001?l00003o`040?oo00;o0P000ol00007o`8000?o00001?l800Co00<0ool00P04o`040?oo00;o 0P000ol00004o`030?oo00?oEP0007h000Wo0000o`3o0?l00`000ol0o`050006o`000?l00_l00`3o 00020003o`0000D000?o000010001?l00?l20003o`3o00<000Ko0?oo0?l30004o`00oeT0001n0006 o`3o0?l00ol300?o1@001_l0003o00;o00<0o`000ol70003o`0000@000Co003o0P03o`<000Oo0?oo 0?l000?o0P000ol0001G0000OP002Ol0o`3o0?l0o`0300;o1P001?l00002o`040?l0o`/000?o0000 1004o`8000?o0?l00`02o`040?l0o`H00omG0000OP02o`030?oo008000?o00000P000ol0o`050004 o`0000;o00@0o`3o0`000ol000050005o`000?l00P001?l00?l30003o`0000800_l0103o0?l30004 o`00oeT0001m00;o0`04o`<00_l00`3oo`0200Oo0P02o`030?oo00;o2004o`030?oo00800_l00`3o o`0300;o0P02o`030?oo00;o00<0ool00omF0000o`0Q0000o`0Q0000o`0Q0000o`0Q0000o`0Q0000 o`0Q0000o`0Q0000\ \>"], ImageRangeCache->{{{0, 287}, {176.938, 0}} -> {-498.784, -2.05678, 9.08653, 1.14567}}], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["Show me the pearls!", "Section"], Cell["\<\ The best way to get my attention is to send your work via email to \ . Little pearls slip nicely into an email message and can zip to me from anywhere. You will get immediate feedback. Accompany your work with an explanation of how it was created. That's it, and thanks.\ \>", "Text"], Cell["\<\ CONTACTING THE EDITOR Don Piele Mathematics Department University of Wisconsin-Parkside Kenosha, WI 53141 piele@cs.uwp.edu\ \>", "Subsubsection"], Cell[CellGroupData[{ Cell["ELECTRONIC SUBSCRIPTIONS", "Subsubsection"], Cell[TextData[{ "Included in the distribution for each electronic subscription is the file \ ", StyleBox["Pearls61.nb", FontFamily->"Courier"], " containing ", StyleBox["Mathematica", FontSlant->"Italic"], " code for the material described in this article." }], "Text"] }, Open ]] }, Open ]] }, Open ]] }, Open ]] }, FrontEndVersion->"Macintosh 3.0", ScreenRectangle->{{0, 640}, {0, 460}}, WindowSize->{620, 441}, WindowMargins->{{4, Automatic}, {Automatic, -3}}, PrintingCopies->1, PrintingPageRange->{1, Automatic}, MacintoshSystemPageSetup->"\<\ 00<0004/0B`000002n08o?mnoh<" ] (*********************************************************************** Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. ***********************************************************************) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[CellGroupData[{ Cell[1731, 51, 226, 7, 174, "Title"], Cell[1960, 60, 252, 6, 30, "Text"], Cell[2215, 68, 964, 20, 209, "Text"], Cell[CellGroupData[{ Cell[3204, 92, 52, 0, 47, "Subsubtitle"], Cell[3259, 94, 73, 0, 30, "Text"], Cell[CellGroupData[{ Cell[3357, 98, 65, 1, 41, "Input"], Cell[3425, 101, 69, 1, 26, "Output"] }, Open ]], Cell[3509, 105, 672, 13, 144, "Text"], Cell[CellGroupData[{ Cell[4206, 122, 72, 1, 26, "Input"], Cell[4281, 125, 59, 1, 26, "Output"] }, Open ]], Cell[4355, 129, 123, 5, 31, "Text"], Cell[CellGroupData[{ Cell[4503, 138, 83, 1, 26, "Input"], Cell[4589, 141, 233, 3, 56, "Output"] }, Open ]], Cell[4837, 147, 199, 5, 78, "Text"], Cell[CellGroupData[{ Cell[5061, 156, 52, 0, 44, "Subsection"], Cell[5116, 158, 437, 9, 79, "Text"], Cell[CellGroupData[{ Cell[5578, 171, 134, 3, 41, "Input"], Cell[5715, 176, 47, 1, 26, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[5799, 182, 119, 2, 41, "Input"], Cell[5921, 186, 62, 1, 26, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[6020, 192, 56, 1, 26, "Input"], Cell[6079, 195, 54, 1, 26, "Output"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[6194, 203, 36, 0, 47, "Subsubtitle"], Cell[6233, 205, 65, 0, 30, "Text"], Cell[6301, 207, 363, 6, 62, "Text"], Cell[6667, 215, 444, 15, 48, "Text"], Cell[7114, 232, 104, 2, 26, "Input"], Cell[7221, 236, 1183, 25, 211, "Text"], Cell[8407, 263, 194, 4, 86, "Input"], Cell[8604, 269, 118, 3, 30, "Text"], Cell[CellGroupData[{ Cell[8747, 276, 80, 1, 26, "Input"], Cell[8830, 279, 397, 5, 86, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[9264, 289, 283, 5, 56, "Input"], Cell[9550, 296, 18099, 678, 186, 7800, 546, "GraphicsData", "PostScript", "Graphics"], Cell[27652, 976, 130, 3, 26, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[27819, 984, 38, 0, 50, "Section"], Cell[27860, 986, 317, 6, 78, "Text"], Cell[28180, 994, 155, 7, 116, "Subsubsection"], Cell[CellGroupData[{ Cell[28360, 1005, 49, 0, 41, "Subsubsection"], Cell[28412, 1007, 287, 9, 47, "Text"] }, Open ]] }, Open ]] }, Open ]] }, Open ]] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)