(*********************************************************************** Mathematica-Compatible Notebook This notebook can be used on any computer system with Mathematica 4.0, MathReader 4.0, or any compatible application. The data for the notebook starts with the line containing 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[ 15985, 576]*) (*NotebookOutlinePosition[ 16950, 609]*) (* CellTagsIndexPosition[ 16906, 605]*) (*WindowFrame->Normal*) Notebook[{ Cell["The Josephus Problem", "Title"], Cell["\<\ Paul Wellin Wolfram Research, Inc.\ \>", "Subsubtitle"], Cell["\<\ Flavius Josephus was a Jewish historian during the Roman-Jewish war of the \ first century. Through his writings comes the following macabre story:\ \>", "Text"], Cell["\<\ The Romans had chased a group of 10 Jews into a cave and were about to \ attack. Rather than dying at the hands of their enemy, the group chose to \ commit suicide one by one. Legend has it though, that they decided to go \ around their circle of 10 individuals and eliminate every other person until \ no one was left. Who was the last to die?\ \>", "Text", CellMargins->{{48, 24}, {Inherited, Inherited}}, TextAlignment->Left, TextJustification->0], Cell[CellGroupData[{ Cell["A functional approach", "Section"], Cell["Here is a list of 10 individuals:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Range[10]\)], "Input"], Cell[BoxData[ \(TraditionalForm\`{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}\)], "Output"] }, Open ]], Cell["First you must skip one,", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(RotateLeft[Range[10], 1]\)], "Input"], Cell[BoxData[ \(TraditionalForm\`{2, 3, 4, 5, 6, 7, 8, 9, 10, 1}\)], "Output"] }, Open ]], Cell["then one must die,", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Rest[RotateLeft[Range[10]]]\)], "Input"], Cell[BoxData[ \(TraditionalForm\`{3, 4, 5, 6, 7, 8, 9, 10, 1}\)], "Output"] }, Open ]], Cell["and repeat until only one person remains:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Nest[Rest[RotateLeft[#1, 1]] &, Range[10], 9]\)], "Input"], Cell[BoxData[ \(TraditionalForm\`{5}\)], "Output"] }, Closed]], Cell["\<\ Here is a listing of the survivors after each round of execution (beginning \ with the original orientation):\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[NestList[Rest[RotateLeft[#1, 1]] &, Range[10], 9]]\)], "Input"], Cell[BoxData[ FormBox[ InterpretationBox[GridBox[{ {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"}, {"3", "4", "5", "6", "7", "8", "9", "10", "1", "\<\"\"\>"}, {"5", "6", "7", "8", "9", "10", "1", "3", "\<\"\"\>", "\<\"\"\>"} , {"7", "8", "9", "10", "1", "3", "5", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>"}, {"9", "10", "1", "3", "5", "7", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>"}, {"1", "3", "5", "7", "9", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>"}, {"5", "7", "9", "1", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>"}, {"9", "1", "5", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>"}, {"5", "9", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>"}, {"5", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>"} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], TableForm[ {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {3, 4, 5, 6, 7, 8, 9, 10, 1}, {5, 6, 7, 8, 9, 10, 1, 3}, {7, 8, 9, 10, 1, 3, 5}, {9, 10, 1, 3, 5, 7}, {1, 3, 5, 7, 9}, {5, 7, 9, 1}, {9, 1, 5}, {5, 9}, {5}}]], TraditionalForm]], "Output"] }, Closed]], Cell[TextData[{ "The following functions generalize this problem by considering groups of ", StyleBox["n", FontSlant->"Italic"], " people, executing every ", StyleBox["m", FontSlant->"Italic"], "-th." }], "Text"], Cell[BoxData[ \(\(Josephus::"\" = "\";\)\)], "Input"], Cell[BoxData[ \(\(JosephusList::"\" = "\";\)\)], "Input"], Cell[BoxData[ \(Josephus[n_, m_] := Nest[Drop[RotateLeft[#1, 1], m - 1] &, Range[n], n - 1]\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(Josephus[10, 2]\)], "Input"], Cell[BoxData[ \(TraditionalForm\`{5}\)], "Output"] }, Closed]], Cell[BoxData[ \(JosephusList[n_, m_] := TableForm[NestList[Drop[RotateLeft[#1, 1], m - 1] &, Range[n], n - 1]] \)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(JosephusList[10, 2]\)], "Input"], Cell[BoxData[ FormBox[ InterpretationBox[GridBox[{ {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"}, {"3", "4", "5", "6", "7", "8", "9", "10", "1", "\<\"\"\>"}, {"5", "6", "7", "8", "9", "10", "1", "3", "\<\"\"\>", "\<\"\"\>"} , {"7", "8", "9", "10", "1", "3", "5", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>"}, {"9", "10", "1", "3", "5", "7", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>"}, {"1", "3", "5", "7", "9", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>"}, {"5", "7", "9", "1", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>"}, {"9", "1", "5", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>"}, {"5", "9", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>"}, {"5", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>", "\<\"\"\>"} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], TableForm[ {{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {3, 4, 5, 6, 7, 8, 9, 10, 1}, {5, 6, 7, 8, 9, 10, 1, 3}, {7, 8, 9, 10, 1, 3, 5}, {9, 10, 1, 3, 5, 7}, {1, 3, 5, 7, 9}, {5, 7, 9, 1}, {9, 1, 5}, {5, 9}, {5}}]], TraditionalForm]], "Output"] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell["A recurrence relation", "Section"], Cell[TextData[{ "If you start out with an even number of people, after the first round of \ deaths, only odd-numbered people will remain. Then the next to go will be \ person number 3, then 7, and so on. But now this is just like the original \ group of ", StyleBox["n", FontSlant->"Italic"], ", except that each persons' number has been doubled and then decreased by \ 1." }], "Text"], Cell[TextData[{ "In the case of an odd number of people, person number 1 is to die \ immediately after the ", StyleBox["n", FontSlant->"Italic"], "th. A bit of thought should convince you that the following recurrence \ defines the Josephus function for ", StyleBox["n", FontSlant->"Italic"], " people, assuming that every second person is eliminated." }], "Text"], Cell[BoxData[{ \(\(J[1] = 1;\)\), "\[IndentingNewLine]", \(J[n_?EvenQ] := 2 J[n\/2] - 1 /; n \[GreaterEqual] 1\), "\[IndentingNewLine]", \(J[n_?OddQ] := 2 J[\(n - 1\)\/2] + 1 /; n \[GreaterEqual] 1\)}], "Input"], Cell[TextData[{ "Here now is a table containing ", "n", " and the Josephus number of ", "n", ", 1 \[LessEqual] ", "n", " \[LessEqual] 10:" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(TableForm[Table[{i, J[i]}, {i, 1, 10}]]\)], "Input"], Cell[BoxData[ FormBox[ TagBox[GridBox[{ {"1", "1"}, {"2", "1"}, {"3", "3"}, {"4", "1"}, {"5", "3"}, {"6", "5"}, {"7", "7"}, {"8", "1"}, {"9", "3"}, {"10", "5"} }, RowSpacings->1, ColumnSpacings->3, RowAlignments->Baseline, ColumnAlignments->{Left}], (TableForm[ #]&)], TraditionalForm]], "Output"] }, Closed]], Cell[TextData[{ "This is a very efficient recurrence because it reduces ", StyleBox["n", FontSlant->"Italic"], " by a factor of 2 each time through. Note how quick it is in computing ", Cell[BoxData[ \(TraditionalForm\`\(J[10\^9\)\)]], "] (how are you going to get a billion people to line up anyway especially \ for such an unpleasant experience?):" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Timing[J[10\^9]]\)], "Input"], Cell[BoxData[ \(TraditionalForm\`{0.010000000000000009`\ Second, 926258177}\)], "Output"] }, Closed]], Cell["Looks like the 926,258,177th person will survive.", "Text"] }, Open ]], Cell[CellGroupData[{ Cell["A closed form", "Section"], Cell["\<\ A cursory look at a table of the Josephus numbers will convince you that \ powers of 2 are somehow involved. See if you can use the following closed \ form of the Josephus function to figure out how powers of 2 are lurking \ behind the scenes.\ \>", "Text"], Cell[TextData[{ "Hint: Consider any number ", Cell[BoxData[ \(TraditionalForm\`n\)]], " in the form ", Cell[BoxData[ \(TraditionalForm\`n = 2 + q\)]], " where 2 is the largest power of 2 less than or equal to ", StyleBox["n", FontSlant->"Italic"], ", and ", StyleBox["q", FontSlant->"Italic", CharacterEncoding->Automatic], " is what's left over." }], "Text"], Cell[BoxData[ \(f[n_] := n - 2\^Floor[N[Log[2, n]]]\)], "Input"], Cell[BoxData[ \(f[15]\)], "Input"], Cell[BoxData[ \(J2[n_] := 2\ f[n] + 1\)], "Input"], Cell[BoxData[ \(J2[10\^9]\)], "Input"], Cell[BoxData[ \(Transpose[Table[{n, J2[n]}, {n, 1, 10}]]\)], "Input"] }, Open ]], Cell[CellGroupData[{ Cell["Cyclic shifts", "Section"], Cell["The Josephus number of 100 is 73.", "Text"], Cell[BoxData[ \(Josephus[100, 2]\)], "Input"], Cell["First put 100 in base 2", "Text"], Cell[BoxData[ \(BaseForm[100, 2]\)], "Input"], Cell["and then get a list of its digits:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(IntegerDigits[100, 2]\)], "Input"], Cell[BoxData[ \({1, 1, 0, 0, 1, 0, 0}\)], "Output"] }, Closed]], Cell["Do a binary shift of one unit", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(l = RotateLeft[IntegerDigits[100, 2], 1]\)], "Input"], Cell[BoxData[ \({1, 0, 0, 1, 0, 0, 1}\)], "Output"] }, Closed]], Cell["and convert back from base 2 to base 10:", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(r = Reverse[l]\)], "Input"], Cell[BoxData[ \({1, 0, 0, 1, 0, 0, 1}\)], "Output"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(Dot[r, 2\^Range[0, Length[r] - 1]]\)], "Input"], Cell[BoxData[ \(73\)], "Output"] }, Closed]], Cell[BoxData[ \(Josephus3[n_] := Module[{p}, p = Reverse[RotateLeft[IntegerDigits[n, 2], 1]]; \n\t\t Dot[p, 2\^Range[0, Length[p] - 1]]]\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(Timing[Josephus3[10\^9]]\)], "Input"], Cell[BoxData[ \({0.`\ Second, 926258177}\)], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Functional programming the binary shift", "Section"], Cell[TextData[{ "Here is the ultimate functional approach to a binary shift. If you look \ carefully, you will see Horner's method for multiplying polynomials lurking \ behind the scenes. ", StyleBox["Fold", FontWeight->"Bold"], " is a nice little function!" }], "Text"], Cell[BoxData[ \(Josephus4[n_Integer] := Fold[2\ #1 + #2 &, 0, RotateLeft[IntegerDigits[n, 2], 1]]\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(Timing[Josephus4[10\^9]]\)], "Input"], Cell[BoxData[ \(TraditionalForm\`{0.`\ Second, 926258177}\)], "Output"] }, Closed]], Cell["\<\ (Thanks to Paul Abbott, Richard Gaylord, Jerry Keiper, Shawn Sheridan, and \ Stephen Wolfram for their help with this last functional approach.)\ \>", "Text"], Cell[CellGroupData[{ Cell["Horner's method and the Fold function", "Subsection"], Cell[TextData[{ "If you are wondering what exactly the ", StyleBox["Fold", FontWeight->"Bold"], " function does, consider the following:" }], "Text"], Cell[BoxData[ \(Horner[list_List, base_: 2] := Fold[base\ #1 + #2&, 0, list]\)], "Input"], Cell["\<\ This implements Horner's method for fast polynomial multiplication. Here is \ a fourth-order polynomial:\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Horner[{a, b, c, d, e}, x]\)], "Input"], Cell[BoxData[ \(e + x\ \((d + x\ \((c + x\ \((b + a\ x)\))\))\)\)], "Output"] }, Closed]], Cell["\<\ Note there are 4 multiplies and 4 adds. Compare this with evaluating a \ polynomial in the usual fashion:\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(FullForm[a\ x\^4 + b\ x\^3 + c\ x\^2 + d\ x + e]\)], "Input"], Cell[BoxData[ TagBox[ StyleBox[ \(Plus[e, Times[d, x], Times[c, Power[x, 2]], Times[b, Power[x, 3]], Times[a, Power[x, 4]]]\), ShowSpecialCharacters->False, ShowStringCharacters->True], FullForm]], "Output"] }, Closed]], Cell[TextData[{ "Assuming for the moment that ", StyleBox["Mathematica", FontSlant->"Italic"], " doesn't implement Horner's rule for the ", StyleBox["Power", FontWeight->"Bold"], " function, you should count 10 multiplies and 4 adds. In fact the number \ of multiplies for an nth degree polynomial evaluated in this manner is given \ by" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Binomial[n + 1, 2]\)], "Input"], Cell[BoxData[ \(1\/2\ n\ \((1 + n)\)\)], "Output"] }, Closed]], Cell["\<\ This grows quadratically compared to the strictly linear growth using \ Horner's rule.\ \>", "Text"] }, Open ]] }, Open ]] }, FrontEndVersion->"4.0 for Microsoft Windows", ScreenRectangle->{{0, 1024}, {0, 695}}, ScreenStyleEnvironment->"Presentation", WindowToolbars->{}, WindowSize->{1016, 668}, WindowMargins->{{0, Automatic}, {Automatic, 0}}, PrivateNotebookOptions->{"ColorPalette"->{RGBColor, 128}}, ShowCellLabel->True, ShowCellTags->False, RenderingOptions->{"ObjectDithering"->True, "RasterDithering"->False}, CharacterEncoding->Automatic, Magnification->1, StyleDefinitions -> "Demo.nb" ] (*********************************************************************** 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[1717, 49, 37, 0, 111, "Title"], Cell[1757, 51, 65, 3, 96, "Subsubtitle"], Cell[1825, 56, 172, 3, 45, "Text"], Cell[2000, 61, 469, 9, 95, "Text"], Cell[CellGroupData[{ Cell[2494, 74, 40, 0, 77, "Section"], Cell[2537, 76, 49, 0, 45, "Text"], Cell[CellGroupData[{ Cell[2611, 80, 42, 1, 54, "Input"], Cell[2656, 83, 82, 1, 55, "Output"] }, Open ]], Cell[2753, 87, 40, 0, 45, "Text"], Cell[CellGroupData[{ Cell[2818, 91, 57, 1, 54, "Input"], Cell[2878, 94, 82, 1, 55, "Output"] }, Open ]], Cell[2975, 98, 34, 0, 45, "Text"], Cell[CellGroupData[{ Cell[3034, 102, 60, 1, 54, "Input"], Cell[3097, 105, 79, 1, 55, "Output"] }, Open ]], Cell[3191, 109, 57, 0, 45, "Text"], Cell[CellGroupData[{ Cell[3273, 113, 78, 1, 54, "Input"], Cell[3354, 116, 54, 1, 55, "Output"] }, Closed]], Cell[3423, 120, 133, 3, 39, "Text"], Cell[CellGroupData[{ Cell[3581, 127, 93, 1, 54, "Input"], Cell[3677, 130, 1665, 38, 256, "Output"] }, Closed]], Cell[5357, 171, 233, 9, 39, "Text"], Cell[5593, 182, 319, 5, 146, "Input"], Cell[5915, 189, 344, 5, 146, "Input"], Cell[6262, 196, 115, 2, 54, "Input"], Cell[CellGroupData[{ Cell[6402, 202, 48, 1, 54, "Input"], Cell[6453, 205, 54, 1, 55, "Output"] }, Closed]], Cell[6522, 209, 143, 3, 71, "Input"], Cell[CellGroupData[{ Cell[6690, 216, 52, 1, 54, "Input"], Cell[6745, 219, 1665, 38, 256, "Output"] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell[8459, 263, 40, 0, 77, "Section"], Cell[8502, 265, 397, 9, 70, "Text"], Cell[8902, 276, 383, 10, 70, "Text"], Cell[9288, 288, 230, 4, 130, "Input"], Cell[9521, 294, 165, 8, 45, "Text"], Cell[CellGroupData[{ Cell[9711, 306, 72, 1, 54, "Input"], Cell[9786, 309, 487, 18, 256, "Output"] }, Closed]], Cell[10288, 330, 383, 9, 64, "Text"], Cell[CellGroupData[{ Cell[10696, 343, 49, 1, 56, "Input"], Cell[10748, 346, 93, 1, 55, "Output"] }, Closed]], Cell[10856, 350, 65, 0, 39, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[10958, 355, 32, 0, 77, "Section"], Cell[10993, 357, 268, 5, 70, "Text"], Cell[11264, 364, 402, 15, 45, "Text"], Cell[11669, 381, 68, 1, 56, "Input"], Cell[11740, 384, 38, 1, 54, "Input"], Cell[11781, 387, 54, 1, 54, "Input"], Cell[11838, 390, 42, 1, 56, "Input"], Cell[11883, 393, 73, 1, 54, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[11993, 399, 32, 0, 77, "Section"], Cell[12028, 401, 49, 0, 45, "Text"], Cell[12080, 403, 49, 1, 54, "Input"], Cell[12132, 406, 39, 0, 45, "Text"], Cell[12174, 408, 49, 1, 54, "Input"], Cell[12226, 411, 50, 0, 45, "Text"], Cell[CellGroupData[{ Cell[12301, 415, 54, 1, 54, "Input"], Cell[12358, 418, 55, 1, 54, "Output"] }, Closed]], Cell[12428, 422, 45, 0, 39, "Text"], Cell[CellGroupData[{ Cell[12498, 426, 73, 1, 54, "Input"], Cell[12574, 429, 55, 1, 54, "Output"] }, Closed]], Cell[12644, 433, 56, 0, 39, "Text"], Cell[CellGroupData[{ Cell[12725, 437, 47, 1, 54, "Input"], Cell[12775, 440, 55, 1, 54, "Output"] }, Closed]], Cell[CellGroupData[{ Cell[12867, 446, 67, 1, 50, "Input"], Cell[12937, 449, 36, 1, 54, "Output"] }, Closed]], Cell[12988, 453, 168, 3, 72, "Input"], Cell[CellGroupData[{ Cell[13181, 460, 57, 1, 56, "Input"], Cell[13241, 463, 58, 1, 54, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[13348, 470, 58, 0, 77, "Section"], Cell[13409, 472, 282, 7, 70, "Text"], Cell[13694, 481, 121, 2, 54, "Input"], Cell[CellGroupData[{ Cell[13840, 487, 57, 1, 56, "Input"], Cell[13900, 490, 75, 1, 55, "Output"] }, Closed]], Cell[13990, 494, 168, 3, 39, "Text"], Cell[CellGroupData[{ Cell[14183, 501, 59, 0, 69, "Subsection"], Cell[14245, 503, 159, 5, 45, "Text"], Cell[14407, 510, 97, 2, 54, "Input"], Cell[14507, 514, 129, 3, 45, "Text"], Cell[CellGroupData[{ Cell[14661, 521, 59, 1, 54, "Input"], Cell[14723, 524, 81, 1, 54, "Output"] }, Closed]], Cell[14819, 528, 130, 3, 39, "Text"], Cell[CellGroupData[{ Cell[14974, 535, 81, 1, 56, "Input"], Cell[15058, 538, 258, 7, 77, "Output"] }, Closed]], Cell[15331, 548, 368, 10, 64, "Text"], Cell[CellGroupData[{ Cell[15724, 562, 51, 1, 54, "Input"], Cell[15778, 565, 54, 1, 70, "Output"] }, Closed]], Cell[15847, 569, 110, 3, 39, "Text"] }, Open ]] }, Open ]] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)