diff --git a/ipynb/Bike-Stats.ipynb b/ipynb/Bike-Stats.ipynb index a256e20..599402c 100644 --- a/ipynb/Bike-Stats.ipynb +++ b/ipynb/Bike-Stats.ipynb @@ -237,7 +237,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "And here's the same data on a per day basis, assuming I ride 6 days a week:" + "And here's the same data on a per day basis, assuming I ride 6 days a week, 50 weeks a year:" ] }, { @@ -282,132 +282,132 @@ " \n", " \n", " 2023\n", - " 1.7\n", - " 20.2\n", - " 779.2\n", + " 1.8\n", + " 21.1\n", + " 810.3\n", " 11.66\n", " 137.0\n", " 38.0\n", " 0.73\n", - " 32.6\n", - " 237.5\n", + " 33.9\n", + " 247.0\n", " \n", " \n", " \n", " 2022\n", - " 1.7\n", - " 19.3\n", - " 1161.3\n", + " 1.8\n", + " 20.1\n", + " 1207.7\n", " 11.31\n", " 207.0\n", " 60.0\n", " 1.14\n", - " 31.1\n", - " 354.0\n", + " 32.3\n", + " 368.1\n", " \n", " \n", " \n", " 2021\n", " 1.6\n", - " 19.4\n", - " 630.2\n", + " 20.2\n", + " 655.4\n", " 12.36\n", " 122.0\n", " 32.0\n", " 0.61\n", - " 31.3\n", - " 192.1\n", + " 32.5\n", + " 199.8\n", " \n", " \n", " \n", " 2020\n", - " 1.4\n", - " 17.1\n", - " 303.8\n", + " 1.5\n", + " 17.8\n", + " 315.9\n", " 12.17\n", " 66.0\n", " 18.0\n", " 0.34\n", - " 27.5\n", - " 92.6\n", + " 28.6\n", + " 96.3\n", " \n", " \n", " \n", " 2019\n", - " 1.5\n", - " 19.3\n", - " 480.1\n", + " 1.6\n", + " 20.1\n", + " 499.3\n", " 12.63\n", " 96.0\n", " 25.0\n", " 0.47\n", - " 31.0\n", - " 146.3\n", + " 32.3\n", + " 152.2\n", " \n", " \n", " \n", " 2018\n", - " 1.5\n", - " 19.6\n", - " 508.5\n", + " 1.6\n", + " 20.3\n", + " 528.8\n", " 12.82\n", " 102.0\n", " 26.0\n", " 0.49\n", - " 31.5\n", - " 155.0\n", + " 32.7\n", + " 161.2\n", " \n", " \n", " \n", " 2017\n", - " 1.8\n", - " 23.6\n", - " 647.7\n", + " 1.9\n", + " 24.5\n", + " 673.7\n", " 12.97\n", " 109.0\n", " 27.0\n", " 0.52\n", - " 37.9\n", - " 197.4\n", + " 39.5\n", + " 205.3\n", " \n", " \n", " \n", " 2016\n", " 1.6\n", - " 20.3\n", - " 645.7\n", + " 21.1\n", + " 671.5\n", " 13.03\n", " 126.0\n", " 32.0\n", " 0.60\n", - " 32.7\n", - " 196.8\n", + " 34.0\n", + " 204.7\n", " \n", " \n", " \n", " 2015\n", - " 1.3\n", - " 17.5\n", - " 672.6\n", + " 1.4\n", + " 18.2\n", + " 699.5\n", " 12.98\n", " 152.0\n", " 38.0\n", " 0.73\n", - " 28.1\n", - " 205.0\n", + " 29.2\n", + " 213.2\n", " \n", " \n", " \n", " 2014\n", " 0.6\n", - " 7.9\n", - " 379.7\n", + " 8.2\n", + " 394.9\n", " 12.92\n", " 189.0\n", " 48.0\n", " 0.91\n", - " 12.7\n", - " 115.7\n", + " 13.2\n", + " 120.4\n", " \n", " \n", "\n", @@ -415,16 +415,16 @@ ], "text/plain": [ " year hours miles feet mph vam fpmi pct kms meters\n", - " 2023 1.7 20.2 779.2 11.66 137.0 38.0 0.73 32.6 237.5\n", - " 2022 1.7 19.3 1161.3 11.31 207.0 60.0 1.14 31.1 354.0\n", - " 2021 1.6 19.4 630.2 12.36 122.0 32.0 0.61 31.3 192.1\n", - " 2020 1.4 17.1 303.8 12.17 66.0 18.0 0.34 27.5 92.6\n", - " 2019 1.5 19.3 480.1 12.63 96.0 25.0 0.47 31.0 146.3\n", - " 2018 1.5 19.6 508.5 12.82 102.0 26.0 0.49 31.5 155.0\n", - " 2017 1.8 23.6 647.7 12.97 109.0 27.0 0.52 37.9 197.4\n", - " 2016 1.6 20.3 645.7 13.03 126.0 32.0 0.60 32.7 196.8\n", - " 2015 1.3 17.5 672.6 12.98 152.0 38.0 0.73 28.1 205.0\n", - " 2014 0.6 7.9 379.7 12.92 189.0 48.0 0.91 12.7 115.7" + " 2023 1.8 21.1 810.3 11.66 137.0 38.0 0.73 33.9 247.0\n", + " 2022 1.8 20.1 1207.7 11.31 207.0 60.0 1.14 32.3 368.1\n", + " 2021 1.6 20.2 655.4 12.36 122.0 32.0 0.61 32.5 199.8\n", + " 2020 1.5 17.8 315.9 12.17 66.0 18.0 0.34 28.6 96.3\n", + " 2019 1.6 20.1 499.3 12.63 96.0 25.0 0.47 32.3 152.2\n", + " 2018 1.6 20.3 528.8 12.82 102.0 26.0 0.49 32.7 161.2\n", + " 2017 1.9 24.5 673.7 12.97 109.0 27.0 0.52 39.5 205.3\n", + " 2016 1.6 21.1 671.5 13.03 126.0 32.0 0.60 34.0 204.7\n", + " 2015 1.4 18.2 699.5 12.98 152.0 38.0 0.73 29.2 213.2\n", + " 2014 0.6 8.2 394.9 12.92 189.0 48.0 0.91 13.2 120.4" ] }, "execution_count": 3, @@ -473,111 +473,111 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
 datesquareclustertotalcommentdatesquareclustertotalcomment
04/28/20241412753382Livermore04/28/20241412753382Livermore
02/25/20241411963279Expanding through Santa Cruz and to the South02/25/20241411963279Expanding through Santa Cruz and to the South
01/01/20241410563105Start of this year01/01/20241410563105Start of this year
12/08/20231410423084Benicia ride connects East Bay and Napa clusters12/08/20231410423084Benicia ride connects East Bay and Napa clusters
11/05/2023149322914Alum Rock ride gets 14x14 max square11/05/2023149322914Alum Rock ride gets 14x14 max square
06/30/2023136892640Rides in east Bay fill in holes06/30/2023136892640Rides in east Bay fill in holes
04/14/2023136302595Black Sands Beach low-tide hike connects Marin to max cluster04/14/2023136302595Black Sands Beach low-tide hike connects Marin to max cluster
03/04/2023135832574Almaden rides connects Gilroy to max cluster03/04/2023135832574Almaden rides connects Gilroy to max cluster
10/22/2022133962495Alviso levees to get to 13x13 max square10/22/2022133962495Alviso levees to get to 13x13 max square
10/16/2022123932492Milpitas ride connects East Bay to max cluster10/16/2022123932492Milpitas ride connects East Bay to max cluster
09/08/2022113002487First started tracking tiles09/08/2022113002487First started tracking tiles
\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 4, @@ -659,10 +659,10 @@ " \n", " Alameda County\n", " 5818.0\n", - " 1,030\n", - " 17.71%\n", + " 1,038\n", + " 17.84%\n", " none\n", - " 424 mi to 25%\n", + " 417 mi to 25%\n", " \n", " \n", " \n", @@ -686,8 +686,8 @@ " \n", " Napa County\n", " 1609.0\n", - " 143\n", - " 8.90%\n", + " 144\n", + " 8.92%\n", " none\n", " 259 mi to 25%\n", " \n", @@ -704,10 +704,10 @@ " \n", " Sonoma County\n", " 4895.0\n", - " 251\n", - " 5.12%\n", + " 318\n", + " 6.50%\n", " none\n", - " 973 mi to 25%\n", + " 906 mi to 25%\n", " \n", " \n", " \n", @@ -722,28 +722,28 @@ " \n", " California\n", " 377037.0\n", - " 7,239\n", - " 1.92%\n", + " 7,355\n", + " 1.95%\n", " none\n", - " 302 mi to 2%\n", + " 186 mi to 2%\n", " \n", " \n", " \n", " USA\n", " 6406754.0\n", - " 7,688\n", - " 0.1200%\n", + " 7,932\n", + " 0.1238%\n", " none\n", - " 5,125 mi to 0.2%\n", + " 4,881 mi to 0.2%\n", " \n", " \n", " \n", " Earth\n", " 41974536.0\n", - " 7,555\n", - " 0.0180%\n", + " 7,678\n", + " 0.0183%\n", " none\n", - " 839 mi to 0.02%\n", + " 717 mi to 0.02%\n", " \n", " \n", "\n", @@ -753,16 +753,16 @@ " name total done pct badge to next badge\n", " San Mateo County 2814.0 1,875 66.64% 50% 657 mi to 90%\n", " Santa Clara County 7569.0 2,695 35.60% 25% 1,090 mi to 50%\n", - " Alameda County 5818.0 1,030 17.71% none 424 mi to 25%\n", + " Alameda County 5818.0 1,038 17.84% none 417 mi to 25%\n", " Marin County 2333.0 255 10.94% none 328 mi to 25%\n", " San Francisco County 1217.0 113 9.26% none 192 mi to 25%\n", - " Napa County 1609.0 143 8.90% none 259 mi to 25%\n", + " Napa County 1609.0 144 8.92% none 259 mi to 25%\n", " Santa Cruz County 2718.0 194 7.12% none 486 mi to 25%\n", - " Sonoma County 4895.0 251 5.12% none 973 mi to 25%\n", + " Sonoma County 4895.0 318 6.50% none 906 mi to 25%\n", " Contra Costa County 5945.0 226 3.80% none 1,260 mi to 25%\n", - " California 377037.0 7,239 1.92% none 302 mi to 2%\n", - " USA 6406754.0 7,688 0.1200% none 5,125 mi to 0.2%\n", - " Earth 41974536.0 7,555 0.0180% none 839 mi to 0.02%" + " California 377037.0 7,355 1.95% none 186 mi to 2%\n", + " USA 6406754.0 7,932 0.1238% none 4,881 mi to 0.2%\n", + " Earth 41974536.0 7,678 0.0183% none 717 mi to 0.02%" ] }, "execution_count": 5, @@ -2547,56 +2547,56 @@ " \n", " Megan Gardner\n", " MG\n", - " 99.40\n", - " 13.6\n", - " 2797\n", - " 1029\n", - " 3826\n", - " 56.50\n", + " 99.31\n", + " 19.36\n", + " 2795\n", + " 1465\n", + " 4260\n", + " 59.335\n", " \n", " \n", " \n", " Barry Mann\n", " BM\n", - " 77.40\n", - " 30.4\n", - " 2178\n", - " 2301\n", - " 4479\n", - " 53.90\n", + " 77.91\n", + " 30.70\n", + " 2192\n", + " 2324\n", + " 4516\n", + " 54.305\n", " \n", " \n", " \n", " Peter Norvig\n", " PN\n", - " 65.10\n", - " 35.3\n", - " 1832\n", - " 2672\n", - " 4504\n", - " 50.20\n", + " 67.14\n", + " 35.45\n", + " 1889\n", + " 2683\n", + " 4572\n", + " 51.295\n", " \n", " \n", " \n", " Brian Feinberg\n", " BF\n", - " 32.50\n", - " 44.0\n", - " 915\n", - " 3330\n", - " 4245\n", - " 38.25\n", + " 36.76\n", + " 45.30\n", + " 1034\n", + " 3429\n", + " 4463\n", + " 41.030\n", " \n", " \n", " \n", " Jason Molenda\n", " JM\n", - " 7.56\n", - " 56.2\n", - " 213\n", - " 4254\n", - " 4467\n", - " 31.88\n", + " 7.60\n", + " 56.09\n", + " 214\n", + " 4245\n", + " 4459\n", + " 31.845\n", " \n", " \n", "\n", @@ -2604,18 +2604,18 @@ ], "text/plain": [ " Name Initials SMC % SCC % SMC miles SCC miles Total miles \\\n", - " Megan Gardner MG 99.40 13.6 2797 1029 3826 \n", - " Barry Mann BM 77.40 30.4 2178 2301 4479 \n", - " Peter Norvig PN 65.10 35.3 1832 2672 4504 \n", - " Brian Feinberg BF 32.50 44.0 915 3330 4245 \n", - " Jason Molenda JM 7.56 56.2 213 4254 4467 \n", + " Megan Gardner MG 99.31 19.36 2795 1465 4260 \n", + " Barry Mann BM 77.91 30.70 2192 2324 4516 \n", + " Peter Norvig PN 67.14 35.45 1889 2683 4572 \n", + " Brian Feinberg BF 36.76 45.30 1034 3429 4463 \n", + " Jason Molenda JM 7.60 56.09 214 4245 4459 \n", "\n", - " Avg % \n", - " 56.50 \n", - " 53.90 \n", - " 50.20 \n", - " 38.25 \n", - " 31.88 " + " Avg % \n", + " 59.335 \n", + " 54.305 \n", + " 51.295 \n", + " 41.030 \n", + " 31.845 " ] }, "execution_count": 7, @@ -2624,7 +2624,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -2685,7 +2685,7 @@ " \n", " \n", " 2024\n", - " 103\n", + " 104\n", " 68\n", " \n", " \n", @@ -2754,7 +2754,7 @@ ], "text/plain": [ " year Ed_km Ed_mi\n", - " 2024 103 68\n", + " 2024 104 68\n", " 2023 101 67\n", " 2022 96 66\n", " 2021 93 65\n", @@ -2780,7 +2780,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "My current Eddington Number is **103** in kilometers and **68** in miles (I've ridden at least 68 miles on at least 68 days, but not 69 miles on 69 days). My number is above [the median for Strava](https://swinny.net/Cycling/-4687-Calculate-your-Eddington-Number), but not nearly as good as Eddington himself: his number was **84** (in miles) when he died at age 62, and his roads, weather, bicycles, and navigation aids were not nearly as nice as mine, so hip hip and bravo zulu to him. " + "My current Eddington Number is **104** in kilometers and **68** in miles (I've ridden at least 68 miles on at least 68 days, but not 69 miles on 69 days). My number is above [the median for Strava](https://swinny.net/Cycling/-4687-Calculate-your-Eddington-Number), but not nearly as good as Eddington himself: his number was **84** (in miles) when he died at age 62, and his roads, weather, bicycles, and navigation aids were not nearly as nice as mine, so hip hip and bravo zulu to him. " ] }, { @@ -2825,66 +2825,66 @@ " \n", " \n", " \n", - " 104\n", - " 2\n", - " 69\n", - " 4\n", - " \n", - " \n", - " \n", " 105\n", - " 8\n", - " 70\n", - " 16\n", + " 6\n", + " 69\n", + " 2\n", " \n", " \n", " \n", " 106\n", - " 12\n", - " 71\n", - " 26\n", + " 10\n", + " 70\n", + " 14\n", " \n", " \n", " \n", " 107\n", - " 20\n", - " 72\n", - " 30\n", + " 18\n", + " 71\n", + " 24\n", " \n", " \n", " \n", " 108\n", - " 24\n", - " 73\n", - " 35\n", + " 22\n", + " 72\n", + " 28\n", " \n", " \n", " \n", " 109\n", - " 30\n", - " 74\n", - " 38\n", + " 28\n", + " 73\n", + " 33\n", " \n", " \n", " \n", " 110\n", - " 38\n", - " 75\n", - " 47\n", + " 36\n", + " 74\n", + " 37\n", " \n", " \n", " \n", " 111\n", + " 44\n", + " 75\n", " 46\n", - " 76\n", - " 50\n", " \n", " \n", " \n", " 112\n", - " 57\n", + " 55\n", + " 76\n", + " 49\n", + " \n", + " \n", + " \n", + " 113\n", + " 60\n", " 77\n", - " 53\n", + " 52\n", " \n", " \n", "\n", @@ -2892,15 +2892,15 @@ ], "text/plain": [ " kms kms gap miles miles gap\n", - " 104 2 69 4\n", - " 105 8 70 16\n", - " 106 12 71 26\n", - " 107 20 72 30\n", - " 108 24 73 35\n", - " 109 30 74 38\n", - " 110 38 75 47\n", - " 111 46 76 50\n", - " 112 57 77 53" + " 105 6 69 2\n", + " 106 10 70 14\n", + " 107 18 71 24\n", + " 108 22 72 28\n", + " 109 28 73 33\n", + " 110 36 74 37\n", + " 111 44 75 46\n", + " 112 55 76 49\n", + " 113 60 77 52" ] }, "execution_count": 9, @@ -2916,7 +2916,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "I need 4 more rides of 69 miles to increase my Eddington number to 69. (I must have had multiple rides that were about 68.5 miles.) Also, I need just 2 rides of 104 kms.\n", + "I need just one ride of 105 km to increase my number to 105 kms, but I need two rides of 69 miles to reach that level. (It takes more than one because of rides that are between 68 and 69 miles.)\n", "\n", "I'm glad that my Eddington number (in miles) is greater than my age (in years), but I'm not sure how long I can keep that up. At some point I might switch from tracking Eddington numbers to tracking my number of metric centuries:" ] @@ -2929,7 +2929,7 @@ { "data": { "text/plain": [ - "121" + "123" ] }, "execution_count": 10, @@ -2955,7 +2955,7 @@ "- Your metric Eddington number will never be more than 1.61 times your imperial Eddington number.\n", "- Of two riders, it is possible that one has a higher metric number and the other a higher imperial number.\n", "\n", - "*Note:* the definition of Eddington Number seems precise, but what exactly does ***day*** mean? The New Oxford dictionary has three senses:\n", + "**Note:** the definition of Eddington Number seems precise, but what exactly does ***day*** mean? The New Oxford dictionary has three senses:\n", "\n", "1. *a period of 24 hours;*\n", "2. *a unit of time, reckoned from one midnight to the next;*\n", @@ -3024,7 +3024,7 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -3998,7 +3998,9 @@ { "cell_type": "code", "execution_count": 17, - "metadata": {}, + "metadata": { + "scrolled": true + }, "outputs": [ { "data": { @@ -4098,21 +4100,6 @@ " \n", " \n", " \n", - " Sat, 11/25/2017\n", - " 2017\n", - " Mt. Hamilton\n", - " 3.69\n", - " 36.65\n", - " 4806\n", - " 9.93\n", - " 397.0\n", - " 131.0\n", - " 2.48\n", - " 58.97\n", - " 1465.0\n", - " \n", - " \n", - " \n", " Sun, 12/1/2013\n", " 2013\n", " Mt. Hamilton\n", @@ -4128,6 +4115,21 @@ " \n", " \n", " \n", + " Sat, 11/25/2017\n", + " 2017\n", + " Mt. Hamilton\n", + " 3.69\n", + " 36.65\n", + " 4806\n", + " 9.93\n", + " 397.0\n", + " 131.0\n", + " 2.48\n", + " 58.97\n", + " 1465.0\n", + " \n", + " \n", + " \n", " Fri, 10/30/2015\n", " 2015\n", " OLH / West Alpine\n", @@ -4188,21 +4190,6 @@ " \n", " \n", " \n", - " Sun, 6/4/2017\n", - " 2017\n", - " Sequoia Challenge\n", - " 6.29\n", - " 66.52\n", - " 7520\n", - " 10.58\n", - " 364.0\n", - " 113.0\n", - " 2.14\n", - " 107.03\n", - " 2292.0\n", - " \n", - " \n", - " \n", " Sat, 7/25/2015\n", " 2015\n", " Palo Alto, California\n", @@ -4218,6 +4205,21 @@ " \n", " \n", " \n", + " Sun, 6/4/2017\n", + " 2017\n", + " Sequoia Challenge\n", + " 6.29\n", + " 66.52\n", + " 7520\n", + " 10.58\n", + " 364.0\n", + " 113.0\n", + " 2.14\n", + " 107.03\n", + " 2292.0\n", + " \n", + " \n", + " \n", " Sat, 10/11/2014\n", " 2014\n", " OLH / Tunitas\n", @@ -4346,14 +4348,14 @@ " Fri, 4/2/2021 2021 Everesting 5: climb 2×(OLH + WOLH) 3.27 \n", " Mon, 3/29/2021 2021 Everesting 1: Mt Diablo 2.60 \n", " Tue, 3/30/2021 2021 Everesting 2: Kings + WOLH + OLH 3.34 \n", - " Sat, 11/25/2017 2017 Mt. Hamilton 3.69 \n", " Sun, 12/1/2013 2013 Mt. Hamilton 3.78 \n", + " Sat, 11/25/2017 2017 Mt. Hamilton 3.69 \n", " Fri, 10/30/2015 2015 OLH / West Alpine 3.48 \n", " Sat, 4/26/2014 2014 OLH / Tunitas Creek 5.26 \n", " Sat, 4/18/2015 2015 Tunitas + Lobitos Creeks 5.24 \n", " Wed, 10/14/2015 2015 Half Moon Bay 6.13 \n", - " Sun, 6/4/2017 2017 Sequoia Challenge 6.29 \n", " Sat, 7/25/2015 2015 Palo Alto, California 4.04 \n", + " Sun, 6/4/2017 2017 Sequoia Challenge 6.29 \n", " Sat, 10/11/2014 2014 OLH / Tunitas 5.09 \n", " Sat, 8/13/2016 2016 Petaluma / Point Reyes 4.50 \n", " Fri, 8/28/2015 2015 Pescadaro via OLH 5.31 \n", @@ -4368,14 +4370,14 @@ " 31.48 4344 9.63 405.0 138.0 2.61 50.65 1324.0 \n", " 22.22 3406 8.55 399.0 153.0 2.90 35.75 1038.0 \n", " 35.99 4377 10.78 399.0 122.0 2.30 57.91 1334.0 \n", - " 36.65 4806 9.93 397.0 131.0 2.48 58.97 1465.0 \n", " 37.56 4921 9.94 397.0 131.0 2.48 60.43 1500.0 \n", + " 36.65 4806 9.93 397.0 131.0 2.48 58.97 1465.0 \n", " 39.51 4505 11.35 395.0 114.0 2.16 63.57 1373.0 \n", " 58.69 6742 11.16 391.0 115.0 2.18 94.43 2055.0 \n", " 61.27 6611 11.69 385.0 108.0 2.04 98.58 2015.0 \n", " 72.97 7644 11.90 380.0 105.0 1.98 117.41 2330.0 \n", - " 66.52 7520 10.58 364.0 113.0 2.14 107.03 2292.0 \n", " 43.62 4819 10.80 364.0 110.0 2.09 70.18 1469.0 \n", + " 66.52 7520 10.58 364.0 113.0 2.14 107.03 2292.0 \n", " 58.29 6044 11.45 362.0 104.0 1.96 93.79 1842.0 \n", " 54.75 5286 12.17 358.0 97.0 1.83 88.09 1611.0 \n", " 66.01 6137 12.43 352.0 93.0 1.76 106.21 1871.0 \n", @@ -4392,7 +4394,7 @@ } ], "source": [ - "top(rides, 'vam')" + "top(rides, 'vam') " ] }, { @@ -4446,42 +4448,42 @@ " \n", " \n", " count\n", - " 547.000000\n", - " 547.000000\n", - " 547.000000\n", - " 547.000000\n", - " 547.000000\n", - " 547.000000\n", - " 547.000000\n", - " 547.000000\n", - " 547.000000\n", - " 547.000000\n", + " 549.000000\n", + " 549.000000\n", + " 549.000000\n", + " 549.000000\n", + " 549.000000\n", + " 549.000000\n", + " 549.000000\n", + " 549.000000\n", + " 549.000000\n", + " 549.000000\n", " \n", " \n", " mean\n", - " 2017.062157\n", - " 3.387989\n", - " 43.330457\n", - " 1834.268739\n", - " 12.996033\n", - " 157.694698\n", - " 41.478976\n", - " 0.785320\n", - " 69.718647\n", - " 559.091408\n", + " 2017.087432\n", + " 3.401658\n", + " 43.459199\n", + " 1837.236794\n", + " 12.981494\n", + " 157.360656\n", + " 41.449909\n", + " 0.784772\n", + " 69.925792\n", + " 559.996357\n", " \n", " \n", " std\n", - " 2.640862\n", - " 1.476037\n", - " 17.717875\n", - " 1508.345810\n", - " 1.375075\n", - " 90.151399\n", - " 27.219045\n", - " 0.515385\n", - " 28.508142\n", - " 459.737864\n", + " 2.669031\n", + " 1.485236\n", + " 17.816644\n", + " 1506.513948\n", + " 1.330788\n", + " 89.686606\n", + " 27.173741\n", + " 0.514528\n", + " 28.667056\n", + " 459.179588\n", " \n", " \n", " min\n", @@ -4499,41 +4501,41 @@ " \n", " 25%\n", " 2015.000000\n", - " 2.215000\n", - " 29.195000\n", - " 740.000000\n", + " 2.220000\n", + " 29.210000\n", + " 741.000000\n", " 12.160000\n", - " 80.500000\n", - " 19.500000\n", + " 81.000000\n", + " 20.000000\n", " 0.370000\n", - " 46.975000\n", - " 225.500000\n", + " 47.000000\n", + " 226.000000\n", " \n", " \n", " 50%\n", " 2017.000000\n", " 2.890000\n", - " 37.000000\n", - " 1375.000000\n", - " 13.150000\n", + " 37.050000\n", + " 1378.000000\n", + " 13.140000\n", " 152.000000\n", " 36.000000\n", " 0.690000\n", - " 59.530000\n", - " 419.000000\n", + " 59.610000\n", + " 420.000000\n", " \n", " \n", " 75%\n", " 2018.000000\n", - " 4.440000\n", - " 58.260000\n", - " 2352.500000\n", - " 13.785000\n", - " 218.500000\n", - " 55.500000\n", - " 1.060000\n", - " 93.740000\n", - " 717.000000\n", + " 4.460000\n", + " 58.420000\n", + " 2362.000000\n", + " 13.780000\n", + " 217.000000\n", + " 55.000000\n", + " 1.050000\n", + " 94.000000\n", + " 720.000000\n", " \n", " \n", " max\n", @@ -4541,7 +4543,7 @@ " 8.140000\n", " 102.410000\n", " 7644.000000\n", - " 21.650000\n", + " 16.750000\n", " 406.000000\n", " 153.000000\n", " 2.900000\n", @@ -4554,23 +4556,23 @@ ], "text/plain": [ " year hours miles feet mph \\\n", - "count 547.000000 547.000000 547.000000 547.000000 547.000000 \n", - "mean 2017.062157 3.387989 43.330457 1834.268739 12.996033 \n", - "std 2.640862 1.476037 17.717875 1508.345810 1.375075 \n", + "count 549.000000 549.000000 549.000000 549.000000 549.000000 \n", + "mean 2017.087432 3.401658 43.459199 1837.236794 12.981494 \n", + "std 2.669031 1.485236 17.816644 1506.513948 1.330788 \n", "min 2012.000000 1.540000 20.960000 68.000000 8.550000 \n", - "25% 2015.000000 2.215000 29.195000 740.000000 12.160000 \n", - "50% 2017.000000 2.890000 37.000000 1375.000000 13.150000 \n", - "75% 2018.000000 4.440000 58.260000 2352.500000 13.785000 \n", - "max 2024.000000 8.140000 102.410000 7644.000000 21.650000 \n", + "25% 2015.000000 2.220000 29.210000 741.000000 12.160000 \n", + "50% 2017.000000 2.890000 37.050000 1378.000000 13.140000 \n", + "75% 2018.000000 4.460000 58.420000 2362.000000 13.780000 \n", + "max 2024.000000 8.140000 102.410000 7644.000000 16.750000 \n", "\n", " vam fpmi pct kms meters \n", - "count 547.000000 547.000000 547.000000 547.000000 547.000000 \n", - "mean 157.694698 41.478976 0.785320 69.718647 559.091408 \n", - "std 90.151399 27.219045 0.515385 28.508142 459.737864 \n", + "count 549.000000 549.000000 549.000000 549.000000 549.000000 \n", + "mean 157.360656 41.449909 0.784772 69.925792 559.996357 \n", + "std 89.686606 27.173741 0.514528 28.667056 459.179588 \n", "min 10.000000 3.000000 0.050000 33.720000 21.000000 \n", - "25% 80.500000 19.500000 0.370000 46.975000 225.500000 \n", - "50% 152.000000 36.000000 0.690000 59.530000 419.000000 \n", - "75% 218.500000 55.500000 1.060000 93.740000 717.000000 \n", + "25% 81.000000 20.000000 0.370000 47.000000 226.000000 \n", + "50% 152.000000 36.000000 0.690000 59.610000 420.000000 \n", + "75% 217.000000 55.000000 1.050000 94.000000 720.000000 \n", "max 406.000000 153.000000 2.900000 164.780000 2330.000000 " ] }, @@ -4795,21 +4797,6 @@ " \n", " \n", " \n", - " Fri, 7/19/2024\n", - " 2024\n", - " Belmont\n", - " 3.37\n", - " 72.97\n", - " 3716\n", - " 21.65\n", - " 336.0\n", - " 51.0\n", - " 0.96\n", - " 117.41\n", - " 1133.0\n", - " \n", - " \n", - " \n", " Sun, 5/22/2016\n", " 2016\n", " Canada\n", @@ -4840,6 +4827,21 @@ " \n", " \n", " \n", + " Sun, 8/25/2024\n", + " 2024\n", + " Petaluma–Santa Rosa + Napa\n", + " 5.22\n", + " 84.26\n", + " 2966\n", + " 16.14\n", + " 173.0\n", + " 35.0\n", + " 0.67\n", + " 135.57\n", + " 904.0\n", + " \n", + " \n", + " \n", " Sat, 1/25/2014\n", " 2014\n", " Woodside\n", @@ -5099,9 +5101,9 @@ ], "text/plain": [ " date year title hours miles feet \\\n", - " Fri, 7/19/2024 2024 Belmont 3.37 72.97 3716 \n", " Sun, 5/22/2016 2016 Canada 2.19 36.68 1332 \n", " Wed, 9/13/2017 2017 Healdburg / Jimtown 2.13 34.45 912 \n", + " Sun, 8/25/2024 2024 Petaluma–Santa Rosa + Napa 5.22 84.26 2966 \n", " Sat, 1/25/2014 2014 Woodside 1.56 25.08 1243 \n", " Sat, 4/11/2015 2015 Woodside 1.54 24.73 1035 \n", " Mon, 5/27/2024 2024 Saratoga 4.83 77.25 1749 \n", @@ -5121,9 +5123,9 @@ " Tue, 6/18/2013 2013 work etc (headwinds) 2.06 31.48 809 \n", "\n", " mph vam fpmi pct kms meters \n", - " 21.65 336.0 51.0 0.96 117.41 1133.0 \n", " 16.75 185.0 36.0 0.69 59.02 406.0 \n", " 16.17 131.0 26.0 0.50 55.43 278.0 \n", + " 16.14 173.0 35.0 0.67 135.57 904.0 \n", " 16.08 243.0 50.0 0.94 40.35 379.0 \n", " 16.06 205.0 42.0 0.79 39.79 315.0 \n", " 15.99 110.0 23.0 0.43 124.30 533.0 \n", @@ -6404,6 +6406,21 @@ " \n", " \n", " \n", + " Sun, 8/25/2024\n", + " 2024\n", + " Petaluma–Santa Rosa + Napa\n", + " 5.22\n", + " 84.26\n", + " 2966\n", + " 16.14\n", + " 173.0\n", + " 35.0\n", + " 0.67\n", + " 135.57\n", + " 904.0\n", + " \n", + " \n", + " \n", " Sat, 6/1/2024\n", " 2024\n", " OLH / Old Haul / Loma Mar / Pescadero / Tunita...\n", @@ -6552,21 +6569,6 @@ " 126.35\n", " 1456.0\n", " \n", - " \n", - " \n", - " Sun, 2/7/2021\n", - " 2021\n", - " Saratoga / Campbell\n", - " 5.89\n", - " 78.38\n", - " 2270\n", - " 13.31\n", - " 117.0\n", - " 29.0\n", - " 0.55\n", - " 126.11\n", - " 692.0\n", - " \n", " \n", "\n", "" @@ -6582,6 +6584,7 @@ " Sat, 5/6/2017 2017 Wine Country Century \n", " Fri, 8/10/2018 2018 Bike Ride Northwest Day 6 \n", " Fri, 2/28/2020 2020 Sawyer Camp Trail \n", + " Sun, 8/25/2024 2024 Petaluma–Santa Rosa + Napa \n", " Sat, 6/1/2024 2024 OLH / Old Haul / Loma Mar / Pescadero / Tunita... \n", " Wed, 6/7/2023 2023 Los Altos \n", " Sun, 8/30/2020 2020 Los Gatos \n", @@ -6592,7 +6595,6 @@ " Thu, 1/5/2012 2012 Tekapo Lake to Omarama New Zealand \n", " Tue, 8/7/2018 2018 Bike Ride Northwest Day 3 \n", " Sun, 6/15/2014 2014 Sierra to the Sea Day 1 \n", - " Sun, 2/7/2021 2021 Saratoga / Campbell \n", "\n", " hours miles feet mph vam fpmi pct kms meters \n", " 7.87 102.41 2286 13.01 89.0 22.0 0.42 164.78 697.0 \n", @@ -6604,6 +6606,7 @@ " 7.26 89.49 5246 12.33 220.0 59.0 1.11 143.99 1599.0 \n", " 6.24 84.70 4380 13.57 214.0 52.0 0.98 136.28 1335.0 \n", " 6.41 84.43 3448 13.17 164.0 41.0 0.77 135.85 1051.0 \n", + " 5.22 84.26 2966 16.14 173.0 35.0 0.67 135.57 904.0 \n", " 7.84 81.70 7314 10.42 284.0 90.0 1.70 131.46 2229.0 \n", " 7.05 81.54 2110 11.57 91.0 26.0 0.49 131.20 643.0 \n", " 6.36 80.92 2100 12.72 101.0 26.0 0.49 130.20 640.0 \n", @@ -6613,8 +6616,7 @@ " 6.59 79.78 1738 12.11 80.0 22.0 0.41 128.37 530.0 \n", " 5.46 79.42 2145 14.55 120.0 27.0 0.51 127.79 654.0 \n", " 6.18 78.96 5092 12.78 251.0 64.0 1.22 127.05 1552.0 \n", - " 5.57 78.53 4777 14.10 261.0 61.0 1.15 126.35 1456.0 \n", - " 5.89 78.38 2270 13.31 117.0 29.0 0.55 126.11 692.0 " + " 5.57 78.53 4777 14.10 261.0 61.0 1.15 126.35 1456.0 " ] }, "execution_count": 24, diff --git a/ipynb/BikeCode.ipynb b/ipynb/BikeCode.ipynb index edb2eb2..81c05e1 100644 --- a/ipynb/BikeCode.ipynb +++ b/ipynb/BikeCode.ipynb @@ -13,7 +13,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -42,7 +42,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -80,7 +80,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -90,7 +90,7 @@ "\n", "daily = yearly.copy()\n", "for name in 'hours miles feet kms meters'.split():\n", - " daily[name] = round(daily[name].map(lambda x: x / (6 * 52)), 1)" + " daily[name] = round(daily[name].map(lambda x: x / (6 * 50)), 1)" ] }, { @@ -110,7 +110,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -127,7 +127,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -146,7 +146,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -178,7 +178,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -223,7 +223,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -281,7 +281,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -294,18 +294,20 @@ " leaders['Avg %'] = (leaders['SMC %'] + leaders['SCC %']) / 2\n", " return drop_index(leaders.sort_values('Avg %', ascending=False))\n", "\n", - "leaders = make_leaders([ # Data as of Jan 3, 2024 (Name, Initials, SMC, SCC)\n", - " ('Megan Gardner', 'MG', 99.4, 13.6),\n", - " ('Barry Mann', 'BM', 77.4, 30.4), \n", - " ('Peter Norvig', 'PN', 65.1, 35.3),\n", - " ('Brian Feinberg', 'BF', 32.5, 44.0),\n", - " ('Jason Molenda', 'JM', 7.56, 56.2) \n", + "leaders = make_leaders([ # Data as of Aug 19, 2024 (Name, Initials, SMC, SCC)\n", + " ('Megan Gardner', 'MG', 99.31, 19.36),\n", + " #('Matthew Ring', 'MR', 82.51, 2.43), # dominated by MG\n", + " ('Barry Mann', 'BM', 77.91, 30.70), \n", + " ('Peter Norvig', 'PN', 67.14, 35.45),\n", + " ('Brian Feinberg', 'BF', 36.76, 45.30),\n", + " ('Jason Molenda', 'JM', 7.6, 56.09) \n", + " #('Jim Brooks', 'JB', 6.2, 49.51), # dominated by JM\n", " ])\n", " \n", "def pareto_front(leaders):\n", " ax = leaders.plot('SMC %', 'SCC %', kind='scatter')\n", " front = sorted((x, y) for i, (_, _, x, y, *_) in leaders.iterrows())\n", - " ax.plot(*zip(*front), ':'); ax.axis('square'); grid()\n", + " ax.plot(*zip(*front), ':'); \"ax.axis('square')\"; grid()\n", " ax.set_xlabel('San Mateo County %')\n", " ax.set_ylabel('Santa Clara County %')\n", " for i, (name, initials, x, y, *_) in leaders.iterrows():\n", @@ -322,7 +324,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -356,1256 +358,6 @@ "\n", "count = sum" ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
namemilescountypct
Atherton56.30SMC99.800
Bay Area Ridge Trail395.60SMC28.680
Belmont98.10SMC75.430
Brisbane40.90SMC50.400
Broadmoor8.80SMC38.260
Burleigh Murray Park2.10SMC95.080
Burlingame88.40SMC56.880
Burlingame Hills6.00SMC71.500
Butano State Park15.20SMC30.100
Coal Creek Preserve3.90SMC66.700
Colma13.70SMC66.240
Daly City148.10SMC28.270
East Palo Alto48.30SMC99.950
El Corte de Madera OSP34.54SMC26.880
El Granada49.20SMC43.600
Emerald Lake Hills24.60SMC99.960
Foster City150.00SMC99.400
Half Moon Bay68.00SMC34.000
Half Moon Bay State Beach4.40SMC52.400
Hillsborough85.30SMC53.100
Kensington Square0.60SMC100.000
Ladera8.10SMC100.000
Long Ridge Preserve11.00SMC45.100
Los Trancos OSP0.30SMC100.000
Los Trancos Woods5.30SMC100.000
Menlo Oaks3.50SMC100.000
Menlo Park139.50SMC99.700
Millbrae65.00SMC51.300
Montara27.80SMC60.200
Moss Beach19.70SMC43.690
North Fair Oaks26.70SMC100.000
Pacifica150.90SMC33.200
Palomar Park4.00SMC100.000
Portola Redwoods SP2.90SMC74.300
Portola Valley48.20SMC99.120
Purisima Creek Preserve16.50SMC39.000
Redwood City240.50SMC99.730
Russian Ridge Preserve12.20SMC59.500
San Bruno114.00SMC34.900
San Carlos99.00SMC99.430
San Mateo256.00SMC54.600
San Mateo Highlands18.00SMC93.500
Sequoia Tract11.00SMC100.000
Sky Londa11.80SMC99.700
Skyline Ridge OSP0.80SMC76.400
South San Francisco185.30SMC30.980
West Menlo Park11.20SMC99.750
Windy Hill Preserve4.10SMC100.000
Woodside75.20SMC99.740
Branham44.00SCC33.200
Campbell119.00SCC30.300
Communications Hill27.80SCC39.500
Cupertino172.00SCC54.990
Edenvale30.00SCC47.700
Foothills OS Preserve1.10SCC100.000
Gardner23.40SCC47.200
Gilroy188.90SCC26.400
Los Altos138.20SCC99.800
Los Altos Hills91.30SCC99.560
Los Gatos148.00SCC51.600
Loyola18.30SCC99.940
Milpitas224.00SCC36.700
Monte Sereno20.40SCC52.400
Mountain View208.10SCC99.640
Palo Alto297.20SCC99.450
Parkview42.50SCC33.700
San Francisco Bay Trail260.80SCC68.470
San Jose2618.70SCC28.000
San Martin35.30SCC31.500
Santa Clara348.00SCC34.800
Saratoga180.00SCC51.400
Seven Trees40.90SCC34.000
Spartan Keyes64.30SCC36.800
Sunnyvale357.00SCC55.300
Willow Glen81.60SCC36.000
Willow Glen South63.30SCC30.900
Alameda206.70ALA12.200
Albany42.70ALA6.800
Ashland35.10ALA36.100
Berkeley260.30ALA7.800
Castro Valley192.50ALA26.100
Cherryland20.90ALA27.800
Emeryville28.10ALA7.700
Fairview34.40ALA29.200
Fremont780.20ALA34.300
Hayward444.50ALA33.200
Hayward Acres3.50ALA43.300
Newark147.00ALA51.600
San Leandro230.60ALA28.100
San Lorenzo55.50ALA40.950
Union City208.80ALA33.370
Aquatic Park Fort Mason6.40SFC15.400
Ashbury Heights3.70SFC13.000
Balboa Terrace3.40SFC18.200
Central Waterfront10.20SFC6.000
Clarendon Heights6.00SFC14.200
Cole Valley1.70SFC18.000
Cow Hollow12.00SFC11.900
Dogpatch5.10SFC12.300
Financial District9.40SFC10.200
Fisherman's Wharf6.20SFC13.800
Forest Hill6.10SFC15.900
Golden Gate Heights17.80SFC10.700
Golden Gate Park40.80SFC29.400
Lake Street3.90SFC36.800
Lincoln Park4.50SFC39.600
Little Hollywood3.70SFC15.200
Mission Bay13.80SFC8.600
Northern Waterfront5.60SFC15.500
Pacific Heights18.00SFC10.700
Panhandle7.30SFC20.600
Polk Gulch4.00SFC18.200
Presidio Heights6.50SFC21.600
Presidio National Park43.50SFC26.700
Presidio Terrace2.80SFC43.900
Seacliff4.10SFC29.300
South Beach4.80SFC37.400
Sutro Heights7.10SFC13.200
Barangaroo1.70NSW47.300
Bodega Bay28.90SON17.000
Cambridge180.80MAS6.200
Castle Rock State Park11.20SCC51.200
Corte Madera51.00MAR12.900
Dawes Point1.80NSW29.200
Forest of Nisene Marks SP44.00SCC30.700
Guerneville22.70SON23.600
Healdsburg53.70SON17.800
Marin Headlands GGNRA65.70MAR31.900
Mill Valley92.20MAR9.100
Millers Point3.20NSW34.300
MIT9.60MAS34.700
Mokelumne Hill14.70CAL26.800
Mt Tamalpais State Park31.70MAR38.700
Muir Beach4.60MAR37.100
Rosie Riveter Park5.50CCC73.200
San Rafael260.00MAR3.700
Sausalito32.70MAR12.900
Stinson Beach11.20MAR32.900
San Mateo County2814.00---66.640
Santa Clara County7569.00---35.600
Alameda County5818.00---17.710
Marin County2333.00---10.940
San Francisco County1217.00---9.260
Napa County1609.00---8.900
Sonoma County4895.00---5.120
Santa Cruz County2718.00---7.120
Contra Costa County5945.00---3.800
California377037.00---1.920
USA6406754.00---0.120
Earth41974536.00---0.018
\n", - "
" - ], - "text/plain": [ - " name miles county pct\n", - " Atherton 56.30 SMC 99.800\n", - " Bay Area Ridge Trail 395.60 SMC 28.680\n", - " Belmont 98.10 SMC 75.430\n", - " Brisbane 40.90 SMC 50.400\n", - " Broadmoor 8.80 SMC 38.260\n", - " Burleigh Murray Park 2.10 SMC 95.080\n", - " Burlingame 88.40 SMC 56.880\n", - " Burlingame Hills 6.00 SMC 71.500\n", - " Butano State Park 15.20 SMC 30.100\n", - " Coal Creek Preserve 3.90 SMC 66.700\n", - " Colma 13.70 SMC 66.240\n", - " Daly City 148.10 SMC 28.270\n", - " East Palo Alto 48.30 SMC 99.950\n", - " El Corte de Madera OSP 34.54 SMC 26.880\n", - " El Granada 49.20 SMC 43.600\n", - " Emerald Lake Hills 24.60 SMC 99.960\n", - " Foster City 150.00 SMC 99.400\n", - " Half Moon Bay 68.00 SMC 34.000\n", - " Half Moon Bay State Beach 4.40 SMC 52.400\n", - " Hillsborough 85.30 SMC 53.100\n", - " Kensington Square 0.60 SMC 100.000\n", - " Ladera 8.10 SMC 100.000\n", - " Long Ridge Preserve 11.00 SMC 45.100\n", - " Los Trancos OSP 0.30 SMC 100.000\n", - " Los Trancos Woods 5.30 SMC 100.000\n", - " Menlo Oaks 3.50 SMC 100.000\n", - " Menlo Park 139.50 SMC 99.700\n", - " Millbrae 65.00 SMC 51.300\n", - " Montara 27.80 SMC 60.200\n", - " Moss Beach 19.70 SMC 43.690\n", - " North Fair Oaks 26.70 SMC 100.000\n", - " Pacifica 150.90 SMC 33.200\n", - " Palomar Park 4.00 SMC 100.000\n", - " Portola Redwoods SP 2.90 SMC 74.300\n", - " Portola Valley 48.20 SMC 99.120\n", - " Purisima Creek Preserve 16.50 SMC 39.000\n", - " Redwood City 240.50 SMC 99.730\n", - " Russian Ridge Preserve 12.20 SMC 59.500\n", - " San Bruno 114.00 SMC 34.900\n", - " San Carlos 99.00 SMC 99.430\n", - " San Mateo 256.00 SMC 54.600\n", - " San Mateo Highlands 18.00 SMC 93.500\n", - " Sequoia Tract 11.00 SMC 100.000\n", - " Sky Londa 11.80 SMC 99.700\n", - " Skyline Ridge OSP 0.80 SMC 76.400\n", - " South San Francisco 185.30 SMC 30.980\n", - " West Menlo Park 11.20 SMC 99.750\n", - " Windy Hill Preserve 4.10 SMC 100.000\n", - " Woodside 75.20 SMC 99.740\n", - " Branham 44.00 SCC 33.200\n", - " Campbell 119.00 SCC 30.300\n", - " Communications Hill 27.80 SCC 39.500\n", - " Cupertino 172.00 SCC 54.990\n", - " Edenvale 30.00 SCC 47.700\n", - " Foothills OS Preserve 1.10 SCC 100.000\n", - " Gardner 23.40 SCC 47.200\n", - " Gilroy 188.90 SCC 26.400\n", - " Los Altos 138.20 SCC 99.800\n", - " Los Altos Hills 91.30 SCC 99.560\n", - " Los Gatos 148.00 SCC 51.600\n", - " Loyola 18.30 SCC 99.940\n", - " Milpitas 224.00 SCC 36.700\n", - " Monte Sereno 20.40 SCC 52.400\n", - " Mountain View 208.10 SCC 99.640\n", - " Palo Alto 297.20 SCC 99.450\n", - " Parkview 42.50 SCC 33.700\n", - " San Francisco Bay Trail 260.80 SCC 68.470\n", - " San Jose 2618.70 SCC 28.000\n", - " San Martin 35.30 SCC 31.500\n", - " Santa Clara 348.00 SCC 34.800\n", - " Saratoga 180.00 SCC 51.400\n", - " Seven Trees 40.90 SCC 34.000\n", - " Spartan Keyes 64.30 SCC 36.800\n", - " Sunnyvale 357.00 SCC 55.300\n", - " Willow Glen 81.60 SCC 36.000\n", - " Willow Glen South 63.30 SCC 30.900\n", - " Alameda 206.70 ALA 12.200\n", - " Albany 42.70 ALA 6.800\n", - " Ashland 35.10 ALA 36.100\n", - " Berkeley 260.30 ALA 7.800\n", - " Castro Valley 192.50 ALA 26.100\n", - " Cherryland 20.90 ALA 27.800\n", - " Emeryville 28.10 ALA 7.700\n", - " Fairview 34.40 ALA 29.200\n", - " Fremont 780.20 ALA 34.300\n", - " Hayward 444.50 ALA 33.200\n", - " Hayward Acres 3.50 ALA 43.300\n", - " Newark 147.00 ALA 51.600\n", - " San Leandro 230.60 ALA 28.100\n", - " San Lorenzo 55.50 ALA 40.950\n", - " Union City 208.80 ALA 33.370\n", - " Aquatic Park Fort Mason 6.40 SFC 15.400\n", - " Ashbury Heights 3.70 SFC 13.000\n", - " Balboa Terrace 3.40 SFC 18.200\n", - " Central Waterfront 10.20 SFC 6.000\n", - " Clarendon Heights 6.00 SFC 14.200\n", - " Cole Valley 1.70 SFC 18.000\n", - " Cow Hollow 12.00 SFC 11.900\n", - " Dogpatch 5.10 SFC 12.300\n", - " Financial District 9.40 SFC 10.200\n", - " Fisherman's Wharf 6.20 SFC 13.800\n", - " Forest Hill 6.10 SFC 15.900\n", - " Golden Gate Heights 17.80 SFC 10.700\n", - " Golden Gate Park 40.80 SFC 29.400\n", - " Lake Street 3.90 SFC 36.800\n", - " Lincoln Park 4.50 SFC 39.600\n", - " Little Hollywood 3.70 SFC 15.200\n", - " Mission Bay 13.80 SFC 8.600\n", - " Northern Waterfront 5.60 SFC 15.500\n", - " Pacific Heights 18.00 SFC 10.700\n", - " Panhandle 7.30 SFC 20.600\n", - " Polk Gulch 4.00 SFC 18.200\n", - " Presidio Heights 6.50 SFC 21.600\n", - " Presidio National Park 43.50 SFC 26.700\n", - " Presidio Terrace 2.80 SFC 43.900\n", - " Seacliff 4.10 SFC 29.300\n", - " South Beach 4.80 SFC 37.400\n", - " Sutro Heights 7.10 SFC 13.200\n", - " Barangaroo 1.70 NSW 47.300\n", - " Bodega Bay 28.90 SON 17.000\n", - " Cambridge 180.80 MAS 6.200\n", - " Castle Rock State Park 11.20 SCC 51.200\n", - " Corte Madera 51.00 MAR 12.900\n", - " Dawes Point 1.80 NSW 29.200\n", - " Forest of Nisene Marks SP 44.00 SCC 30.700\n", - " Guerneville 22.70 SON 23.600\n", - " Healdsburg 53.70 SON 17.800\n", - " Marin Headlands GGNRA 65.70 MAR 31.900\n", - " Mill Valley 92.20 MAR 9.100\n", - " Millers Point 3.20 NSW 34.300\n", - " MIT 9.60 MAS 34.700\n", - " Mokelumne Hill 14.70 CAL 26.800\n", - " Mt Tamalpais State Park 31.70 MAR 38.700\n", - " Muir Beach 4.60 MAR 37.100\n", - " Rosie Riveter Park 5.50 CCC 73.200\n", - " San Rafael 260.00 MAR 3.700\n", - " Sausalito 32.70 MAR 12.900\n", - " Stinson Beach 11.20 MAR 32.900\n", - " San Mateo County 2814.00 --- 66.640\n", - " Santa Clara County 7569.00 --- 35.600\n", - " Alameda County 5818.00 --- 17.710\n", - " Marin County 2333.00 --- 10.940\n", - " San Francisco County 1217.00 --- 9.260\n", - " Napa County 1609.00 --- 8.900\n", - " Sonoma County 4895.00 --- 5.120\n", - " Santa Cruz County 2718.00 --- 7.120\n", - " Contra Costa County 5945.00 --- 3.800\n", - " California 377037.00 --- 1.920\n", - " USA 6406754.00 --- 0.120\n", - " Earth 41974536.00 --- 0.018" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "places" - ] } ], "metadata": { diff --git a/ipynb/Probability.ipynb b/ipynb/Probability.ipynb index 4e1b22f..bb7c998 100644 --- a/ipynb/Probability.ipynb +++ b/ipynb/Probability.ipynb @@ -5,13 +5,14 @@ "metadata": { "button": false, "deletable": true, + "id": "xxc43bkDjrvO", "new_sheet": false, "run_control": { "read_only": false } }, "source": [ - "
Peter Norvig, 12 Feb 2016
Revised 17 Feb 2018
\n", + "
Peter Norvig, 12 Feb 2016
Revised 17 Feb 2018
Python 3.8 updates 2024
\n", "\n", "# A Concrete Introduction to Probability (using Python)\n", "\n", @@ -19,30 +20,50 @@ "\n", ">*Probability theory is nothing but common sense reduced to calculation. ... [Probability] is thus simply a fraction whose numerator is the number of favorable cases and whose denominator is the number of all the cases possible ... when nothing leads us to expect that any one of these cases should occur more than any other.*\n", "\n", - "![Laplace](https://upload.wikimedia.org/wikipedia/commons/thumb/3/30/AduC_197_Laplace_%28P.S.%2C_marquis_de%2C_1749-1827%29.JPG/180px-AduC_197_Laplace_%28P.S.%2C_marquis_de%2C_1749-1827%29.JPG)\n", - "
Pierre-Simon Laplace
1814
\n", + "||\n", + "|--|\n", + "|![Laplace](https://upload.wikimedia.org/wikipedia/commons/thumb/3/30/AduC_197_Laplace_%28P.S.%2C_marquis_de%2C_1749-1827%29.JPG/180px-AduC_197_Laplace_%28P.S.%2C_marquis_de%2C_1749-1827%29.JPG)|\n", + "|Pierre-Simon Laplace (1749–1827)|\n", "\n", "\n", - "Laplace nailed it. To untangle a probability problem, all you have to do is define exactly what the cases are, and careful count the favorable and total cases. Let's be clear on our vocabulary words:\n", + "Laplace nailed it. To untangle a probability problem, all you have to do is define exactly what the cases are, and carefully count the favorable and total cases. Let's be clear on our vocabulary words:\n", "\n", "\n", "- **[Trial](https://en.wikipedia.org/wiki/Experiment_%28probability_theory%29):**\n", - " A single occurrence with an outcome that is uncertain until we observe it. \n", + " A single occurrence with an outcome that is uncertain until it happens.\n", "
*For example, rolling a single die.*\n", "- **[Outcome](https://en.wikipedia.org/wiki/Outcome_%28probability%29):**\n", " A possible result of a trial; one particular state of the world. What Laplace calls a **case.**\n", - "
*For example:* `4`.\n", + "
*For example: the die comes up as* `4`.\n", "- **[Sample Space](https://en.wikipedia.org/wiki/Sample_space):**\n", - " The set of all possible outcomes for the trial. \n", + " The set of all possible outcomes for the trial.\n", "
*For example,* `{1, 2, 3, 4, 5, 6}`.\n", "- **[Event](https://en.wikipedia.org/wiki/Event_%28probability_theory%29):**\n", " A subset of the sample space, a set of outcomes that together have some property we are interested in.\n", - "
*For example, the event \"even die roll\" is the set of outcomes* `{2, 4, 6}`. \n", + "
*For example, the event \"even die roll\" is the set of outcomes* `{2, 4, 6}`.\n", "- **[Probability](https://en.wikipedia.org/wiki/Probability_theory):**\n", - " As Laplace said, the probability of an event with respect to a sample space is the \"number of favorable cases\" (outcomes from the sample space that are in the event) divided by the \"number of all the cases\" in the sample space (assuming \"nothing leads us to expect that any one of these cases should occur more than any other\"). Since this is a proper fraction, probability will always be a number between 0 (representing an impossible event) and 1 (representing a certain event).\n", + " As Laplace said, the probability of an event with respect to a sample space is the \"number of favorable cases\" (outcomes from the sample space that are in the event) divided by the \"number of all the cases\" in the sample space, assuming \"nothing leads us to expect that any one of these cases should occur more than any other.\" Since this is a proper fraction, probability will always be a number between 0 (representing an impossible event) and 1 (representing a certain event).\n", "
*For example, the probability of an even die roll is 3/6 = 1/2.*\n", "\n", - "This notebook will explore these concepts in a concrete way using Python code. The code is meant to be succint and explicit, and fast enough to handle sample spaces with millions of outcomes. If you need to handle trillions, you'll want a more efficient implementation. I also have [another notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/ProbabilityParadox.ipynb) that covers paradoxes in Probability Theory. " + "This notebook will explore these concepts in a concrete way using Python code. The code is meant to be succint and explicit, and fast enough to handle sample spaces with millions of outcomes. If you need to handle trillions, you'll want a more efficient implementation. I also have [another notebook](http://nbviewer.jupyter.org/url/norvig.com/ipython/ProbabilityParadox.ipynb) that covers paradoxes in Probability Theory.\n", + "\n", + "First some imports we will need later, and some type definitions:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from fractions import Fraction\n", + "from itertools import combinations, product\n", + "from typing import *\n", + "import math\n", + "import random\n", + "\n", + "Space = set # A sample space is a set of all possible outcomes\n", + "Event = set # An event is a subset of the sample space" ] }, { @@ -50,40 +71,32 @@ "metadata": { "button": false, "deletable": true, + "id": "Lcnp5JR3jrvP", "new_sheet": false, "run_control": { "read_only": false } }, "source": [ - "# `P` is for Probability\n", + "# P is for Probability\n", "\n", "The code below implements Laplace's quote directly: *Probability is thus simply a fraction whose numerator is the number of favorable cases and whose denominator is the number of all the cases possible.*" ] }, { "cell_type": "code", - "execution_count": 1, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, + "execution_count": 2, + "metadata": {}, "outputs": [], "source": [ - "from fractions import Fraction\n", + "def P(event: Event, space: Space) -> Fraction:\n", + " \"\"\"The probability of an event, given a sample space:\n", + " the number of favorable cases divided by the number of all the cases possible.\"\"\"\n", + " return Fraction(number_cases(favorable(event, space)),\n", + " number_cases(space))\n", "\n", - "def P(event, space): \n", - " \"The probability of an event, given a sample space.\"\n", - " return Fraction(cases(favorable(event, space)), \n", - " cases(space))\n", - "\n", - "favorable = set.intersection # Outcomes that are in the event and in the sample space\n", - "cases = len # The number of cases is the length, or size, of a set" + "favorable = set.intersection # Favorable cases are in the event and also in the sample space\n", + "number_cases = len # The number of cases is the length, or size, of a set" ] }, { @@ -91,13 +104,14 @@ "metadata": { "button": false, "deletable": true, + "id": "JTy695a1jrvQ", "new_sheet": false, "run_control": { "read_only": false } }, "source": [ - " \n", + "\n", "# Warm-up Problem: Die Roll" ] }, @@ -106,71 +120,47 @@ "metadata": { "button": false, "deletable": true, + "id": "3FK0zMz6jrvQ", "new_sheet": false, "run_control": { "read_only": false } }, "source": [ - "What's the probability of rolling an even number with a single six-sided fair die? Mathematicians traditionally use a single capital letter to denote a sample space; I'll use `D` for the die:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "Fraction(1, 2)" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "D = {1, 2, 3, 4, 5, 6} # a sample space\n", - "even = { 2, 4, 6} # an event\n", + "What's the probability of an even number with a single roll of a six-sided fair die? \n", "\n", - "P(even, D)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Good to confirm what we already knew. We can explore some other events:" + "Mathematicians traditionally use a single capital letter to denote a sample space; I'll use `D` for the die:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { - "collapsed": true + "button": false, + "deletable": true, + "id": "p42G7bpSjrvQ", + "new_sheet": false, + "outputId": "0d464c7f-fe16-45e0-bd0d-9cb8898eb344", + "run_control": { + "read_only": false + } }, "outputs": [], "source": [ - "prime = {2, 3, 5, 7, 11, 13}\n", - "odd = {1, 3, 5, 7, 9, 11, 13}" + "D = {1, 2, 3, 4, 5, 6} # the sample space for the die" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I can then define the event of rolling an even number, and ask for the probability of that event:" ] }, { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -184,20 +174,31 @@ } ], "source": [ - "P(odd, D)" + "even = {2, 4, 6} # the event of an even roll\n", + "\n", + "P(even, D)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2YxbcGMCjrvR" + }, + "source": [ + "Good to confirm what we already knew. We can explore some other events:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { - "collapsed": false + "id": "7Uuwz8b6jrvR" }, "outputs": [ { "data": { "text/plain": [ - "Fraction(5, 6)" + "Fraction(1, 2)" ] }, "execution_count": 5, @@ -206,14 +207,42 @@ } ], "source": [ - "P((even | prime), D) # The probability of an even or prime die roll" + "odd = {1, 3, 5, 7, 9, 11, 13}\n", + "\n", + "P(odd, D)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { - "collapsed": false + "id": "L5GOF5nKjrvR", + "outputId": "2058c35e-86a2-4b95-c248-7fe5a197b7ec" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Fraction(5, 6)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "prime = {2, 3, 5, 7, 11, 13}\n", + "\n", + "P((even | prime), D) # The probability of an even or prime die roll" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "jatr0HDFjrvR", + "outputId": "894b269a-b2a3-4d89-8500-712e587a78c0" }, "outputs": [ { @@ -222,7 +251,7 @@ "Fraction(1, 3)" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -235,6 +264,7 @@ "cell_type": "markdown", "metadata": { "button": false, + "id": "CCmQ-m1vjrvR", "new_sheet": false, "run_control": { "read_only": false @@ -243,16 +273,17 @@ "source": [ "# Card Problems\n", "\n", - "Consider dealing a hand of five playing cards. An individual card has a rank and suit, like `'J♥'` for the Jack of Hearts, and a `deck` has 52 cards:" + "Consider a deck of playiong cards. An individual card has a rank and suit, and will be represented as a string, like `'A♥'` for the Ace of Hearts. There are 4 suits and 13 ranks, so there are 52 cards in a deck:" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": { "button": false, - "collapsed": false, + "id": "GakwLmAKjrvR", "new_sheet": false, + "outputId": "866a4a08-4b37-4d3d-d23a-c504f9ff27bc", "run_control": { "read_only": false } @@ -264,32 +295,35 @@ "52" ] }, - "execution_count": 7, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "suits = u'♥♠♦♣'\n", - "ranks = u'AKQJT98765432'\n", + "suits = '♥♠♦♣'\n", + "ranks = 'AKQJT98765432'\n", "deck = [r + s for r in ranks for s in suits]\n", "len(deck)" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "fmlleKe5jrvR" + }, "source": [ - "Now I want to define `Hands` as the sample space of all 5-card combinations from `deck`. The function `itertools.combinations` does most of the work; we than concatenate each combination into a space-separated string:\n" + "Now I want to define `Hands` as the sample space of all possible 5-card hands that could be dealt from a deck. The function `itertools.combinations` does most of the work; we than concatenate the combinations into space-separateds string using `joins`:\n" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": { "button": false, - "collapsed": false, + "id": "MfQeXBn5jrvS", "new_sheet": false, + "outputId": "744a98ef-1ea6-48e7-bab1-ad73ba8e6994", "run_control": { "read_only": false } @@ -301,69 +335,46 @@ "2598960" ] }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import itertools\n", - "\n", - "def combos(items, n):\n", - " \"All combinations of n items; each combo as a space-separated str.\"\n", - " return set(map(' '.join, itertools.combinations(items, n)))\n", - "\n", - "Hands = combos(deck, 5)\n", - "len(Hands)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "There are too many hands to look at them all, but we can sample:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['Q♥ J♥ J♠ J♦ 6♠',\n", - " 'J♥ T♠ 9♥ 8♦ 3♣',\n", - " 'T♣ 8♣ 6♥ 5♠ 4♠',\n", - " 'A♦ 8♠ 7♥ 7♠ 2♣',\n", - " 'A♥ J♠ J♦ 9♠ 9♦',\n", - " 'K♠ 8♠ 8♦ 7♦ 5♦',\n", - " 'J♥ J♣ T♥ 5♠ 4♥']" - ] - }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "import random\n", - "random.sample(Hands, 7)" + "def joins(strings) -> Set[str]: return {' '.join(s) for s in strings}\n", + "\n", + "Hands = joins(combinations(deck, 5))\n", + "\n", + "len(Hands)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "VpEXxDZgjrvS" + }, + "source": [ + "There are over 2.5 million hands; too many to look at them all, but we can sample:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { - "collapsed": false + "id": "KMLal8AijrvS", + "outputId": "09ca6e36-1cc0-481b-df56-b3dea7bd34b8" }, "outputs": [ { "data": { "text/plain": [ - "['6♥', '5♦', 'Q♠', 'A♥', '9♣', '3♠', '8♥']" + "['T♥ 7♣ 6♦ 4♠ 2♥',\n", + " 'K♣ Q♦ 8♣ 6♦ 3♥',\n", + " 'A♦ 9♣ 7♥ 7♦ 4♣',\n", + " 'A♥ T♥ 8♠ 6♣ 5♥',\n", + " 'A♠ K♦ Q♥ 7♥ 3♦',\n", + " 'A♦ K♦ J♣ 3♦ 2♦',\n", + " 'K♦ 8♥ 6♠ 6♣ 2♣']" ] }, "execution_count": 10, @@ -372,13 +383,14 @@ } ], "source": [ - "random.sample(deck, 7)" + "random.sample(list(Hands), 7)" ] }, { "cell_type": "markdown", "metadata": { "button": false, + "id": "c34QOuuMjrvS", "new_sheet": false, "run_control": { "read_only": false @@ -393,8 +405,9 @@ "execution_count": 11, "metadata": { "button": false, - "collapsed": false, + "id": "QMeYmswHjrvS", "new_sheet": false, + "outputId": "f25a0634-dcce-43cf-8db5-c1cc88aa76ac", "run_control": { "read_only": false } @@ -421,6 +434,7 @@ "cell_type": "markdown", "metadata": { "button": false, + "id": "LsSlVHUcjrvS", "new_sheet": false, "run_control": { "read_only": false @@ -435,8 +449,9 @@ "execution_count": 12, "metadata": { "button": false, - "collapsed": false, + "id": "9EhqiYrsjrvS", "new_sheet": false, + "outputId": "38314ccf-2bb5-4439-9d43-3b80afc78975", "run_control": { "read_only": false } @@ -459,35 +474,43 @@ "P(four_kind, Hands)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To make these calculations we need to go through all 2.5 million hands, so this is not the fastest way to compute probabilities, but it is straightforward." + ] + }, { "cell_type": "markdown", "metadata": { "button": false, "deletable": true, + "id": "ww9hGNBVjrvS", "new_sheet": false, "run_control": { "read_only": false } }, "source": [ - "\n", - "\n", "# Urn Problems\n", "\n", - "Around 1700, Jacob Bernoulli wrote about removing colored balls from an urn in his landmark treatise *[Ars Conjectandi](https://en.wikipedia.org/wiki/Ars_Conjectandi)*, and ever since then, explanations of probability have relied on [urn problems](https://www.google.com/search?q=probability+ball+urn). (You'd think the urns would be empty by now.) \n", + "Around 1700, Jacob Bernoulli wrote about removing colored balls from an urn in his landmark treatise *[Ars Conjectandi](https://en.wikipedia.org/wiki/Ars_Conjectandi)*, and ever since then, explanations of probability have relied on [urn problems](https://www.google.com/search?q=probability+ball+urn). (You'd think the urns would be empty by now.)\n", "\n", - "![Jacob Bernoulli](http://www2.stetson.edu/~efriedma/periodictable/jpg/Bernoulli-Jacob.jpg)\n", - "
Jacob Bernoulli
1700
\n", + "||\n", + "|---|\n", + "|![Jacob Bernoulli](https://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Jakob_Bernoulli.jpg/205px-Jakob_Bernoulli.jpg)|\n", + "|Jacob Bernoulli (1655–1705)|\n", "\n", "For example, here is a three-part problem [adapted](http://mathforum.org/library/drmath/view/69151.html) from mathforum.org:\n", "\n", "> *An urn contains 6 blue, 9 red, and 8 white balls. We select six balls at random. What is the probability of each of these outcomes:*\n", - "\n", + ">\n", "> - *All balls are red*.\n", - "- *3 are blue, and 1 is red, and 2 are white, *.\n", - "- *Exactly 4 balls are white*.\n", + "> - *3 are blue, and 1 is red, and 2 are white*.\n", + "> - *Exactly 4 balls are white*.\n", "\n", - "We'll start by defining the contents of the urn. A `set` can't contain multiple objects that are equal to each other, so I'll call the blue balls `'B1'` through `'B6'`, rather than trying to have 6 balls all called `'B'`:" + "We'll start by defining the contents of the urn. We will need a way to name the balls so that we call tell blue from red, but also tell one red ball from another red ball. I'll use the function `names('R', 9)` to create names for 9 red balls:" ] }, { @@ -495,9 +518,10 @@ "execution_count": 13, "metadata": { "button": false, - "collapsed": false, "deletable": true, + "id": "fqxshx8yjrvS", "new_sheet": false, + "outputId": "28605592-fbef-4b8f-968e-d04d07426f52", "run_control": { "read_only": false } @@ -506,7 +530,7 @@ { "data": { "text/plain": [ - "{'B1',\n", + "['B1',\n", " 'B2',\n", " 'B3',\n", " 'B4',\n", @@ -528,7 +552,7 @@ " 'W5',\n", " 'W6',\n", " 'W7',\n", - " 'W8'}" + " 'W8']" ] }, "execution_count": 13, @@ -537,12 +561,11 @@ } ], "source": [ - "def balls(color, n):\n", - " \"A set of n numbered balls of the given color.\"\n", - " return {color + str(i)\n", - " for i in range(1, n + 1)}\n", + "def names(name: str, n) -> List[str]:\n", + " \"\"\"A list of `n` distinct names.\"\"\"\n", + " return [name + str(i) for i in range(1, n + 1)]\n", "\n", - "urn = balls('B', 6) | balls('R', 9) | balls('W', 8)\n", + "urn = names('B', 6) + names('R', 9) + names('W', 8)\n", "urn" ] }, @@ -551,13 +574,14 @@ "metadata": { "button": false, "deletable": true, + "id": "xkJWJNeGjrvS", "new_sheet": false, "run_control": { "read_only": false } }, "source": [ - "Now we can define the sample space, `U6`, as the set of all 6-ball combinations: " + "Now we can define the sample space, `U6`, as the set of all combinations of 6 balls: " ] }, { @@ -565,9 +589,10 @@ "execution_count": 14, "metadata": { "button": false, - "collapsed": false, "deletable": true, + "id": "7JeJXu7ujrvS", "new_sheet": false, + "outputId": "8c17ce77-5a51-44c0-96fa-7831941b0aff", "run_control": { "read_only": false } @@ -576,11 +601,11 @@ { "data": { "text/plain": [ - "['W1 R4 W3 R7 R2 W7',\n", - " 'R3 W1 B6 W3 R2 W7',\n", - " 'R3 W5 B4 B2 W8 W7',\n", - " 'W2 B1 R3 B2 R8 B5',\n", - " 'B1 R5 W6 R9 R7 B5']" + "['B2 B5 R9 W3 W6 W8',\n", + " 'B4 R4 R7 W1 W2 W4',\n", + " 'B1 B6 R1 W1 W4 W7',\n", + " 'B1 B3 B4 R1 R5 W3',\n", + " 'B1 B3 B5 R5 W3 W6']" ] }, "execution_count": 14, @@ -589,34 +614,38 @@ } ], "source": [ - "U6 = combos(urn, 6)\n", + "U6 = joins(combinations(urn, 6))\n", "\n", - "random.sample(U6, 5)" + "random.sample(list(U6), 5) # A sample from the U6 set" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "JDUY1Te6jrvS" + }, "source": [ - "Define `select` such that `select('R', 6)` is the event of picking 6 red balls from the urn:" + "Now I will define `select('R', 6)` to be the event of picking exactly 6 red balls from the urn:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { - "collapsed": true + "id": "YBIbRWikjrvS" }, "outputs": [], "source": [ - "def select(color, n, space=U6):\n", + "def select(color, n, space=U6) -> set:\n", " \"The subset of the sample space with exactly `n` balls of given `color`.\"\n", " return {s for s in space if s.count(color) == n}" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "GaKtWY7BjrvT" + }, "source": [ "Now I can answer the three questions:" ] @@ -625,7 +654,8 @@ "cell_type": "code", "execution_count": 16, "metadata": { - "collapsed": false + "id": "33QapmtBjrvT", + "outputId": "c47ae0e4-ac43-4c69-849f-cb4314f6d1b5" }, "outputs": [ { @@ -640,14 +670,15 @@ } ], "source": [ - "P(select('R', 6), U6) " + "P(select('R', 6), U6) # Probability that all 6 balls are red." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { - "collapsed": false + "id": "VdN2Mzy7jrvT", + "outputId": "c1c0c76e-0cda-4ad9-b63c-2639b347ea57" }, "outputs": [ { @@ -662,14 +693,15 @@ } ], "source": [ - "P(select('B', 3) & select('R', 1) & select('W', 2), U6)" + "P(select('B', 3) & select('R', 1) & select('W', 2), U6) # Probability that 3 are blue, and 1 is red, and 2 are white" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { - "collapsed": false + "id": "RhexMme5jrvT", + "outputId": "0c80f443-e8a4-45cf-93ad-9225aca9f8a5" }, "outputs": [ { @@ -684,7 +716,7 @@ } ], "source": [ - "P(select('W', 4), U6)" + "P(select('W', 4), U6) # Probability that xxactly 4 balls are white" ] }, { @@ -692,6 +724,7 @@ "metadata": { "button": false, "deletable": true, + "id": "5vAFCkojjrvU", "new_sheet": false, "run_control": { "read_only": false @@ -700,43 +733,53 @@ "source": [ "## Urn problems via arithmetic\n", "\n", - "Let's verify these calculations using basic arithmetic, rather than exhaustive counting. First, how many ways can I choose 6 out of 9 red balls? It could be any of the 9 for the first ball, any of 8 remaining for the second, and so on down to any of the remaining 4 for the sixth and final ball. But we don't care about the *order* of the six balls, so divide that product by the number of permutations of 6 things, which is 6!, giving us \n", - "9 × 8 × 7 × 6 × 5 × 4 / 6! = 84. In general, the number of ways of choosing *c* out of *n* items is (*n* choose *c*) = *n*! / ((*n* - *c*)! × c!).\n", - "We can translate that to code:" + "Let's verify these calculations using basic arithmetic, rather than exhaustive counting. First, how many ways can I choose 6 out of 9 red balls? It could be any of the 9 for the first ball, any of 8 remaining for the second, and so on down to any of the remaining 4 for the sixth and final ball. But we don't care about the *order* of the six balls, so divide that product by the number of permutations of 6 things, which is 6!, giving us\n", + "9 × 8 × 7 × 6 × 5 × 4 / 6! = 84. In general, the number of ways of choosing *k* out of *n* items is (*n* choose *k*) = *n*! / ((*n* - *c*)! × c!).\n", + "In Python 3.8+ that is provided as the `math.comb` function." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "E9OsEwL8jrvU" + }, + "source": [ + "Now we can verify the answers to the three problems. (Since `P` computes a ratio and `choose` computes a count,\n", + "I multiply the left-hand-side by `N`, the length of the sample space, to make both sides be counts.)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { - "button": false, - "collapsed": true, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } + "id": "_mruTBRfjrvU", + "outputId": "394ac4fe-9805-4e18-e770-1b4f58505cbf" }, "outputs": [], "source": [ - "from math import factorial\n", + "N = len(U6)\n", "\n", - "def choose(n, c):\n", - " \"Number of ways to choose c items from a list of n items.\"\n", - " return factorial(n) // (factorial(n - c) * factorial(c))" + "assert math.comb(9, 6) == 84\n", + "\n", + "assert (N * P(select('R', 6), U6) ==\n", + " math.comb(9, 6))\n", + "\n", + "assert (N * P(select('B', 3) & select('W', 2) & select('R', 1), U6) ==\n", + " math.comb(6, 3) * math.comb(8, 2) * math.comb(9, 1))\n", + "\n", + "assert (N * P(select('W', 4), U6) == \n", + " math.comb(8, 4) * math.comb(6 + 9, 2)) # (6 + 9 non-white balls)" ] }, { "cell_type": "code", "execution_count": 20, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "84" + "(Fraction(4, 4807), 0.0008321198252548367)" ] }, "execution_count": 20, @@ -745,99 +788,14 @@ } ], "source": [ - "choose(9, 6)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can verify the answers to the three problems. (Since `P` computes a ratio and `choose` computes a count,\n", - "I multiply the left-hand-side by `N`, the length of the sample space, to make both sides be counts.)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "N = len(U6)\n", - "\n", - "N * P(select('R', 6), U6) == choose(9, 6)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "N * P(select('B', 3) & select('W', 2) & select('R', 1), U6) == choose(6, 3) * choose(8, 2) * choose(9, 1)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "N * P(select('W', 4), U6) == choose(8, 4) * choose(6 + 9, 2) # (6 + 9 non-white balls)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can solve all these problems just by counting; all you ever needed to know about probability problems you learned from Sesame Street:\n", - "\n", - "![The Count](http://img2.oncoloring.com/count-dracula-number-thir_518b77b54ba6c-p.gif)\n", - "
The Count
1972—
" + "P(select('R', 6), U6) , math.comb(9, 6) / N" ] }, { "cell_type": "markdown", "metadata": { "button": false, + "id": "D7lXV37vjrvY", "new_sheet": false, "run_control": { "read_only": false @@ -849,179 +807,111 @@ "So far, we have accepted Laplace's assumption that *nothing leads us to expect that any one of these cases should occur more than any other*.\n", "In real life, we often get outcomes that are not equiprobable--for example, a loaded die favors one side over the others. We will introduce three more vocabulary items:\n", "\n", - "* [Frequency](https://en.wikipedia.org/wiki/Frequency_%28statistics%29): a non-negative number describing how often an outcome occurs. Can be a count like 5, or a ratio like 1/6.\n", - "\n", - "* [Distribution](http://mathworld.wolfram.com/StatisticalDistribution.html): A mapping from outcome to frequency of that outcome. We will allow sample spaces to be distributions. \n", - "\n", + "* [Frequency](https://en.wikipedia.org/wiki/Frequency_%28statistics%29): a non-negative number describing how often an outcome occurs. It Can be a count like 5, or a ratio like 1/6.\n", + "* [Distribution](http://mathworld.wolfram.com/StatisticalDistribution.html): A mapping from outcome to frequency of that outcome. We will allow a sample spaces to be either a set (of equi-probable outcomes) or a distribution.\n", "* [Probability Distribution](https://en.wikipedia.org/wiki/Probability_distribution): A probability distribution\n", - "is a distribution whose frequencies sum to 1. \n", + "is a distribution whose frequencies sum to 1.\n", "\n", "\n", - "I could implement distributions with `Dist = dict`, but instead I'll make `Dist` a subclass `collections.Counter`:" + "I'll implemet `Dist` as a subclass of `Counter`, and re-define the type `Space` to be a set or a `Dist`." ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 21, "metadata": { - "collapsed": false + "id": "15XeSxtwjrvY" }, "outputs": [], "source": [ - "from collections import Counter\n", - " \n", - "class Dist(Counter): \n", - " \"A Distribution of {outcome: frequency} pairs.\"" + "class Dist(Counter):\n", + " \"A Distribution of {outcome: frequency} pairs.\"\n", + "\n", + "Space = Union[set, Dist]" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "v1UgD04cjrvY" + }, "source": [ - "Because a `Dist` is a `Counter`, we can initialize it in any of the following ways:" + "Because a `Dist` is a `Counter`, we can initialize it three different ways:\n", + "- With a collection of outcomes (equiprobable or not).\n", + "- With a mapping of `{outcome: frequency}` pairs.\n", + "- With keyword arguments, each being assigned a frequency number.\n", + "\n", + "You can get the same result with any of the three ways:" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 22, "metadata": { - "collapsed": false + "id": "lF98Mu_XjrvY", + "outputId": "fd3e1a79-c821-4500-9f56-c1369076e4c2" }, - "outputs": [ - { - "data": { - "text/plain": [ - "Dist({1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1})" - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# A set of equiprobable outcomes:\n", - "Dist({1, 2, 3, 4, 5, 6})" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "Dist({'H': 5, 'T': 4})" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# A collection of outcomes, with repetition indicating frequency:\n", - "Dist('THHHTTHHT')" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "Dist({'H': 5, 'T': 4})" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# A mapping of {outcome: frequency} pairs:\n", - "Dist({'H': 5, 'T': 4})" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Keyword arguments:\n", - "Dist(H=5, T=4) == Dist({'H': 5}, T=4) == Dist('TTTT', H=5)" + "assert Dist('THHHTTHHT') == Dist({'H': 5, 'T': 4}) == Dist(H=5, T=4)" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "GzAMe7ZIjrvY" + }, "source": [ "Now I will modify the code to handle distributions.\n", "Here's my plan:\n", "\n", - "- Sample spaces and events can both be specified as either a `set` or a `Dist`.\n", - "- The sample space can be a non-probability distribution like `Dist(H=50, T=50)`; the results\n", - "will be the same as if the sample space had been a true probability distribution like `Dist(H=1/2, T=1/2)`.\n", - "- The function `cases` now sums the frequencies in a distribution (it previously counted the length).\n", - "- The function `favorable` now returns a `Dist` of favorable outcomes and their frequencies (not a `set`).\n", - "- I will redefine `Fraction` to use `\"/\"`, not `fractions.Fraction`, because frequencies might be floats.\n", - "- `P` is unchanged.\n" + "- The function `P` is unchanged. Laplace's advice still stands!\n", + "- A sample space can be either a set or a distribution, so I will redefine three helper functions:\n", + " - `number_cases` now sums the frequencies in a distribution (it previously counted the length).\n", + " - `favorable` now returns a `Dist` of favorable outcomes and their frequencies (not a `set`).\n", + " - `Fraction` now uses `\"/\"`, not `fractions.Fraction`, because frequencies might be floats.\n", + "- The new function `cast(object, type)` converts an object to the given type (if it is not already of that type)." ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 23, "metadata": { - "collapsed": false + "id": "Tt0iAITXjrvY" }, "outputs": [], "source": [ - "def cases(outcomes): \n", - " \"The total frequency of all the outcomes.\"\n", - " return sum(Dist(outcomes).values())\n", + "def number_cases(outcomes) -> float:\n", + " \"\"\"The total frequency of all the outcomes.\"\"\"\n", + " return sum(cast(outcomes, Dist).values())\n", "\n", - "def favorable(event, space):\n", - " \"A distribution of outcomes from the sample space that are in the event.\"\n", - " space = Dist(space)\n", - " return Dist({x: space[x] \n", - " for x in space if x in event})\n", + "def favorable(event: Event, space: Space) -> Dist:\n", + " \"\"\"A distribution of outcomes from the sample space that are in the event.\"\"\"\n", + " space = cast(space, Dist)\n", + " return Dist({x: space[x] for x in space if x in event})\n", "\n", - "def Fraction(n, d): return n / d" + "def Fraction(n, d): return n / d\n", + "\n", + "def cast(object, typ: Type) -> object:\n", + " \"\"\"Convert `object` to `typ`, unless it is already of type `typ`.\"\"\"\n", + " return object if isinstance(object, typ) else typ(object)" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "HUAFGxQpjrvY" + }, "source": [ "For example, here's the probability of rolling an even number with a crooked die that is loaded to prefer 6:" ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 24, "metadata": { - "collapsed": false + "id": "Rwdr1hOOjrvY", + "outputId": "302150cb-66cf-47ac-ec4a-6bc86c515833" }, "outputs": [ { @@ -1030,7 +920,7 @@ "0.7" ] }, - "execution_count": 30, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -1043,20 +933,21 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "W5Oqm-f1jrvY" + }, "source": [ - "As another example, an [article](http://people.kzoo.edu/barth/math105/moreboys.pdf) gives the following counts for two-child families in Denmark, where `GB` means a family where the first child is a girl and the second a boy (I'm aware that not all births can be classified as the binary \"boy\" or \"girl,\" but the data was reported that way):\n", + "## Example: Birth Counts\n", "\n", - " GG: 121801 GB: 126840\n", - " BG: 127123 BB: 135138" + "As another example, an [article](http://people.kzoo.edu/barth/math105/moreboys.pdf) gives the following counts for two-child families in Denmark, where `GB` means a family where the first-born child is a girl and the second a boy (I'm aware that not all births can be classified as the binary \"boy\" or \"girl,\" but this particular data set was reported that way):" ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 25, "metadata": { "button": false, - "collapsed": false, + "id": "bizO1Ic4jrvY", "new_sheet": false, "run_control": { "read_only": false @@ -1068,12 +959,40 @@ " BG=127123, BB=135138)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I can define some events:" + ] + }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 26, "metadata": { - "collapsed": false + "id": "wSgMO5VYjrvZ", + "outputId": "0e10ee5c-6a81-45b4-e916-57af163802de" }, + "outputs": [], + "source": [ + "first_girl = {'GG', 'GB'}\n", + "second_girl = {'GG', 'BG'}\n", + "first_boy = {'BB', 'BG'}\n", + "second_boy = {'BB', 'GB'}\n", + "same = {'GG', 'BB'}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And ask for the probability that, say, the first or second child is a girl, or that the two children have the same sex:" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, "outputs": [ { "data": { @@ -1081,21 +1000,21 @@ "0.48667063350701306" ] }, - "execution_count": 32, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "first_girl = {'GG', 'GB'}\n", "P(first_girl, DK)" ] }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 28, "metadata": { - "collapsed": false + "id": "alGEqnOxjrvZ", + "outputId": "fb9b2cbc-4e25-4e2c-a828-fd3a563f7901" }, "outputs": [ { @@ -1104,37 +1023,19 @@ "0.4872245557856497" ] }, - "execution_count": 33, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "second_girl = {'GG', 'BG'}\n", "P(second_girl, DK)" ] }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "This says that the probability of a girl is somewhere between 48% and 49%. The probability of a girl is very slightly higher for the second child. \n", - "\n", - "Given the first child, are you more likely to have a second child of the same sex?" - ] - }, { "cell_type": "code", - "execution_count": 34, - "metadata": { - "collapsed": false - }, + "execution_count": 29, + "metadata": {}, "outputs": [ { "data": { @@ -1142,13 +1043,12 @@ "0.5029124959385557" ] }, - "execution_count": 34, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "same = {'GG', 'BB'}\n", "P(same, DK)" ] }, @@ -1156,13 +1056,14 @@ "cell_type": "markdown", "metadata": { "button": false, + "id": "-sxc-yYxjrvZ", "new_sheet": false, "run_control": { "read_only": false } }, "source": [ - "Yes, but only by about 0.3%." + "The numbers say that you are slighltly more likely to have a second child of the same sex, but only by about 0.3%." ] }, { @@ -1170,6 +1071,7 @@ "metadata": { "button": false, "deletable": true, + "id": "hDmhQHsvjrvZ", "new_sheet": false, "run_control": { "read_only": false @@ -1187,11 +1089,11 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 30, "metadata": { "button": false, - "collapsed": true, "deletable": true, + "id": "nb3OdU1BjrvZ", "new_sheet": false, "run_control": { "read_only": false @@ -1199,7 +1101,7 @@ }, "outputs": [], "source": [ - "def even(n): return n % 2 == 0" + "def even(n: int) -> bool: return n % 2 == 0" ] }, { @@ -1207,6 +1109,7 @@ "metadata": { "button": false, "deletable": true, + "id": "LXdsmLnfjrvZ", "new_sheet": false, "run_control": { "read_only": false @@ -1218,11 +1121,11 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 31, "metadata": { "button": false, - "collapsed": true, "deletable": true, + "id": "5ZWWAjJnjrvZ", "new_sheet": false, "run_control": { "read_only": false @@ -1230,20 +1133,22 @@ }, "outputs": [], "source": [ + "Event = Union[set, Callable]\n", + "\n", "def favorable(event, space):\n", - " \"A distribution of outcomes from the sample space that are in the event.\"\n", + " \"\"\"A distribution of outcomes from the sample space that are in the event.\"\"\"\n", " if callable(event):\n", " event = {x for x in space if event(x)}\n", - " space = Dist(space)\n", - " return Dist({x: space[x] \n", - " for x in space if x in event})" + " space = cast(space, Dist)\n", + " return Dist({x: space[x] for x in space if x in event})" ] }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 32, "metadata": { - "collapsed": false + "id": "L5cVog-ojrvZ", + "outputId": "65622e94-38d0-44ea-ce07-1010cd3a4cd9" }, "outputs": [ { @@ -1252,7 +1157,7 @@ "Dist({2: 1, 4: 1, 6: 1})" ] }, - "execution_count": 37, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -1263,9 +1168,10 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 33, "metadata": { - "collapsed": false + "id": "ng1tYqPHjrvZ", + "outputId": "76c65bf4-c022-4eec-c7bd-c87bd87f017d" }, "outputs": [ { @@ -1274,7 +1180,7 @@ "0.5" ] }, - "execution_count": 38, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -1285,55 +1191,79 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "A4NNZhJXjrvZ" + }, "source": [ - "I'll define `die` to make a sample space for an *n*-sided die:" + "I'll define `die(s)` to make a sample space for an *s*-sided die, and `roll(r, s)` to make a sample space for the sum of rolling *r* *s*-sided dice:" ] }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 34, "metadata": { - "collapsed": true + "id": "r_OXRoIujrvZ" }, "outputs": [], "source": [ - "def die(n): return set(range(1, n + 1))" + "def die(s: int) -> Space: \n", + " \"\"\"The sample space for an s-sided die.\"\"\"\n", + " return set(range(1, s + 1))\n", + "\n", + "def roll(r: int, s: int) -> Space:\n", + " \"\"\"The sample space for rolling `r` s-sided dice and summing them.\"\"\"\n", + " return Dist(map(sum, product(die(s), repeat=r)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For example, here's the distribution for the sum of two six-sided dice:" ] }, { "cell_type": "code", - "execution_count": 40, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, + "execution_count": 35, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "Dist({2: 1, 4: 1, 6: 1, 8: 1, 10: 1, 12: 1})" + "Dist({2: 1, 3: 2, 4: 3, 5: 4, 6: 5, 7: 6, 8: 5, 9: 4, 10: 3, 11: 2, 12: 1})" ] }, - "execution_count": 40, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "favorable(even, die(12))" + "roll(2, 6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can check if various dice-related sample spaces are odd or even, or prime:" ] }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "def is_prime(n) -> bool: return (n > 1 and not any(n % i == 0 for i in range(2, n)))" + ] + }, + { + "cell_type": "code", + "execution_count": 37, "metadata": { - "collapsed": false + "id": "FxLyaZ5BjrvZ", + "outputId": "3c77cbe8-99a7-4854-9e7b-38a6e9ed4199" }, "outputs": [ { @@ -1342,7 +1272,7 @@ "0.5" ] }, - "execution_count": 41, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -1353,9 +1283,33 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 38, "metadata": { - "collapsed": false + "id": "EqoaurrSjrva", + "outputId": "aa1a002d-fe3b-427b-9b65-7b7a70163cca" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.45454545454545453" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P(even, die(11))" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "id": "8rlgl6sGjrva", + "outputId": "245acf34-0f5a-47f8-b1db-44cd349b5613" }, "outputs": [ { @@ -1364,26 +1318,84 @@ "0.5" ] }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P(prime, die(6))" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.4166666666666667" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P(prime, roll(2, 6))" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.4166666666666667" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P(prime, die(12))" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.3" + ] + }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "P(even, die(2000))" + "P(prime, die(20))" ] }, { "cell_type": "code", "execution_count": 43, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "0.49975012493753124" + "0.0875" ] }, "execution_count": 43, @@ -1392,98 +1404,154 @@ } ], "source": [ - "P(even, die(2001))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "We can define more interesting events using predicates; for example we can determine the probability that the sum of rolling *d* 6-sided dice is prime:" + "P(prime, roll(2, 20))" ] }, { "cell_type": "code", "execution_count": 44, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, + "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "P(is_prime, sum_dice(1)) = 0.5\n", - "P(is_prime, sum_dice(2)) = 0.417\n", - "P(is_prime, sum_dice(3)) = 0.338\n", - "P(is_prime, sum_dice(4)) = 0.333\n", - "P(is_prime, sum_dice(5)) = 0.317\n", - "P(is_prime, sum_dice(6)) = 0.272\n", - "P(is_prime, sum_dice(7)) = 0.242\n", - "P(is_prime, sum_dice(8)) = 0.236\n" - ] + "data": { + "text/plain": [ + "0.002275" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "def sum_dice(d): return Dist(sum(dice) for dice in itertools.product(D, repeat=d))\n", - "\n", - "def is_prime(n): return (n > 1 and not any(n % i == 0 for i in range(2, n)))\n", - "\n", - "for d in range(1, 9):\n", - " p = P(is_prime, sum_dice(d))\n", - " print(\"P(is_prime, sum_dice({})) = {}\".format(d, round(p, 3)))" + "P(prime, roll(4, 20))" ] }, { "cell_type": "markdown", "metadata": {}, + "source": [ + "# Conditional Probability\n", + "\n", + "Conditional Probability is used to answer questions of the form \"What is the probability of event *X*, given that event *Y* has occurred?\" The \"given *Y* has occurred\" part makes a new sample space, one that is *favorable* to the event *Y*. So I'll define `given` to be the same function as `favorable`:" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "given = favorable" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For example, what's the probability that the second child is a girl, given that the first is a girl (with the Denmark data)? And how does that compare to the case where the first is a boy, or is unspecified?" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.4898669165584115" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P(second_girl, given(first_girl, DK))" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.48471942072973107" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P(second_girl, given(first_boy, DK))" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.4872245557856497" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P(second_girl, DK)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Ywi2NzMFjrva" + }, "source": [ "# Fermat and Pascal: The Unfinished Game\n", "\n", "\n", - "
Pierre de Fermat
1654\n", - "
Blaise Pascal]
1654\n", + "
Pierre de Fermat (1607–1665)\n", + "
Blaise Pascal (1623–1662)\n", "
\n", "\n", - "Consider a gambling game consisting of tossing a coin repeatedly. Player H wins the game as soon as a total of 10 heads come up, and T wins if a total of 10 tails come up before H wins. If the game is interrupted when H has 8 heads and T has 7 tails, how should the pot of money (which happens to be 100 Francs) be split? Here are some proposals, and arguments against them:\n", - "- It is uncertain, so just split the pot 50-50. \n", - "
*No, because surely H is more likely to win.*\n", - "- In proportion to each player's current score, so H gets a 8/(8+7) share. \n", - "
*No, because if the score was 0 heads to 1 tail, H should get more than 0/1.*\n", - "- In proportion to how many tosses the opponent needs to win, so H gets 3/(3+2). \n", - "
*This seems better, but no, if H is 9 away and T is only 1 away from winning, then it seems that giving H a 1/10 share is too much.*\n", + "Consider a two-player gambling game consisting of tossing a coin repeatedly. Player H wins as soon as a total of 10 heads come up, but player T wins if a total of 10 tails come up first. If the game is interrupted when H has 8 heads and T has 7 tails, how should the pot of money (which happens to be 100 Francs) be split? Here are some proposals, and arguments against them:\n", + "- It is uncertain, so just split the pot 50-50.\n", + "
*No, because surely H is more likely to win and thus deserves more.*\n", + "- In proportion to each player's current score, so H gets a 8/(8+7) share.\n", + "
*No, because if the score was 0 heads to 1 tail, H should surely deserve more than 0/1.*\n", + "- In proportion to how many tosses the opponent needs to win, so H gets 3/(3+2).\n", + "
*No, because if H is 9 away and T is only 1 away from winning, then it seems that giving H a 1/10 share is too generous.*\n", "\n", "In 1654, Blaise Pascal and Pierre de Fermat corresponded on this problem, with Fermat [writing](http://mathforum.org/isaac/problems/prob1.html):\n", "\n", ">Dearest Blaise,\n", - "\n", + ">\n", ">As to the problem of how to divide the 100 Francs, I think I have found a solution that you will find to be fair. Seeing as I needed only two points to win the game, and you needed 3, I think we can establish that after four more tosses of the coin, the game would have been over. For, in those four tosses, if you did not get the necessary 3 points for your victory, this would imply that I had in fact gained the necessary 2 points for my victory. In a similar manner, if I had not achieved the necessary 2 points for my victory, this would imply that you had in fact achieved at least 3 points and had therefore won the game. Thus, I believe the following list of possible endings to the game is exhaustive. I have denoted 'heads' by an 'h', and tails by a 't.' I have starred the outcomes that indicate a win for myself.\n", - "\n", + ">\n", "> h h h h * h h h t * h h t h * h h t t *\n", "> h t h h * h t h t * h t t h * h t t t\n", "> t h h h * t h h t * t h t h * t h t t\n", "> t t h h * t t h t t t t h t t t t\n", - "\n", - ">I think you will agree that all of these outcomes are equally likely. Thus I believe that we should divide the stakes by the ration 11:5 in my favor, that is, I should receive (11/16)×100 = 68.75 Francs, while you should receive 31.25 Francs.\n", - "\n", - "\n", + "> \n", + ">\n", + ">I think you will agree that all of these outcomes are equally likely. Thus I believe that we should divide the stakes by the ratio 11:5 in my favor, that is, I should receive (11/16)×100 = 68.75 Francs, while you should receive 31.25 Francs.\n", + ">\n", + ">\n", ">I hope all is well in Paris,\n", - "\n", + ">\n", ">Your friend and colleague,\n", - "\n", + ">\n", ">Pierre\n", "\n", "Pascal agreed with this solution, and [replied](http://mathforum.org/isaac/problems/prob2.html) with a generalization that made use of his previous invention, Pascal's Triangle. There's even [a book](https://smile.amazon.com/Unfinished-Game-Pascal-Fermat-Seventeenth-Century/dp/0465018963?sa-no-redirect=1) about it.\n", @@ -1491,202 +1559,59 @@ "We can solve the problem with the tools we have:" ] }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "def win_unfinished_game(h, t):\n", - " \"The probability that H will win the unfinished game, given the number of points needed by H and T to win.\"\n", - " return P(at_least(h, 'h'), finishes(h, t))\n", - "\n", - "def at_least(n, item):\n", - " \"The event of getting at least n instances of item in an outcome.\"\n", - " return lambda outcome: outcome.count(item) >= n\n", - " \n", - "def finishes(h, t):\n", - " \"All finishes of a game where player H needs h points to win and T needs t.\"\n", - " tosses = ['ht'] * (h + t - 1)\n", - " return set(itertools.product(*tosses))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can generate the 16 equiprobable finished that Pierre wrote about:" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{('h', 'h', 'h', 'h'),\n", - " ('h', 'h', 'h', 't'),\n", - " ('h', 'h', 't', 'h'),\n", - " ('h', 'h', 't', 't'),\n", - " ('h', 't', 'h', 'h'),\n", - " ('h', 't', 'h', 't'),\n", - " ('h', 't', 't', 'h'),\n", - " ('h', 't', 't', 't'),\n", - " ('t', 'h', 'h', 'h'),\n", - " ('t', 'h', 'h', 't'),\n", - " ('t', 'h', 't', 'h'),\n", - " ('t', 'h', 't', 't'),\n", - " ('t', 't', 'h', 'h'),\n", - " ('t', 't', 'h', 't'),\n", - " ('t', 't', 't', 'h'),\n", - " ('t', 't', 't', 't')}" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "finishes(2, 3)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And we can find the 11 of them that are favorable to player `H`:" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "Dist({('h', 'h', 'h', 'h'): 1,\n", - " ('h', 'h', 'h', 't'): 1,\n", - " ('h', 'h', 't', 'h'): 1,\n", - " ('h', 'h', 't', 't'): 1,\n", - " ('h', 't', 'h', 'h'): 1,\n", - " ('h', 't', 'h', 't'): 1,\n", - " ('h', 't', 't', 'h'): 1,\n", - " ('t', 'h', 'h', 'h'): 1,\n", - " ('t', 'h', 'h', 't'): 1,\n", - " ('t', 'h', 't', 'h'): 1,\n", - " ('t', 't', 'h', 'h'): 1})" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "favorable(at_least(2, 'h'), finishes(2, 3))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": false - }, - "source": [ - "Finally, we can answer the question:" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "68.75" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "100 * win_unfinished_game(2, 3)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We agree with Pascal and Fermat; we're in good company!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Newton's Answer to a Problem by Pepys\n", - "\n", - "\n", - "
Isaac Newton
1693
\n", - "
Samuel Pepys
1693
\n", - "
\n", - "\n", - "Let's jump ahead from 1654 all the way to 1693, [when](http://fermatslibrary.com/s/isaac-newton-as-a-probabilist) Samuel Pepys wrote to Isaac Newton posing the problem:\n", - "\n", - "> Which of the following three propositions has the greatest chance of success? \n", - " 1. Six fair dice are tossed independently and at least one “6” appears. \n", - " 2. Twelve fair dice are tossed independently and at least two “6”s appear. \n", - " 3. Eighteen fair dice are tossed independently and at least three “6”s appear.\n", - " \n", - "Newton was able to answer the question correctly (although his reasoning was not quite right); let's see how we can do. Since we're only interested in whether a die comes up as \"6\" or not, we can define a single die like this:" - ] - }, { "cell_type": "code", "execution_count": 49, "metadata": { - "collapsed": false + "id": "FzdjxDZejrva" }, "outputs": [], "source": [ - "die6 = Dist({6: 1/6, '-': 5/6})" + "def at_least(n, item) -> Event:\n", + " \"The event of getting at least n instances of item in an outcome.\"\n", + " return lambda outcome: outcome.count(item) >= n\n", + "\n", + "def all_finishes(tosses: int) -> Set[tuple]:\n", + " \"All finishes of a game with `tosses` more tosses.\"\n", + " return joins(product(*['ht'] * tosses))" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "Mib-C0yBjrva" + }, "source": [ - "Next we can define the joint distribution formed by combining two independent distribution like this:" + "We can generate the 16 equiprobable 4-toss finishes that Pierre wrote about:" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { - "collapsed": false + "id": "x3kP8N0Vjrva", + "outputId": "e14967c2-9a09-4d39-cd9e-af911aed12a6" }, "outputs": [ { "data": { "text/plain": [ - "Dist({'--': 0.6944444444444445,\n", - " '-6': 0.1388888888888889,\n", - " '6-': 0.1388888888888889,\n", - " '66': 0.027777777777777776})" + "{'h h h h',\n", + " 'h h h t',\n", + " 'h h t h',\n", + " 'h h t t',\n", + " 'h t h h',\n", + " 'h t h t',\n", + " 'h t t h',\n", + " 'h t t t',\n", + " 't h h h',\n", + " 't h h t',\n", + " 't h t h',\n", + " 't h t t',\n", + " 't t h h',\n", + " 't t h t',\n", + " 't t t h',\n", + " 't t t t'}" ] }, "execution_count": 50, @@ -1695,50 +1620,40 @@ } ], "source": [ - "def joint(A, B, combine='{}{}'.format):\n", - " \"\"\"The joint distribution of two independent distributions. \n", - " Result is all entries of the form {'ab': frequency(a) * frequency(b)}\"\"\"\n", - " return Dist({combine(a, b): A[a] * B[b]\n", - " for a in A for b in B})\n", - "\n", - "joint(die6, die6)" + "all_finishes(4)" ] }, { "cell_type": "markdown", "metadata": { - "collapsed": false + "id": "sK2gLIBGjrva" }, "source": [ - "And the joint distribution from rolling *n* dice:" + "And we can find the 11 of them that are favorable to player `H`:" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { - "collapsed": false + "id": "Cirm14DBjrva", + "outputId": "d87bc76e-a2a5-4110-991c-29843256059b" }, "outputs": [ { "data": { "text/plain": [ - "Dist({'----': 0.48225308641975323,\n", - " '---6': 0.09645061728395063,\n", - " '--6-': 0.09645061728395063,\n", - " '--66': 0.019290123456790122,\n", - " '-6--': 0.09645061728395063,\n", - " '-6-6': 0.019290123456790122,\n", - " '-66-': 0.019290123456790122,\n", - " '-666': 0.0038580246913580245,\n", - " '6---': 0.09645061728395063,\n", - " '6--6': 0.019290123456790126,\n", - " '6-6-': 0.019290123456790126,\n", - " '6-66': 0.0038580246913580245,\n", - " '66--': 0.019290123456790126,\n", - " '66-6': 0.0038580246913580245,\n", - " '666-': 0.0038580246913580245,\n", - " '6666': 0.0007716049382716049})" + "Dist({'h h t h': 1,\n", + " 'h t t h': 1,\n", + " 't h t h': 1,\n", + " 'h h h h': 1,\n", + " 'h h t t': 1,\n", + " 't t h h': 1,\n", + " 't h h t': 1,\n", + " 't h h h': 1,\n", + " 'h t h t': 1,\n", + " 'h t h h': 1,\n", + " 'h h h t': 1})" ] }, "execution_count": 51, @@ -1747,34 +1662,34 @@ } ], "source": [ - "def dice(n, die):\n", - " \"Joint probability distribution from rolling `n` dice.\"\n", - " if n == 1:\n", - " return die\n", - " else:\n", - " return joint(die, dice(n - 1, die))\n", - " \n", - "dice(4, die6)" + "favorable(at_least(2, 'h'), all_finishes(4))" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "collapsed": false, + "id": "s7RI7cp4jrva", + "jupyter": { + "outputs_hidden": false + } + }, "source": [ - "Now we are ready to determine which proposition is more likely to have the required number of sixes:" + "Finally, we can answer the question:" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { - "collapsed": false + "id": "gH5UuyDYjrva", + "outputId": "a7fd44c2-e7e1-47d0-e6ef-a9988e383f07" }, "outputs": [ { "data": { "text/plain": [ - "0.665102023319616" + "68.75" ] }, "execution_count": 52, @@ -1783,14 +1698,215 @@ } ], "source": [ - "P(at_least(1, '6'), dice(6, die6))" + "100 * P(at_least(2, 'h'), all_finishes(4))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "iS97I1shjrva" + }, + "source": [ + "Blaise deserves 68.75 francs. We agree with Pascal and Fermat; we're in good company!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Xf-FTePajrva" + }, + "source": [ + "# Newton's Answer to a Problem by Pepys\n", + "\n", + "\n", + "
Isaac Newton 1693
\n", + "
Samuel Pepys 1693
\n", + "
\n", + "\n", + "Let's jump ahead from 1654 all the way to 1693, [when](http://fermatslibrary.com/s/isaac-newton-as-a-probabilist) Samuel Pepys wrote to Isaac Newton posing the problem:\n", + "\n", + "> Which of the following three propositions has the greatest chance of success?\n", + " 1. Six fair dice are tossed independently and at least one “6” appears.\n", + " 2. Twelve fair dice are tossed independently and at least two “6”s appear.\n", + " 3. Eighteen fair dice are tossed independently and at least three “6”s appear.\n", + " \n", + "Newton was able to answer the question correctly (although his reasoning was not quite right); let's see how we can do. Since we're only interested in whether a die comes up as \"6\" or not, we can define a single die like this:" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { - "collapsed": false + "id": "4FdHEVLVjrva" + }, + "outputs": [], + "source": [ + "die6 = Dist({'6': 1/6, '.': 5/6})" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "qLn1d8tUjrva" + }, + "source": [ + "Next we can define the joint distribution formed by combining two independent distribution like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "id": "UfhfuDQ6jrvb", + "outputId": "bfdb7d58-5ab8-4c1e-aacd-5503fcfa8ed7" + }, + "outputs": [], + "source": [ + "def joint2(A: Dist, B: Dist, format_fn='{}{}'.format) -> Dist:\n", + " \"\"\"The joint distribution of two independent distributions.\n", + " Result is all entries of the form {'ab': frequency(a) * frequency(b)}\"\"\"\n", + " return Dist({format_fn(a, b): A[a] * B[b]\n", + " for a in A for b in B})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "(Note we pass in a format function to say how to combine the two outcomes. The default is to just concatenate them together, but it could be any function.)\n", + "\n", + "Here's the joint distribution of outcomes (not the sum) from rolling two dice:" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Dist({'66': 0.027777777777777776,\n", + " '6.': 0.1388888888888889,\n", + " '.6': 0.1388888888888889,\n", + " '..': 0.6944444444444445})" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "joint2(die6, die6)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false, + "id": "asYQEoI-jrvb", + "jupyter": { + "outputs_hidden": false + } + }, + "source": [ + "And here is the joint distribution for `n` copies of the same distribution:" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "id": "gDJ26cfGjrvb", + "outputId": "599ff7fe-e6e4-4dcf-eaa3-c8476001d50e" + }, + "outputs": [], + "source": [ + "def joint(n, dist: Dist, format_fn='{}{}'.format) -> Dist:\n", + " \"Joint probability distribution from rolling `n` dice.\"\n", + " if n == 1:\n", + " return dist\n", + " else:\n", + " return joint2(dist, joint(n - 1, dist, format_fn))" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": { + "id": "gDJ26cfGjrvb", + "outputId": "599ff7fe-e6e4-4dcf-eaa3-c8476001d50e" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Dist({'6666': 0.0007716049382716049,\n", + " '666.': 0.0038580246913580245,\n", + " '66.6': 0.0038580246913580245,\n", + " '66..': 0.019290123456790126,\n", + " '6.66': 0.0038580246913580245,\n", + " '6.6.': 0.019290123456790126,\n", + " '6..6': 0.019290123456790126,\n", + " '6...': 0.09645061728395063,\n", + " '.666': 0.0038580246913580245,\n", + " '.66.': 0.019290123456790122,\n", + " '.6.6': 0.019290123456790122,\n", + " '.6..': 0.09645061728395063,\n", + " '..66': 0.019290123456790122,\n", + " '..6.': 0.09645061728395063,\n", + " '...6': 0.09645061728395063,\n", + " '....': 0.48225308641975323})" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "joint(4, die6)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "xMgdWFuhjrvb" + }, + "source": [ + "Now we are ready to determine which proposition is more likely to have the required number of sixes:" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "id": "70egSPGTjrvb", + "outputId": "ce5f10d8-2ae7-4a9f-aeeb-63bae635c5be" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.665102023319616" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P(at_least(1, '6'), joint(6, die6))" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "id": "wawDwjKWjrvb", + "outputId": "baf788bc-531e-4bf8-c1cd-37fee6820ca7" }, "outputs": [ { @@ -1799,20 +1915,21 @@ "0.61866737373231" ] }, - "execution_count": 53, + "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "P(at_least(2, '6'), dice(12, die6))" + "P(at_least(2, '6'), joint(12, die6))" ] }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 60, "metadata": { - "collapsed": false + "id": "H_RtixGLjrvb", + "outputId": "06eab287-0557-46fb-8814-b94a24ad6e45" }, "outputs": [ { @@ -1821,18 +1938,20 @@ "0.5973456859477678" ] }, - "execution_count": 54, + "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "P(at_least(3, '6'), dice(18, die6))" + "P(at_least(3, '6'), joint(18, die6))" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "ZC6eE6XYjrvb" + }, "source": [ "We reach the same conclusion Newton did, that the best chance is rolling six dice." ] @@ -1841,6 +1960,7 @@ "cell_type": "markdown", "metadata": { "button": false, + "id": "khve5o3fjrvb", "new_sheet": false, "run_control": { "read_only": false @@ -1851,18 +1971,18 @@ "\n", "Here's another urn problem (actually a \"bag\" problem) [from](http://allendowney.blogspot.com/2011/10/my-favorite-bayess-theorem-problems.html) prolific Python/Probability pundit [Allen Downey ](http://allendowney.blogspot.com/):\n", "\n", - "> The blue M&M was introduced in 1995. Before then, the color mix in a bag of plain M&Ms was (30% Brown, 20% Yellow, 20% Red, 10% Green, 10% Orange, 10% Tan). Afterward it was (24% Blue , 20% Green, 16% Orange, 14% Yellow, 13% Red, 13% Brown). \n", - "A friend of mine has two bags of M&Ms, and he tells me that one is from 1994 and one from 1996. He won't tell me which is which, but he gives me one M&M from each bag. One is yellow and one is green. What is the probability that the yellow M&M came from the 1994 bag?\n", + "> The blue M&M was introduced in 1995. Before then, the color mix in a bag of plain M&Ms was (30% Brown, 20% Yellow, 20% Red, 10% Green, 10% Orange, 10% Tan). Afterward it was (24% Blue , 20% Green, 16% Orange, 14% Yellow, 13% Red, 13% Brown).\n", + "A friend of mine has two bags of M&Ms, and he tells me that one is from 1994 and one from 1996. He won't tell me which is which, but he randomly selects one M&M from each bag. One is yellow and one is green. What is the probability that the yellow M&M came from the 1994 bag?\n", "\n", "To solve this problem, we'll first create distributions for each bag: `bag94` and `bag96`:" ] }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 61, "metadata": { "button": false, - "collapsed": false, + "id": "4AapS83ujrvb", "new_sheet": false, "run_control": { "read_only": false @@ -1878,22 +1998,24 @@ "cell_type": "markdown", "metadata": { "button": false, + "id": "MM6M8MN3jrvb", "new_sheet": false, "run_control": { "read_only": false } }, "source": [ - "Next, define `MM` as the joint distribution—the sample space for picking one M&M from each bag. The outcome `'94:yellow 96:green'` means that a yellow M&M was selected from the 1994 bag and a green one from the 1996 bag. In this problem we don't get to see the actual outcome; we just see some evidence about the outcome, that it contains a yellow and a green." + "Next, define `MM` as the joint distribution–the sample space for picking one M&M from each bag. The outcome `'94:yellow 96:green'` means that a yellow M&M was selected from the 1994 bag and a green one from the 1996 bag. In this problem we don't get to see the actual outcome; we just see some evidence about the outcome, that it contains a yellow and a green." ] }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 62, "metadata": { "button": false, - "collapsed": false, + "id": "XWiKZWKrjrvb", "new_sheet": false, + "outputId": "db411dcf-9651-44f9-af86-f0331939a46e", "run_control": { "read_only": false } @@ -1903,50 +2025,50 @@ "data": { "text/plain": [ "Dist({'94:brown 96:blue': 720,\n", - " '94:brown 96:brown': 390,\n", " '94:brown 96:green': 600,\n", " '94:brown 96:orange': 480,\n", - " '94:brown 96:red': 390,\n", " '94:brown 96:yellow': 420,\n", - " '94:green 96:blue': 240,\n", - " '94:green 96:brown': 130,\n", - " '94:green 96:green': 200,\n", - " '94:green 96:orange': 160,\n", - " '94:green 96:red': 130,\n", - " '94:green 96:yellow': 140,\n", - " '94:orange 96:blue': 240,\n", - " '94:orange 96:brown': 130,\n", - " '94:orange 96:green': 200,\n", - " '94:orange 96:orange': 160,\n", - " '94:orange 96:red': 130,\n", - " '94:orange 96:yellow': 140,\n", - " '94:red 96:blue': 480,\n", - " '94:red 96:brown': 260,\n", - " '94:red 96:green': 400,\n", - " '94:red 96:orange': 320,\n", - " '94:red 96:red': 260,\n", - " '94:red 96:yellow': 280,\n", - " '94:tan 96:blue': 240,\n", - " '94:tan 96:brown': 130,\n", - " '94:tan 96:green': 200,\n", - " '94:tan 96:orange': 160,\n", - " '94:tan 96:red': 130,\n", - " '94:tan 96:yellow': 140,\n", + " '94:brown 96:red': 390,\n", + " '94:brown 96:brown': 390,\n", " '94:yellow 96:blue': 480,\n", - " '94:yellow 96:brown': 260,\n", " '94:yellow 96:green': 400,\n", " '94:yellow 96:orange': 320,\n", + " '94:yellow 96:yellow': 280,\n", " '94:yellow 96:red': 260,\n", - " '94:yellow 96:yellow': 280})" + " '94:yellow 96:brown': 260,\n", + " '94:red 96:blue': 480,\n", + " '94:red 96:green': 400,\n", + " '94:red 96:orange': 320,\n", + " '94:red 96:yellow': 280,\n", + " '94:red 96:red': 260,\n", + " '94:red 96:brown': 260,\n", + " '94:green 96:blue': 240,\n", + " '94:green 96:green': 200,\n", + " '94:green 96:orange': 160,\n", + " '94:green 96:yellow': 140,\n", + " '94:green 96:red': 130,\n", + " '94:green 96:brown': 130,\n", + " '94:orange 96:blue': 240,\n", + " '94:orange 96:green': 200,\n", + " '94:orange 96:orange': 160,\n", + " '94:orange 96:yellow': 140,\n", + " '94:orange 96:red': 130,\n", + " '94:orange 96:brown': 130,\n", + " '94:tan 96:blue': 240,\n", + " '94:tan 96:green': 200,\n", + " '94:tan 96:orange': 160,\n", + " '94:tan 96:yellow': 140,\n", + " '94:tan 96:red': 130,\n", + " '94:tan 96:brown': 130})" ] }, - "execution_count": 56, + "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "MM = joint(bag94, bag96, '94:{} 96:{}'.format)\n", + "MM = joint2(bag94, bag96, '94:{} 96:{}'.format)\n", "MM" ] }, @@ -1954,22 +2076,24 @@ "cell_type": "markdown", "metadata": { "button": false, + "id": "e80N-6s0jrvb", "new_sheet": false, "run_control": { "read_only": false } }, "source": [ - "We observe that \"One is yellow and one is green\":" + "We are given the observation that \"One is yellow and one is green\":" ] }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 63, "metadata": { "button": false, - "collapsed": false, + "id": "2GMvAOHQjrvb", "new_sheet": false, + "outputId": "c6f461b8-0269-41bc-b922-d6485a87627a", "run_control": { "read_only": false } @@ -1978,34 +2102,37 @@ { "data": { "text/plain": [ - "Dist({'94:green 96:yellow': 140, '94:yellow 96:green': 400})" + "Dist({'94:yellow 96:green': 400, '94:green 96:yellow': 140})" ] }, - "execution_count": 57, + "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "def yellow_and_green(outcome): return 'yellow' in outcome and 'green' in outcome\n", + "def yellow_and_green(outcome: str) -> bool: return 'yellow' in outcome and 'green' in outcome\n", "\n", - "favorable(yellow_and_green, MM)" + "given(yellow_and_green, MM)" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "zb1IQU_ejrvb" + }, "source": [ - "Given this observation, we want to know \"What is the probability that the yellow M&M came from the 1994 bag?\"" + "We want to know \"What is the probability that the yellow M&M came from the 1994 bag, given the observation?\"" ] }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 64, "metadata": { "button": false, - "collapsed": false, + "id": "FCtLAPQfjrvb", "new_sheet": false, + "outputId": "9c67a8e5-d521-4f39-de5c-54e893de388c", "run_control": { "read_only": false } @@ -2017,37 +2144,40 @@ "0.7407407407407407" ] }, - "execution_count": 58, + "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "def yellow94(outcome): return '94:yellow' in outcome\n", + "def yellow94(outcome: str) -> bool: return '94:yellow' in outcome\n", "\n", - "P(yellow94, favorable(yellow_and_green, MM))" + "P(yellow94, given(yellow_and_green, MM))" ] }, { "cell_type": "markdown", "metadata": { "button": false, + "id": "SSxTlftyjrvb", "new_sheet": false, "run_control": { "read_only": false } }, "source": [ - "So there is a 74% chance that the yellow comes from the 1994 bag.\n", + "So there is a 74% chance that the yellow M&M comes from the 1994 bag.\n", "\n", "Answering this question was straightforward: just like all the other probability problems, we simply create a sample space, and use `P` to pick out the probability of the event in question, given what we know about the outcome.\n", - "But in a sense it is curious that we were able to solve this problem with the same methodology as the others: this problem comes from a section titled **My favorite Bayes's Theorem Problems**, so one would expect that we'd need to invoke Bayes Theorem to solve it. The computation above shows that that is not necessary. \n", "\n", - "![Bayes](http://img1.ph.126.net/xKZAzeOv_mI8a4Lwq7PHmw==/2547911489202312541.jpg)\n", - "
Rev. Thomas Bayes
1701-1761\n", - "
\n", + "But in a sense it is curious that we were able to solve this problem with the same methodology as the others: this problem comes from a section of Downey's book titled **My favorite Bayes's Theorem Problems**, so one would expect that we'd need to invoke Bayes Theorem to solve it. The computation above shows that that is not necessary.\n", "\n", - "Of course, we *could* solve it using Bayes Theorem. Why is Bayes Theorem recommended? Because we are asked about the probability of an outcome given the evidence—the probability the yellow came from the 94 bag, given that there is a yellow and a green. But the problem statement doesn't directly tell us the probability of that outcome given the evidence; it just tells us the probability of the evidence given the outcome. \n", + "||\n", + "|---|\n", + "|![Bayes](https://upload.wikimedia.org/wikipedia/commons/d/d4/Thomas_Bayes.gif)|\n", + "|Rev. Thomas Bayes (1701-1761)|\n", + "\n", + "Of course, we *could* solve it using Bayes Theorem. Why is Bayes Theorem recommended? Because we are asked about the probability of an outcome given the evidence—the probability the yellow came from the 94 bag, given that there is a yellow and a green. But the problem statement doesn't directly tell us the probability of that outcome given the evidence; it just tells us the probability of the evidence given the outcome.\n", "\n", "Before we see the colors of the M&Ms, there are two hypotheses, `A` and `B`, both with equal probability:\n", "\n", @@ -2073,18 +2203,20 @@ " P(E | B) = 0.10 * 0.14 = 0.014\n", " P(A) = 0.5\n", " P(B) = 0.5\n", - " P(E) = P(E | A) * P(A) + P(E | B) * P(B) \n", + " P(E) = P(E | A) * P(A) + P(E | B) * P(B)\n", " = 0.04 * 0.5 + 0.014 * 0.5 = 0.027\n", " \n", "And we can get a final answer:\n", " \n", - " P(A | E) = P(E | A) * P(A) / P(E) \n", - " = 0.04 * 0.5 / 0.027 \n", + " P(A | E) = P(E | A) * P(A) / P(E)\n", + " = 0.04 * 0.5 / 0.027\n", " = 0.7407407407\n", " \n", - "You have a choice: Bayes Theorem allows you to do less calculation at the cost of more algebra; that is a great trade-off if you are working with pencil and paper. Enumerating the sample space allows you to do less algebra at the cost of more calculation; usually a good trade-off if you have a computer. But regardless of the approach you use, it is important to understand Bayes theorem and how it works.\n", + "You have a choice: Bayes Theorem allows you to do less calculation at the cost of more algebra; that is a great trade-off if you are working with pencil and paper. \n", "\n", - "There is one important question that Allen Downey does not address: *would you eat twenty-year-old M&Ms*?\n", + "Enumerating the sample space allows you to do less algebra at the cost of more calculation; usually a good trade-off if you have a computer. But regardless of the approach you use, it is important to understand Bayes theorem and how it works.\n", + "\n", + "There is one important question that Allen Downey does not address: *would you eat thirty-year-old M&Ms*?\n", "😨" ] }, @@ -2093,450 +2225,7 @@ "metadata": { "button": false, "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "
\n", - "\n", - "# Simulation\n", - "\n", - "Sometimes it is inconvenient, difficult, or even impossible to explicitly enumerate a sample space. Perhaps the sample space is infinite, or perhaps it is just very large and complicated (perhaps with a bunch of low-probability outcomes that don't seem very important). In that case, we might feel more confident in writing a program to *simulate* a random outcome. *Random sampling* from such a simulation\n", - "can give an accurate estimate of probability.\n", - "\n", - "# Simulating Monopoly\n", - "\n", - "![Mr. Monopoly](http://buckwolf.org/a.abcnews.com/images/Entertainment/ho_hop_go_050111_t.jpg)
[Mr. Monopoly](https://en.wikipedia.org/wiki/Rich_Uncle_Pennybags)
1940—\n", - "\n", - "Consider [problem 84](https://projecteuler.net/problem=84) from the excellent [Project Euler](https://projecteuler.net), which asks for the probability that a player in the game Monopoly ends a roll on each of the squares on the board. To answer this we need to take into account die rolls, chance and community chest cards, and going to jail (from the \"go to jail\" space, from a card, or from rolling doubles three times in a row). We do not need to take into account anything about acquiring properties or exchanging money or winning or losing the game, because these events don't change a player's location. \n", - "\n", - "A game of Monopoly can go on forever, so the sample space is infinite. Even if we limit the sample space to say, 1000 rolls, there are $21^{1000}$ such sequences of rolls, and even more possibilities when we consider drawing cards. So it is infeasible to explicitly represent the sample space. There are techniques for representing the problem as\n", - "a Markov decision problem (MDP) and solving it, but the math is complex (a [paper](https://faculty.math.illinois.edu/~bishop/monopoly.pdf) on the subject runs 15 pages).\n", - "\n", - "The simplest approach is to implement a simulation and run it for, say, a million rolls. Here is the code for a simulation:" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "from collections import deque as Deck # a Deck of community chest or chance cards\n", - "\n", - "# The Monopoly board, as specified by https://projecteuler.net/problem=84\n", - "(GO, A1, CC1, A2, T1, R1, B1, CH1, B2, B3,\n", - " JAIL, C1, U1, C2, C3, R2, D1, CC2, D2, D3, \n", - " FP, E1, CH2, E2, E3, R3, F1, F2, U2, F3, \n", - " G2J, G1, G2, CC3, G3, R4, CH3, H1, T2, H2) = board = range(40)\n", - "\n", - "# A card is either a square, a set of squares meaning advance to the nearest, \n", - "# a -3 to go back 3 spaces, or None meaning no change to location.\n", - "CC_deck = Deck([GO, JAIL] + 14 * [None])\n", - "CH_deck = Deck([GO, JAIL, C1, E3, H2, R1, -3, {U1, U2}] \n", - " + 2 * [{R1, R2, R3, R4}] + 6 * [None])\n", - "\n", - "def monopoly(rolls):\n", - " \"\"\"Simulate given number of dice rolls of a Monopoly game, \n", - " and return the counts of how often each square is visited.\"\"\"\n", - " counts = [0] * len(board)\n", - " doubles = 0 # Number of consecutive doubles rolled\n", - " random.shuffle(CC_deck)\n", - " random.shuffle(CH_deck)\n", - " goto(GO)\n", - " for _ in range(rolls):\n", - " d1, d2 = random.randint(1, 6), random.randint(1, 6)\n", - " doubles = (doubles + 1 if d1 == d2 else 0)\n", - " goto(here + d1 + d2)\n", - " if here == G2J or doubles == 3:\n", - " goto(JAIL)\n", - " doubles = 0\n", - " elif here in (CC1, CC2, CC3):\n", - " do_card(CC_deck)\n", - " elif here in (CH1, CH2, CH3):\n", - " do_card(CH_deck)\n", - " counts[here] += 1\n", - " return counts\n", - "\n", - "def goto(square):\n", - " \"Update 'here' to be this square (and handle passing GO).\"\n", - " global here\n", - " here = square % len(board) \n", - "\n", - "def do_card(deck):\n", - " \"Take the top card from deck and do what it says.\"\n", - " card = deck.popleft() # The top card\n", - " deck.append(card) # Move top card to bottom of deck\n", - " if card == None: # Don't move\n", - " pass\n", - " elif card == -3: # Go back 3 spaces\n", - " goto(here - 3)\n", - " elif isinstance(card, set): # Advance to next railroad or utility\n", - " next1 = min({place for place in card if place > here} or card)\n", - " goto(next1)\n", - " else: # Go to destination named on card\n", - " goto(card)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "Let's run the simulation for a million dice rolls:" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [], - "source": [ - "counts = monopoly(10**6)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "And print a table of square names and their percentages:" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "metadata": { - "button": false, - "collapsed": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "JAIL 6.23%\n", - "E3 3.21%\n", - "R3 3.09%\n", - "GO 3.09%\n", - "D3 3.08%\n", - "R1 3.00%\n", - "D2 2.94%\n", - "R2 2.91%\n", - "E1 2.85%\n", - "FP 2.84%\n", - "U2 2.80%\n", - "D1 2.78%\n", - "E2 2.72%\n", - "C1 2.69%\n", - "F1 2.69%\n", - "F2 2.66%\n", - "G2 2.64%\n", - "G1 2.64%\n", - "H2 2.63%\n", - "F3 2.61%\n", - "U1 2.61%\n", - "CC2 2.60%\n", - "G3 2.48%\n", - "C3 2.46%\n", - "R4 2.41%\n", - "CC3 2.40%\n", - "C2 2.39%\n", - "T1 2.34%\n", - "B2 2.31%\n", - "B3 2.29%\n", - "B1 2.26%\n", - "H1 2.21%\n", - "T2 2.17%\n", - "A2 2.15%\n", - "A1 2.15%\n", - "CC1 1.88%\n", - "CH2 1.07%\n", - "CH3 0.91%\n", - "CH1 0.82%\n", - "G2J 0.00%\n" - ] - } - ], - "source": [ - "property_names = \"\"\"\n", - " GO, A1, CC1, A2, T1, R1, B1, CH1, B2, B3,\n", - " JAIL, C1, U1, C2, C3, R2, D1, CC2, D2, D3, \n", - " FP, E1, CH2, E2, E3, R3, F1, F2, U2, F3, \n", - " G2J, G1, G2, CC3, G3, R4, CH3, H1, T2, H2\"\"\".replace(',', ' ').split()\n", - "\n", - "for (c, n) in sorted(zip(counts, property_names), reverse=True):\n", - " print('{:4} {:.2%}'.format(n, c / sum(counts)))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, - "new_sheet": false, - "run_control": { - "read_only": false - } - }, - "source": [ - "There is one square far above average: `JAIL`, at a little over 6%. There are four squares far below average: the three chance squares, `CH1`, `CH2`, and `CH3`, at around 1% (because 10 of the 16 chance cards send the player away from the square), and the \"Go to Jail\" square, which has a frequency of 0 because you can't end a turn there. The other squares are around 2% to 3% each, which you would expect, because 100% / 40 = 2.5%." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# The Central Limit Theorem \n", - "\n", - "We have covered the concept of *distributions* of outcomes. You may have heard of the *normal distribution*, the *bell-shaped curve.* In Python it is called `random.normalvariate` (also `random.gauss`). We can plot it with the help of the `repeated_hist` function defined below, which samples a distribution `n` times and displays a histogram of the results. (*Note:* in this section I am using \"distribution\" to mean a function that, each time it is called, returns a random sample from a distribution. I am not using it to mean a mapping of type `Dist`.)" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "%matplotlib inline \n", - "import matplotlib.pyplot as plt\n", - "from statistics import mean\n", - "from random import normalvariate, triangular, choice, vonmisesvariate, uniform\n", - "\n", - "def normal(mu=0, sigma=1): return random.normalvariate(mu, sigma)\n", - "\n", - "def repeated_hist(dist, n=10**6, bins=100):\n", - " \"Sample the distribution n times and make a histogram of the results.\"\n", - " samples = [dist() for _ in range(n)]\n", - " plt.hist(samples, bins=bins, density=True)\n", - " plt.title('{} (μ = {:.1f})'.format(dist.__name__, mean(samples)))\n", - " plt.grid(axis='x')\n", - " plt.yticks([], '')\n", - " plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 63, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\ndxsGAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Normal distribution\n", - "repeated_hist(normal)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Why is this distribution called *normal*? The **Central Limit Theorem** says that it is the ultimate limit of other distributions, as follows (informally):\n", - "- Gather *k* independent distributions. They need not be normal-shaped.\n", - "- Define a new distribution to be the result of sampling one number from each of the *k* independent distributions and adding them up.\n", - "- As long as *k* is not too small, and the component distributions are not super-pathological, then the new distribution will tend towards a normal distribution.\n", - "\n", - "Here's a simple example: summing ten independent die rolls:" - ] - }, - { - "cell_type": "code", - "execution_count": 64, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\nsiQ1YSBLUhN+U08trfQ38vxKtTqyhyxJTRjIktSEgSxJTRjIktSEgSxJTRjIktSEgSxJTRjIktSE\ngSxJTRjIktSEgSxJTRjIktSEgSxJTRjIktSEl9/Uqlrpy2zuLC/LqdVkD1mSmjCQJakJA1mSmjCQ\nJakJA1mSmjCQJakJA1mSmjCQJakJA1mSmjCQJakJA1mSmjCQJakJA1mSmjCQJakJA1mSmjCQJakJ\nA1mSmjCQJakJf8JJc9Htp5qkjgxkaQds7w3l/FM2zLElmjKHLCSpCQNZkpowkCWpCQNZkpowkCWp\nCQNZkpowkCWpCQNZkpowkCWpCQNZkpowkCWpCQNZkpowkCWpCQNZkpowkCWpCQNZkpowkCWpCQNZ\nkpowkCWpCX9TT9pNV91wO2cs8Zt7W845bRVao7XMQNYetVw4SbpvDllIUhMGsiQ1YSBLUhMGsiQ1\nYSBLUhMGsiQ1YSBLUhMGsiQ1YSBLUhMGsiQ1YSBLUhMGsiQ1YSBLUhMGsiQ1YSBLUhMGsiQ1YSBL\nUhMGsiQ1YSBLUhMGsiQ1YSBLUhP+6rR2ycZlfln6+Y+dc0MaW24fbTnntDm3RGuFPWRJasJAlqQm\nDGRJasJAlqQmDGRJasJAlqQmDGRJasJAlqQmDGRJasJAlqQmDGRJasJAlqQmDGRJasJAlqQmDGRJ\nasJAlqQmDGRJasJAlqQmDGRJasJAlqQmDGRJasJAlqQm9lrtBqiv5X7GXrtnuf265ZzT5twSdWMP\nWZKaMJAlqQkDWZKaMJAlqQkDWZKaMJAlqQkDWZKaMJAlqQkDWZKaMJAlqQkDWZKaMJAlqQkDWZKa\nMJAlqQkDWZKaMJAlqQkDWZKaMJAlqQkDWZKaMJAlqQl/5FT+mGkT/vip7CFLUhMGsiQ1YSBLUhMG\nsiQ1YSBLUhMGsiQ1YSBLUhMGsiQ1YSBLUhMGsiQ1YSBLUhMGsiQ1YSBLUhMGsiQ1YSBLUhMGsiQ1\nYSBLUhP+Ysg64i+DrE3+ksj6YQ9ZkpowkCWpCQNZkpowkCWpCQNZkpowkCWpCQNZkpowkCWpCQNZ\nkpowkCWpCQNZkpowkCWpCQNZkprwam8T5FXd1gevAjc99pAlqQkDWZKaMJAlqQkDWZKaMJAlqQkD\nWZKaMJAlqQkDWZKaMJAlqQkDWZKaMJAlqQmvZbGGec0KaVoMZGlivOjQ2uWQhSQ1YSBLUhMGsiQ1\nYSBLUhMGsiQ1YSBLUhMGsiQ1YSBLUhN+MWQN8Bt52hP8wkh/9pAlqQkDWZKaMJAlqQkDWZKaMJAl\nqQnPsmjEsym0Gjz7og97yJLUhIEsSU0YyJLUhIEsSU14UG8VePBOa8Fyr9PzT9kw55asH/aQJakJ\nA1mSmnDIYgVddcPtnOHwhCZmude15y3vPnvIktSEPeQ9YLmDH89/7JwbIq2i7R2stve8YwzkJXgW\nhLRn7ez/qfUa4KmqHV84uRm4bhe3dShwyy4+d62y5vVhvdW83uqF3a/5yKo67L4W2qlA3h1JLquq\nH5zLxpqw5vVhvdW83uqF+dXsQT1JasJAlqQm5hnIb5jjtrqw5vVhvdW83uqFOdU8tzFkSdL2OWQh\nSU0YyJLUxIoEcpI3Jtma5OqZaYck+VCS/xz/PmAltr0akhyR5KNJPpvkmiTPHadPueb9knwyyZVj\nzS8bp0+25gVJ7pfkU0kuGh9PuuYkW5JcleTTSS4bp0295oOTvDPJ55JsTvIj86h5pXrI5wOnLJp2\nFvDhqnoU8OHx8VR8C3h+VR0NPB743SRHM+2avwGcVFXHAccDpyR5PNOuecFzgc0zj9dDzT9eVcfP\nnIs79ZpfA3ygqh4NHMfw773yNVfVityAjcDVM4+vBR4y3n8IcO1KbXu1b8CFwJPXS83AAcAVwA9P\nvWbg4eN/xpOAi8ZpU695C3DoommTrRm4P/AlxpMe5lnzPMeQD6+qr4z3bwQOn+O25ybJRuAE4BNM\nvObxo/unga3Ah6pq8jUDrwZeCNwzM23qNRdwcZLLk/zWOG3KNX8PcDPwt+PQ1LlJNjCHmlfloF4N\nbzGTO98uyYHAPwLPq6o7ZudNseaquruqjmfoNT4uyWMWzZ9UzUlOB7ZW1eXLLTO1mkcnjv/OT2UY\njnvi7MwJ1rwX8APAX1XVCcA2Fg1PrFTN8wzkm5I8BGD8u3WO215xSfZmCOO/r6p3jZMnXfOCqroN\n+CjDcYMp1/wE4CeTbAEuAE5K8hamXTNVdcP4dyvwbuBxTLvm64Hrx098AO9kCOgVr3megfxe4Jnj\n/WcyjLNOQpIA5wGbq+rPZmZNuebDkhw83t+fYcz8c0y45qp6cVU9vKo2Ar8IfKSqfpkJ15xkQ5KD\nFu4DPwFczYRrrqobgS8nOWqcdDLwWeZQ84p8Uy/J24BNDJesuwl4KfAe4B3AIxgu4fnzVfW1Pb7x\nVZDkROBS4Cr+f2zxbIZx5KnWfCzwJuB+DG/s76iqlyd5IBOteVaSTcAfVNXpU645ySMZesUwfJR/\na1X9yZRrBkhyPHAusA/wReDXGF/nrGDNfnVakprwm3qS1ISBLElNGMiS1ISBLElNGMiS1ISBLElN\nGMiS1MT/AekMsW/hANdAAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "def sum10dice(): return sum(random.randint(1, 6) for _ in range(10))\n", - "\n", - "repeated_hist(sum10dice, bins=range(10, 61))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As another example, let's take just *k* = 5 component distributions representing the per-game scores of 5 basketball players, and then sum them together to form the new distribution, the team score. I'll be creative in defining the distributions for each player, but [historically accurate](https://www.basketball-reference.com/teams/GSW/2016.html) in the mean for each distribution." - ] - }, - { - "cell_type": "code", - "execution_count": 65, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "def SC(): return max(0, normal(12.1, 3) + 3 * triangular(1, 13, 4)) # 30.1\n", - "def KT(): return max(0, triangular(8, 22, 15.3) + choice((0, 3 * triangular(1, 9, 4)))) # 22.1\n", - "def DG(): return max(0, vonmisesvariate(30, 2) * 3.08) # 14.0\n", - "def HB(): return max(0, choice((normal(6.7, 1.5), normal(16.7, 2.5)))) # 11.7\n", - "def BE(): return max(0, normal(17, 3) + uniform(0, 40)) # 37.0\n", - "\n", - "team = (SC, KT, DG, HB, BE)\n", - "\n", - "def Team(team=team): return sum(player() for player in team)" - ] - }, - { - "cell_type": "code", - "execution_count": 66, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWQAAAEICAYAAABoLY4BAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADYRJREFUeJzt3WuQZPVdxvHvY4BAFsJtEZGl2MTCRHIBRBMQKonE6EJi\nqvIulFG2Kmql1FRQqhLwWli+ML6gYqXwgiFZvBRWGaMiMTEBV19gRLnDhkuwQgpWYBNIlgVDTODn\niz5Deoed3ZnZ6e1fz3w/VV3Tfc6Z7qenZp7+z/+cPp2qQpI0fd8z7QCSpBELWZKasJAlqQkLWZKa\nsJAlqQkLWZKasJA1VUluSnLGtHNMQpL3J/nwtHNodljIWrQk5yb59yQ7kzw5lOmPjq0/IcnVSR5N\nsivJfUkuT7Jugfv7aWBXVd1+AJ/D+iH3E8Pz+EKSc+Zt86tJHkvyVJKPJ3npXu7vqiT3J3k+yeZ5\nq/8M+Jkk3zuBp6JVyELWoiR5OXA98FHgGOBE4HLgW8P6Y4AvAIcBZ1fVEcDbgCOBH1jgbt8H/MVk\nk7/I08DPA8cDRwEfBv4xyUEASX4KuBR4K3Ay8EpGz3MhdwK/BNw2f0VVPQt8Bvi5FcyvVcxC1mL9\nIEBVXVtVz1XVN6vqc1V117D+14BdwHuq6qFh24er6uKxbV6Q5BDgPODfxpZtSfJ7Y7ffkuSRlXwS\nVfVsVd1bVd8BAjwHHM3oRQbgIuDqqtpWVV8HfhfYvJf7u7KqbgSeXWCTfwXevkLxtcpZyFqsB4Dn\nklyT5PwkR89b/xPAp6rq+UXe3ynA81W17MJNcleSbyxw+aN9fS+jEr0O+FhV7RhWvYbRqHfOncDx\nSY5dZsx7gdOW+b1aYw6adgDNhqp6Ksm5wIcYzY1+X5J/An6hqh4HjgUeXcJdHsVoRL0/mV6/P9+b\n5FDgXcAhY6sOB3aO3X5q+HoE8MQyHmoXo2kbaZ8cIWvRhn/1N1fVBuC1wPcDHxlWPwGcsIS7+zqj\nkpuaYfriWuDSJHOj2KeBl49tNlemy33xOILdC15akIWsZamq+4AtjIoZ4AbgXUkW+zv1IJAkJ85b\nftjY9b2OLJNsS/L0Apc/WWQOgIMZ7bwD2MbuUwynAY9X1XJGxwA/xO5TINKCLGQtSpJXJ7kkyYbh\n9knAhcB/DJtcwWhkeU2Sk4dtTkxyRZIXTS1U1f8xKvE3z1v1jiTHJzmc0VEYLxumFl6kql5TVYcv\ncHnfAs/jrOHwvUOSHJbkQ4yOuLh52OTPgfcmOXWYJ/8tRi88C/1cDhnyBTg4yaHzXpTezOhIC2mf\nLGQt1i7gjcDNSZ5hVMT3AJcAVNWTwI8B3x622QXcyOjf9QcXuM8/BX523rJtjI5MeAD4NPAksJTR\n7r68FLiS0RTLduAC4O1V9T/D8/gs8AfAVuArwJeB35n75iSfSfLrY/f3OeCbjJ77VcP1Nw3bHjrc\n/zUrmF+rWDxBvaYpyU3Ar1TV7Um2AI9U1W9OOdaKSPJ+4KSq+uC0s2g2eJSFpqqqztn3VrOpqj46\n7QyaLU5ZSFITTllIUhOOkCWpiSXNIa9fv742bty4rAd65plnWLdujyf9asm8k2XeyZq1vDB7mZeS\n99Zbb/1aVR23zw2ratGXM888s5Zr69aty/7eaTDvZJl3smYtb9XsZV5KXuCWWkTHOmUhSU1YyJLU\nhIUsSU1YyJLUhIUsSU1YyJLUhIUsSU1YyJLUhIUsSU14+k0t2cZLP73b7Yd+30+5l1aChay9ml++\nkibHKQtJasJClqQmnLLQfnNOWVoZjpAlqQkLWZKacMpCu/GoCml6HCFLUhOOkLXi9jTKdkeftG+O\nkCWpCQtZkpqwkCWpCQtZkppwp54OiPk7+rZsWjelJFJfFvIa5jHHUi9OWUhSExayJDVhIUtSExay\nJDVhIUtSExayJDVhIUtSExayJDXhG0M0FXdv38lmP4tP2o0jZElqwkKWpCYsZElqwkKWpCYsZElq\nwqMs1hBPtyn15ghZkppwhKw25o/gPS5Za40jZElqwkKWpCYsZElqwkKWpCYsZElqwkKWpCYsZElq\nwkKWpCYsZElqwkKWpCZ867Ta8q3UWmscIUtSExayJDVhIUtSE84hr2KekF6aLY6QJakJC1mSmnDK\nQjNjT1MwHgqn1cQRsiQ1YSFLUhMWsiQ1YSFLUhMWsiQ1YSFLUhMWsiQ1YSFLUhO+MUQzzXMmazVx\nhCxJTVjIktSEhSxJTVjIktSEhSxJTVjIktSEhSxJTVjIktSEbwxZJe7evpPNfqipNNMsZK0qfsyT\nZplTFpLUhIUsSU1YyJLUhIUsSU1YyJLUhIUsSU1YyJLUhMcha9XzU0U0KxwhS1ITFrIkNWEhS1IT\nFrIkNWEhS1ITFrIkNWEhS1ITHoesNcdzJqsrR8iS1ISFLElNWMiS1ISFLElNWMiS1IRHWcyo+UcK\n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\nFG7+33uq9XcAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWQAAAEICAYAAABoLY4BAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADN9JREFUeJzt3W2spHV9xvHvJatCF8KDEEJEORotLRbEbkMhorRQ24Wt\n9kX7AqspJDWlWhNoTJrFEmPTpvKmrU18jiitNbbFWmtA2oBsTR+StqzyDFvbuAooLFoRXA2l9dcX\nc586TM7Z3fMwZ36z5/tJJjv3fc/cc52Ts9f5z3/+MydVhSRp9p416wCSpBELWZKasJAlqQkLWZKa\nsJAlqQkLWZKasJA1M0neleSqWeeYhiRnJfnnWefQfLGQdciS7E3yM2Pblyb5VpILknxnuOxPUmPb\n30nywiXOdRLwK8AHNzD/c5Ncl+QrSZ5MckeSi8eOn5vkliT/leSxJDckOeUA53trktuTPJXk+vFj\nVXUX8HiS107vK9LhxkLWqiS5DHgvsKOqPl9VR1fV0cDLhpsct7ivqr66xCkuBz5bVd/boMgAW4AH\ngQuAY4FrgL9MsjAcPx74ELAAnAY8CXz0AOf7GvB7wEeWOf5x4Io1ZtYmYiFrxZJcAfwB8HNVtdqn\n5RcDnx875+VJ/nHicSrJS1af9Jmqan9VvbOq9lbV96vqRuDLwLbh+M1VdUNVPVFV3wXeA7zyAOf7\nVFV9GvjmMjf5e+CiJM9dr69Bh7ctsw6gufNm4Hzgoqq6cw3nORPYs9o7J3kf8MvLHP5qVZ11COc4\nGfhh4N5lbvLqAxw7qKp6OMnTwOnAXas9jzYPC1kr9RpgF3D3Gs9zHKMpgVWpqrcAb1nt/ZM8m9GU\nwp9U1QNLHD8LeAfwC6t9jMGTjL5W6aCcstBKvZnRqPLDSbKG83wLOGZ9Iq1MkmcBHwP+G3jrEsdf\nAtwMXFlV/7DGhzsGeHyN59AmYSFrpR4FLgJeBbxvDee5i1Gxjztq8UqSYw905yQfmFjJMX5Zdpph\n+CVyHXAy8ItV9fTE8dOAW4HfraqPrfBrmnys5wPPYQ1TM9pcLGStWFV9jVEpb0/yR6s8zWcZrXYY\nd2aSc5IcAfzmsO+EZTL8+tgqjsnLy5a6z+D9wI8Cr51c4TEU6G3Ae6rqAwf7ApJsSXIkcARwRJIj\nk4xPA14A3FZVTx3sXBJYyFqlYSnbhcAvJXnXKk7xp8AlSY4a23cfo2Vk+4DnATcAf7HWrIuG0e8V\nwNnAI2Mj6jcMN3kT8GLgneMj7rH7vz3JzWOnvAb4HrATeONw/Zqx428ADlrs0qL4AfWalSS/D+yr\nqncnuRx4U1WdP+NY62J4UfCDVXXerLNofrjKQjNTVW+fdYZpGd6pZxlrRZyykKQmnLKQpCYcIUtS\nEyuaQz7xxBNrYWFhVQ+0f/9+tm7duqr7zoJ5p8u80zVveWH+Mq8k7+7du79RVScd9IZVdciXbdu2\n1Wrt2rVr1fedBfNOl3mna97yVs1f5pXkBW6vQ+hYpywkqQkLWZKasJAlqQkLWZKasJAlqQkLWZKa\nsJAlqQkLWZKasJAlqQk/fnODLey86Rnbe6/dMaMkkrpxhCxJTVjIktSEhSxJTVjIktSEhSxJTVjI\nktSEhSxJTVjIktSEhSxJTVjIktSEhSxJTVjIktSEhSxJTVjIktSEhSxJTfh5yFM2+fnHkrQcR8iS\n1ISFLElNWMiS1ISFLElNWMiS1ISFLElNWMiS1ISFLElN+MaQGVvqjSN7r90xgySSZs0RsiQ1YSFL\nUhMWsiQ1YSFLUhMWsiQ1YSFLUhMWsiQ1YSFLUhMWsiQ1YSFLUhMWsiQ1YSFLUhMWsiQ1YSFLUhMW\nsiQ1YSFLUhMWsiQ1YSFLUhMWsiQ14d/UW0dL/X08STpUjpAlqQkLWZKasJAlqQkLWZKasJAlqQlX\nWTQ0uVpj77U7ZpRE0kZyhCxJTVjIktSEhSxJTVjIktSEhSxJTVjIktSEhSxJTVjIktSEhSxJTVjI\nktSEhSxJTVjIktSEhSxJTVjIktSEhSxJTVjIktSEhSxJTVjIktSEhSxJTVjIktSEhSxJTVjIktSE\nhSxJTVjIktSEhSxJTWyZdYB5trDzpllHkHQYsZDnwFLFv/faHTNIImmanLKQpCYsZElqwkKWpCYs\nZElqwkKWpCYsZElqwkKWpCYsZElqwkKWpCYsZElqwkKWpCYsZElqwkKWpCYsZElqwkKWpCYsZElq\nwkKWpCYsZElqwkKWpCYsZElqwkKWpCYsZElqYsusA2h1Fnbe9Izt67dvnVESSevFEbIkNWEhS1IT\nFrIkNeEc8iGanLOVpPXmCFmSmnCErHW31LOJvdfumEESab5YyFozp3Ok9eGUhSQ14QhZG8I3skgH\nZyFrxZyikKbDKQtJasJClqQmLGRJasI5ZM3E3Q9/m8sn5qJdq6zNzhGyJDXhCFkH5IoKaeM4Qpak\n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\nhSxJTfwf/gO8GA80m24AAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n+rZV21vkraofSbJ/jHHnevt0ybrKRdPX9/LMprAunt/YLPO2JN+Z5J1jjPOTPJlVL/eb5U2SVNXx\nSa5M8t7V2zYr76IL+ZEkZ88tnzWt2woeq6ozk2T6uH/JeZ6lqo7LrIzfPcZ437S6deYkGWN8Psme\nzObsO+b93iRXVtW+JH+a5NKqeld6Zv1/Y4xHpo/7M5vfvDB9Mz+c5OHpVVKS3JRZQXfNu+LyJHeN\nMR6bljc976IL+V+TvLyqXjr9dnlTkg8s+Jib5QNJrpruX5XZPG0LVVVJ/iDJA2OM35zb1DJzVZ1e\nVadM91+U2Xz3g2mYd4xx3RjjrDHGzsy+X/92jPGTaZh1RVVtr6qTVu5nNs95X5pmHmM8muShqnrF\ntOq1ST6epnnnvDnPTFcki8h7BCbBX5fk35J8KskvLXtSfp2M70nymST/m9lv759O8rWZvbHziSS3\nJjlt2Tnn8l6U2cujjyW5e7q9rmvmJN+R5KNT3vuS/Mq0vmXeudyX5Jk39dpmTfKyJPdMt/tXfs6a\nZz4vyR3T98T7k5zaPO/2JP+Z5OS5dZue159OAzThTT2AJhQyQBMKGaAJhQzQhEIGaEIhAzShkAGa\n+D+SaGda5tKjKQAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWQAAAEICAYAAABoLY4BAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADVRJREFUeJzt3XuspPVdx/H3p9AW2AUWXCybgl2qTetaBMRgG/EGqS5d\nxcZGpVG7JJpGY5M2wTRL1aqJNRvTNhrjNVVJraEGpBRLqil18RprlwLltljQrQUpF8OlbLUV/PrH\nzNnOjnvOnj07c+Y757xfyWTneZ6ZZz5n9pzP/OY3z8ykqpAkzd4LZh1AkjRgIUtSExayJDVhIUtS\nExayJDVhIUtSExayZibJi5Pcm2TLrLNMQ5L3JvmZWefQ/LCQtWxJ9if5ryTPJnkyyc1Jzh7Zfk2S\nrwy3L5zuXGKXbwH+tqoemX76gxm3Jdk7zP9kkluSbBvZ/rGx/F9JctcS+7s0yb4kX0qyJ8nLRja/\nB3hnkhdN82fS2mEh62j9QFVtBLYAjwK/Nbb916tq48jpvCX29dPAn0wr6CL+A/hRYPPwdBPwoYWN\nVXXZaH7gH4HrDrejJJuBG4BfBE4H9gJ/NrKvR4B9wOXT+VG01ljIWpGq+m/gemDbkS57OEm+Dng5\n8MmRdbcm+amR5SuT/P2xZh1VVU9V1YNV9TwQ4HngGxbJuBX4DuADi+zuh4B7quq64f3xy8B5SV41\ncplbgR0TCa817/hZB9B8SnISg5HmP61wF+cC/1pVzx1DhqeW2Ly7qnYf4bobGQxK3rXIxd4M/F1V\n7V9k+zcBB6dkqupAkgeG6/cNV98HvHGJnNJBFrKO1o1JngM2AI8D3ze2/eeSvHVk+SNVtfMw+9kE\nfPFYglTVpmO5bpINwE7gc4tc7M3Ary6xm40M7oNRzwAnjyx/kcHPKh2RUxY6Wm8YFuEJwFuBv0ly\n5sj291TVppHT4coY4EkOLa5VV1UHgN8DPpDka0e3JbkYOJPBtMxingVOGVt3Koc+0JwMLDWSlw6y\nkLUiVfV8Vd3AYA724hXs4jPAOUnGn6WdOHL+1KV2MHY0xPjpncvM8QLgJOClY+t3AjdU1bNLXPce\n4OCLlsMR99cP1y/4RkamNaSlWMhakQz8IHAag3nSo1JVDwEPABeNbfrhJKckOYNBKW5M8sJF9rFx\nidOvLZL7dUkuSHJcklOA9zEYrd83cpkTgR8BrjnCj/Fh4NVJ3pjkBOCXgDurat/IZb4L+NgR9iMB\nFrKO3l8keZbBXOm7gZ1VNToifMfYSPWJJfb1+8BPjK37dwaj508xmE44E/iFycVnE3At8DTwIIMR\n7fbhURIL3sBgmmHP+JWT3JPkxwCq6nEGL9i9m0GpXwRcMXLZLQyOQrlxgvm1hsUPqNesJHkxcDtw\naVU9kuRW4INV9f7ZJpuMJO8FHqyq35l1Fs0Hj7LQzFTVl1nhcczzoKqumnUGzRenLCSpCacsJKkJ\nR8iS1MRRzSFv3ry5tm7duqIbOnDgABs2bFjRdWfBvNNl3umat7wwf5mPJu9tt932RFWdccQLVtWy\nTxdeeGGt1J49e1Z83Vkw73SZd7rmLW/V/GU+mrzA3lpGxzplIUlNWMiS1ISFLElNWMiS1ISFLElN\nWMiS1ISFLElNWMiS1ISFLElN+PGbmritu27+f+v2794xgyTLN565e16tTRaylnS4cl2t25pUKU5i\nv3c9/DRXrlJp++CwflnIWhXjJXPN9iN/KMtKimlSDyDj+7nq3Mnc1krKdTm3Y2mvDRayZuJwI84j\nWc3R+rSs1rOA5TzgqR8LWYdYC6V3JOvhZ9R8spDXMYtp9vw/0CgPe5OkJhwhS2vQah4VoslxhCxJ\nTThCXkecr1zfPL65P0fIktSEhSxJTVjIktSEhSxJTVjIktSER1lI69Q8fkzqWmchr2Ee5ibNF6cs\nJKkJC1mSmrCQJakJC1mSmrCQJakJC1mSmrCQJakJC1mSmrCQJakJC1mSmvCt05IO8ltFZssRsiQ1\n4Qh5jTjctwxLmi+OkCWpCQtZkpqwkCWpCQtZkpqwkCWpCQtZkpqwkCWpCQtZkpqwkCWpCQtZkpqw\nkCWpCQtZkprww4Xm1PjHJF517oyCSJoYR8iS1ISFLElNOGUhaVHjU2Pgt4hMkyNkSWrCQpakJixk\nSWrCQpakJixkSWrCQpakJixkSWrCQpakJixkSWrCQpakJixkSWrCQpakJixkSWrCQpakJixkSWrC\nQpakJixkSWrCQpakJixkSWrCQpakJvyS0zlwuC+alLT2WMiSjsr4AMFvoZ4cpywkqQkLWZKasJAl\nqQkLWZKasJAlqQkLWZKasJAlqQkLWZKasJAlqQkLWZKasJAlqQkLWZKasJAlqQkLWZKasJAlqQkL\nWZKasJAlqQkLWZKasJAlqQkLWZKasJAlqQkLWZKaOH7WASTNt627bj5kef/uHTNKMv8cIUtSE46Q\nGxofcUhaHxwhS1ITFrIkNWEhS1ITFrIkNWEhS1ITFrIkNWEhS1ITFrIkNWEhS1ITFrIkNWEhS1IT\nFrIkNWEhS1ITFrIkNWEhS1ITFrIkNWEhS1ITFrIkNWEhS1ITFrIkNWEhS1ITFrIkNWEhS1ITFrIk\nNXH8rAOsd1t33TzrCJKasJAlTdThBhn7d++YQZL545SFJDVhIUtSExayJDVhIUtSExayJDVhIUtS\nExayJDVhIUtSExayJDVhIUtSExayJDVhIUtSExayJDVhIUtSExayJDVhIUtSExayJDVhIUtSExay\nJDVhIUtSExayJDVhIUtSExayJDVx/KwDSFr7tu66+ZDl/bt3zChJb46QJakJC1mSmnDKYpWNP3WT\npAWOkCWpCQtZkpqwkCWpCQtZkpqwkCWpCQtZkpqwkCWpCQtZkpqwkCWpCQtZkpqwkCWpCQtZkpqw\nkCWpCQtZkpqwkCWpCQtZkpqwkCWpCQtZkprwK5wkrbrDfZXZNds3zCBJLxbylPkdepKWyykLSWrC\nQpakJixkSWrCQpakJixkSWrCQpakJixkSWrCQpakJixkSWrCQpakJixkSWrCQpakJixkSWrCQpak\nJixkSWrCz0OeID/7WNKxsJAltXDXw09z5cigZv/uHTNMMxtOWUhSExayJDVhIUtSExayJDVhIUtS\nExayJDVhIUtSExayJDVhIUtSE75T7xj4VmlJk2QhS2ppfMCzHt5K7ZSFJDVhIUtSExayJDVhIUtS\nExayJDVhIUtSEx72tkwecyzN1uH+BtfaoXCOkCWpCQtZkpqwkCWpCeeQFzH+DbiS+llrb6+2kIfG\n/2OvOndGQSStW+uykD1iQlqblvO33XkUnapa/oWTx4HPrfC2NgNPrPC6s2De6TLvdM1bXpi/zEeT\n92VVdcaRLnRUhXwskuytqm9dlRubAPNOl3mna97ywvxlnkZej7KQpCYsZElqYjUL+Q9W8bYmwbzT\nZd7pmre8MH+ZJ5531eaQJUlLc8pCkpqwkCWpiakXcpLtSe5P8kCSXdO+vZVI8kdJHkty98i605N8\nPMlnh/+eNsuMo5KcnWRPknuT3JPkbcP1LTMnOSHJPye5c5j3V4brW+YFSHJcktuTfHS43DYrQJL9\nSe5KckeSvcN1bTMn2ZTk+iT7ktyX5LVd8yZ55fB+XTg9k+Tt08g71UJOchzw28BlwDbgTUm2TfM2\nV+gaYPvYul3AJ6rqFcAnhstdPAdcVVXbgNcAPzu8X7tm/jJwSVWdB5wPbE/yGvrmBXgbcN/Icues\nC76nqs4fOTa2c+bfBP6yql4FnMfgvm6Zt6ruH96v5wMXAl8CPsw08lbV1E7Aa4G/Glm+Grh6mrd5\nDFm3AnePLN8PbBme3wLcP+uMS2T/CPC6ecgMnAR8Gvi2rnmBs4Z/YJcAH52H3wdgP7B5bF3LzMCp\nwL8xPKige96xjN8L/MO08k57yuKlwOdHlh8arpsHL6mqR4bnvwC8ZJZhFpNkK3AB8EkaZx5OAdwB\nPAZ8vKo65/0N4B3A/46s65p1QQG3JLktyVuG67pmPgd4HPjj4bTQ+5NsoG/eUVcA1w7PTzyvL+ot\nQw0eAtsdH5hkI/DnwNur6pnRbd0yV9XzNXjKdxZwUZJXj21vkTfJ9wOPVdVti12mS9YxFw/v38sY\nTGF95+jGZpmPB74F+N2qugA4wNjT/WZ5AUjyIuBy4LrxbZPKO+1Cfhg4e2T5rOG6efBoki0Aw38f\nm3GeQyR5IYMy/tOqumG4unVmgKp6CtjDYM6+Y95vBy5Psh/4EHBJkg/SM+tBVfXw8N/HGMxvXkTf\nzA8BDw2fJQFcz6Cgu+ZdcBnw6ap6dLg88bzTLuRPAa9Ics7w0eUK4KYp3+ak3ATsHJ7fyWCetoUk\nAf4QuK+q3jeyqWXmJGck2TQ8fyKD+e59NMxbVVdX1VlVtZXB7+tfV9WP0zDrgiQbkpy8cJ7BPOfd\nNM1cVV8APp/klcNVlwL30jTviDfx1ekKmEbeVZgEfz3wL8CDwM/PelJ+kYzXAo8A/8Pg0fsnga9h\n8MLOZ4FbgNNnnXMk78UMnh59BrhjeHp918zANwO3D/PeDbxruL5l3pHc381XX9RrmxV4OXDn8HTP\nwt9Z88znA3uHvxM3Aqc1z7sB+E/g1JF1E8/rW6clqQlf1JOkJixkSWrCQpakJixkSWrCQpakJixk\nSWrCQpakJv4PEqD2OJabj0QAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "for player in team: \n", - " repeated_hist(player, bins=range(70))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can see that none of the players have a distribution that looks like a normal distribution: `SC` is skewed to one side (the mean is 5 points to the right of the peak); the three next players have bimodal distributions; and `BE` is too flat on top. \n", - "\n", - "Now we define the team score to be the sum of the *k* = 5 players, and display this new distribution:" - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "repeated_hist(Team, bins=range(50, 180))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Sure enough, this looks very much like a normal distribution. The **Central Limit Theorem** appears to hold in this case. But I have to say: \"Central Limit\" is not a very evocative name, so I propose we re-name this as the **Strength in Numbers Theorem**, to indicate the fact that if you have a lot of numbers, you tend to get the expected result." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "button": false, - "deletable": true, + "id": "sIT0znXcjrvd", "new_sheet": false, "run_control": { "read_only": false @@ -2545,45 +2234,25 @@ "source": [ "# Conclusion\n", "\n", - "We've had an interesting tour and met some giants of the field: Laplace, Bernoulli, Fermat, Pascal, Bayes, Newton, ... even Mr. Monopoly and The Count.\n", + "We can solve all these problems just by counting! \n", "\n", - "The conclusion is: be methodical in defining the sample space and the event(s) of interest, and be careful in counting the number of outcomes in the numerator and denominator. and you can't go wrong. Easy as 1-2-3. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", + "All you ever needed to know about probability problems you learned from Sesame Street:\n", "\n", - "# Appendix: Continuous Sample Spaces\n", + "||\n", + "|---|\n", + "|![The Count](http://img2.oncoloring.com/count-dracula-number-thir_518b77b54ba6c-p.gif)|\n", + "|The Count (1972—)|\n", "\n", - "Everything up to here has been about discrete, finite sample spaces, where we can *enumerate* all the possible outcomes. \n", + "We've had an interesting tour of probability and met Laplace, Bernoulli, Fermat, Pascal, Bayes, Newton, and The Count.\n", "\n", - "But a reader asked about *continuous* sample spaces, such as the space of real numbers. The principles are the same: probability is still the ratio of the favorable cases to all the cases, but now instead of *counting* cases, we have to (in general) compute integrals to compare the sizes of cases. \n", - "Here we will cover a simple example, which we first solve approximately by simulation, and then exactly by calculation.\n", - "\n", - "## The Hot New Game Show Problem: Simulation\n", - "\n", - "Oliver Roeder posed [this problem](http://fivethirtyeight.com/features/can-you-win-this-hot-new-game-show/) in the 538 *Riddler* blog:\n", - "\n", - ">Two players go on a hot new game show called *Higher Number Wins.* The two go into separate booths, and each presses a button, and a random number between zero and one appears on a screen. (At this point, neither knows the other’s number, but they do know the numbers are chosen from a standard uniform distribution.) They can choose to keep that first number, or to press the button again to discard the first number and get a second random number, which they must keep. Then, they come out of their booths and see the final number for each player on the wall. The lavish grand prize — a case full of gold bullion — is awarded to the player who kept the higher number. Which number is the optimal cutoff for players to discard their first number and choose another? Put another way, within which range should they choose to keep the first number, and within which range should they reject it and try their luck with a second number?\n", - "\n", - "We'll use this notation:\n", - "- **A**, **B**: the two players.\n", - "- *A*, *B*: the cutoff values they choose: the lower bound of the range of first numbers they will accept.\n", - "- *a*, *b*: the actual random numbers that appear on the screen.\n", - "\n", - "For example, if player **A** chooses a cutoff of *A* = 0.6, that means that **A** would accept any first number greater than 0.6, and reject any number below that cutoff. The question is: What cutoff, *A*, should player **A** choose to maximize the chance of winning, that is, maximize P(*a* > *b*)?\n", - "\n", - "First, simulate the number that a player with a given cutoff gets (note that `random.random()` returns a float sampled uniformly from the interval [0..1]):" + "The conclusion is: be methodical in defining the sample space and the event(s) of interest, and be careful in counting the number of outcomes in the numerator and denominator. and you can't go wrong. Easy as 1-2-3." ] }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 65, "metadata": { - "collapsed": true + "id": "8unzVDfGjrvd" }, "outputs": [], "source": [ @@ -2597,18 +2266,19 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 66, "metadata": { - "collapsed": false + "id": "N2q4GJmbjrvd", + "outputId": "e2415943-e6b9-47ab-9e2f-9cfae69602d9" }, "outputs": [ { "data": { "text/plain": [ - "0.7567488540951384" + "0.7590302612462443" ] }, - "execution_count": 69, + "execution_count": 66, "metadata": {}, "output_type": "execute_result" } @@ -2619,41 +2289,46 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "jCFHv1YMjrvd" + }, "source": [ "Now compare the numbers returned with a cutoff of *A* versus a cutoff of *B*, and repeat for a large number of trials; this gives us an estimate of the probability that cutoff *A* is better than cutoff *B*:" ] }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 67, "metadata": { - "collapsed": true + "id": "rF32bGvVjrvd" }, "outputs": [], "source": [ "def Pwin(A, B, trials=20000):\n", " \"The probability that cutoff A wins against cutoff B.\"\n", - " return mean(strategy(A) > strategy(B) \n", + " return mean(strategy(A) > strategy(B)\n", " for _ in range(trials))" ] }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 68, "metadata": { - "collapsed": false + "id": "HP39megCjrvd", + "outputId": "df1c11ef-bf5f-4632-e6dc-db3d24f7a648" }, "outputs": [ { - "data": { - "text/plain": [ - "0.5668" - ] - }, - "execution_count": 71, - "metadata": {}, - "output_type": "execute_result" + "ename": "NameError", + "evalue": "name 'mean' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Input \u001b[0;32mIn [68]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mPwin\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0.6\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0.9\u001b[39;49m\u001b[43m)\u001b[49m\n", + "Input \u001b[0;32mIn [67]\u001b[0m, in \u001b[0;36mPwin\u001b[0;34m(A, B, trials)\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mPwin\u001b[39m(A, B, trials\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m20000\u001b[39m):\n\u001b[1;32m 2\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThe probability that cutoff A wins against cutoff B.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m----> 3\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mmean\u001b[49m(strategy(A) \u001b[38;5;241m>\u001b[39m strategy(B)\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m _ \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(trials))\n", + "\u001b[0;31mNameError\u001b[0m: name 'mean' is not defined" + ] } ], "source": [ @@ -2662,16 +2337,18 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "mbMpYuZ3jrvd" + }, "source": [ - "Now define a function, `top`, that considers a collection of possible cutoffs, estimate the probability for each cutoff playing against each other cutoff, and returns a list with the `N` top cutoffs (the ones that defeated the most number of opponent cutoffs), and the number of opponents they defeat: " + "Now define a function, `top`, that considers a collection of possible cutoffs, estimate the probability for each cutoff playing against each other cutoff, and returns a list with the `N` top cutoffs (the ones that defeated the most number of opponent cutoffs), and the number of opponents they defeat:" ] }, { "cell_type": "code", - "execution_count": 72, + "execution_count": null, "metadata": { - "collapsed": true + "id": "4IEnUhjCjrvd" }, "outputs": [], "source": [ @@ -2684,31 +2361,12 @@ }, { "cell_type": "code", - "execution_count": 73, + "execution_count": null, "metadata": { - "collapsed": false + "id": "_auNAfb4jrvd", + "outputId": "802b1e35-b3db-40f7-fc67-7c1e41132be4" }, - "outputs": [ - { - "data": { - "text/plain": [ - "[(0.6100000000000001, 44),\n", - " (0.60000000000000009, 43),\n", - " (0.63000000000000012, 43),\n", - " (0.55000000000000004, 42),\n", - " (0.58000000000000007, 42),\n", - " (0.56000000000000005, 42),\n", - " (0.62000000000000011, 42),\n", - " (0.64000000000000012, 41),\n", - " (0.65000000000000013, 41),\n", - " (0.57000000000000006, 40)]" - ] - }, - "execution_count": 73, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "from numpy import arange\n", "\n", @@ -2717,7 +2375,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "7me09ilZjrve" + }, "source": [ "We get a good idea of the top cutoffs, but they are close to each other, so we can't quite be sure which is best, only that the best is somewhere around 0.60. We could get a better estimate by increasing the number of trials, but that would consume more time.\n", "\n", @@ -2734,7 +2394,7 @@ "The area of a triangle is 1/2 the base times the height, or in this case, 0.42 / 2 = 0.08, and in general, (1 - *B*)2 / 2. So in general we have:\n", "\n", " Phigher(A, B) = favorable / total\n", - " favorable = ((1 - B) ** 2) / 2 \n", + " favorable = ((1 - B) ** 2) / 2\n", " total = (1 - A) * (1 - B)\n", " Phigher(A, B) = (((1 - B) ** 2) / 2) / ((1 - A) * (1 - B))\n", " Phigher(A, B) = (1 - B) / (2 * (1 - A))\n", @@ -2751,9 +2411,9 @@ }, { "cell_type": "code", - "execution_count": 74, + "execution_count": null, "metadata": { - "collapsed": true + "id": "WrIdpqnWjrve" }, "outputs": [], "source": [ @@ -2767,29 +2427,21 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": null, "metadata": { - "collapsed": false + "id": "OpHBRSZojrve", + "outputId": "360ee92b-78a9-4ce7-92c6-332e2ce751b5" }, - "outputs": [ - { - "data": { - "text/plain": [ - "0.4" - ] - }, - "execution_count": 75, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "Phigher(0.5, 0.6)" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "8g2T_pE8jrve" + }, "source": [ "We're now ready to tackle the full game. There are four cases to consider, depending on whether **A** and **B** gets a first number that is above or below their cutoff choices:\n", "\n", @@ -2806,9 +2458,9 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": null, "metadata": { - "collapsed": true + "id": "uwR6v88Mjrve" }, "outputs": [], "source": [ @@ -2822,51 +2474,33 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": null, "metadata": { - "collapsed": false + "id": "hyfp1paSjrve", + "outputId": "89efbe5b-4452-4e30-95c5-71151bcde9a9" }, - "outputs": [ - { - "data": { - "text/plain": [ - "0.495" - ] - }, - "execution_count": 77, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "Pwin(0.5, 0.6)" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "xDRxPTuejrve" + }, "source": [ "`Pwin` relies on a lot of algebra. Let's define a few tests to check for obvious errors:" ] }, { "cell_type": "code", - "execution_count": 78, + "execution_count": null, "metadata": { - "collapsed": false + "id": "L3w-TzK9jrve", + "outputId": "df6f3314-014b-4f74-dac6-87b1fd11bf9d" }, - "outputs": [ - { - "data": { - "text/plain": [ - "'ok'" - ] - }, - "execution_count": 78, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "def test():\n", " assert Phigher(0.5, 0.5) == Phigher(0.75, 0.75) == Phigher(0, 0) == 0.5\n", @@ -2880,121 +2514,72 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "C9hZRUIzjrve" + }, "source": [ "Let's repeat the calculation with our new, exact `Pwin`:" ] }, { "cell_type": "code", - "execution_count": 79, + "execution_count": null, "metadata": { - "collapsed": false + "id": "OfxAXLl-jrve", + "outputId": "032bba6b-ca9d-4b28-ca9a-0b65f8e6288f" }, - "outputs": [ - { - "data": { - "text/plain": [ - "[(0.62000000000000011, 49),\n", - " (0.6100000000000001, 48),\n", - " (0.60000000000000009, 47),\n", - " (0.59000000000000008, 46),\n", - " (0.63000000000000012, 45),\n", - " (0.58000000000000007, 44),\n", - " (0.57000000000000006, 43),\n", - " (0.64000000000000012, 42),\n", - " (0.56000000000000005, 41),\n", - " (0.55000000000000004, 40)]" - ] - }, - "execution_count": 79, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "top(10, arange(0.5, 1.0, 0.01))" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "fDDRaiLDjrve" + }, "source": [ "It is good to see that the simulation and the exact calculation are in rough agreement; that gives me more confidence in both of them. We see here that 0.62 defeats all the other cutoffs, and 0.61 defeats all cutoffs except 0.62. The great thing about the exact calculation code is that it runs fast, regardless of how much accuracy we want. We can zero in on the range around 0.6:" ] }, { "cell_type": "code", - "execution_count": 80, + "execution_count": null, "metadata": { - "collapsed": false + "id": "rfEjXT5ojrve", + "outputId": "9f695209-61a6-4a45-8732-65d1320a28c1" }, - "outputs": [ - { - "data": { - "text/plain": [ - "[(0.6180000000000001, 199),\n", - " (0.6170000000000001, 198),\n", - " (0.6160000000000001, 197),\n", - " (0.61900000000000011, 196),\n", - " (0.6150000000000001, 195),\n", - " (0.6140000000000001, 194),\n", - " (0.6130000000000001, 193),\n", - " (0.62000000000000011, 192),\n", - " (0.6120000000000001, 191),\n", - " (0.6110000000000001, 190)]" - ] - }, - "execution_count": 80, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "top(10, arange(0.5, 0.7, 0.001))" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "9xRR0ymyjrve" + }, "source": [ "This says 0.618 is best, better than 0.620. We can get even more accuracy:" ] }, { "cell_type": "code", - "execution_count": 81, + "execution_count": null, "metadata": { - "collapsed": false + "id": "desDZPZmjrve", + "outputId": "e585de4d-e163-48a3-cce7-23c6d4a94b06" }, - "outputs": [ - { - "data": { - "text/plain": [ - "[(0.61803400000002973, 2000),\n", - " (0.6180330000000297, 1999),\n", - " (0.61803200000002967, 1998),\n", - " (0.61803500000002976, 1997),\n", - " (0.61803100000002964, 1996),\n", - " (0.61803000000002961, 1995),\n", - " (0.61802900000002958, 1994),\n", - " (0.61803600000002978, 1993),\n", - " (0.61802800000002955, 1992),\n", - " (0.61802700000002952, 1991)]" - ] - }, - "execution_count": 81, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "top(10, arange(0.617, 0.619, 0.000001))" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "M4CYznyijrve" + }, "source": [ "So 0.618034 is best. Does that number [look familiar](https://en.wikipedia.org/wiki/Golden_ratio)? Can we prove that it is what I think it is?\n", "\n", @@ -3003,22 +2588,12 @@ }, { "cell_type": "code", - "execution_count": 82, + "execution_count": null, "metadata": { - "collapsed": false + "id": "laEkc5E4jrve", + "outputId": "d81f3733-3d57-4db7-aa76-49dd2497e3e1" }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import numpy as np\n", "from mpl_toolkits.mplot3d.axes3d import Axes3D\n", @@ -3041,21 +2616,23 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "BFnzRWmcjrvf" + }, "source": [ "What does this [Pringle of Probability](http://fivethirtyeight.com/features/should-you-shoot-free-throws-underhand/) show us? The highest win percentage for **A**, the peak of the surface, occurs when *A* is around 0.5 and *B* is 0 or 1. We can confirm that, finding the maximum `Pwin(A, B)` for many different cutoff values of `A` and `B`:" ] }, { "cell_type": "code", - "execution_count": 83, + "execution_count": null, "metadata": { - "collapsed": false + "id": "srXycT1Ojrvf" }, "outputs": [], "source": [ - "cutoffs = (set(arange(0.00, 1.00, 0.01)) | \n", - " set(arange(0.500, 0.700, 0.001)) | \n", + "cutoffs = (set(arange(0.00, 1.00, 0.01)) |\n", + " set(arange(0.500, 0.700, 0.001)) |\n", " set(arange(0.61803, 0.61804, 0.000001)))\n", "\n", "def Pwin_summary(A, B): return [Pwin(A, B), 'A:', A, 'B:', B]" @@ -3063,51 +2640,33 @@ }, { "cell_type": "code", - "execution_count": 84, + "execution_count": null, "metadata": { - "collapsed": false + "id": "j6K7CT0djrvf", + "outputId": "6ebd13ae-4657-49da-9a02-b0e68242dca5" }, - "outputs": [ - { - "data": { - "text/plain": [ - "[0.625, 'A:', 0.5, 'B:', 0.0]" - ] - }, - "execution_count": 84, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "max(Pwin_summary(A, B) for A in cutoffs for B in cutoffs)" ] }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "8DgEImtDjrvf" + }, "source": [ - "So **A** could win 62.5% of the time if only **B** would chose a cutoff of 0. But, unfortunately for **A**, a rational player **B** is not going to do that. We can ask what happens if the game is changed so that player **A** has to declare a cutoff first, and then player **B** gets to respond with a cutoff, with full knowledge of **A**'s choice. In other words, what cutoff should **A** choose to maximize `Pwin(A, B)`, given that **B** is going to take that knowledge and pick a cutoff that minimizes `Pwin(A, B)`? " + "So **A** could win 62.5% of the time if only **B** would chose a cutoff of 0. But, unfortunately for **A**, a rational player **B** is not going to do that. We can ask what happens if the game is changed so that player **A** has to declare a cutoff first, and then player **B** gets to respond with a cutoff, with full knowledge of **A**'s choice. In other words, what cutoff should **A** choose to maximize `Pwin(A, B)`, given that **B** is going to take that knowledge and pick a cutoff that minimizes `Pwin(A, B)`?" ] }, { "cell_type": "code", - "execution_count": 85, + "execution_count": null, "metadata": { - "collapsed": false + "id": "1tJVzNUqjrvf", + "outputId": "ca6bdc46-fd4d-4fa4-d069-fcf173ba086a" }, - "outputs": [ - { - "data": { - "text/plain": [ - "[0.5, 'A:', 0.61803400000000008, 'B:', 0.61803400000000008]" - ] - }, - "execution_count": 85, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "max(min(Pwin_summary(A, B) for B in cutoffs)\n", " for A in cutoffs)" @@ -3115,29 +2674,21 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "Jq-yVbGIjrvf" + }, "source": [ "And what if we run it the other way around, where **B** chooses a cutoff first, and then **A** responds?" ] }, { "cell_type": "code", - "execution_count": 86, + "execution_count": null, "metadata": { - "collapsed": false + "id": "vZWIoYUDjrvf", + "outputId": "40b29cb2-4092-4f30-c67c-8ac9468909c1" }, - "outputs": [ - { - "data": { - "text/plain": [ - "[0.5, 'A:', 0.61803400000000008, 'B:', 0.61803400000000008]" - ] - }, - "execution_count": 86, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "min(max(Pwin_summary(A, B) for A in cutoffs)\n", " for B in cutoffs)" @@ -3145,7 +2696,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "id": "MwmcWGBujrvf" + }, "source": [ "In both cases, the rational choice for both players in a cutoff of 0.618034, which corresponds to the \"saddle point\" in the middle of the plot. This is a *stable equilibrium*; consider fixing *B* = 0.618034, and notice that if *A* changes to any other value, we slip off the saddle to the right or left, resulting in a worse win probability for **A**. Similarly, if we fix *A* = 0.618034, then if *B* changes to another value, we ride up the saddle to a higher win percentage for **A**, which is worse for **B**. So neither player will want to move from the saddle point.\n", "\n", @@ -3154,8 +2707,11 @@ } ], "metadata": { + "colab": { + "provenance": [] + }, "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -3169,9 +2725,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.0" + "version": "3.9.12" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 4 } diff --git a/ipynb/TwelveBalls.ipynb b/ipynb/TwelveBalls.ipynb index c0121a8..a7e6d93 100644 --- a/ipynb/TwelveBalls.ipynb +++ b/ipynb/TwelveBalls.ipynb @@ -13,27 +13,38 @@ "- *You are given twelve identical-looking balls and a two-sided balance scale. One of the balls is of a different weight, although you don't know whether it is lighter or heavier. How can you use just three weighings of the scale to determine not only what the different ball is, but also whether it is lighter or heavier?*\n", "\n", "\n", - "However I want to solve not just this specific puzzle, but related puzzles where you can vary the number of balls; vary the number of weighings allowed; or vary the possibilities for the odd ball: maybe it can only be lighter, not heavier. Or maybe it is possible that all the balls actually weigh the same. (However, it will always be the case that at most one ball is different.) If I'm going to solve a puzzle with, say, 242 balls, I'd rather use a computer program, not pencil and paper (as was intended for the 1945 version of the puzzle). \n", + "I would like to solve not just this specific puzzle, but related puzzles that vary:\n", + "- The number of balls.\n", + "- The number of weighings.\n", + "- The possibilities for the odd ball: maybe we know that it some ball is lighter, and can not be heavier. Or maybe one possibility is that all the balls actually weigh the same.\n", + "- (However, it will never be the case that *two* or more balls are different from the rest. That would change the puzzle too much.)\n", "\n", - "I originally wrote this program in Lisp around 1980, ported it to Python in 2012, and am republishing it here as a notebook after I saw the puzzle was mentioned yet again in the [538 Riddler](https://fivethirtyeight.com/features/which-billiard-ball-is-rigged/) for August 16, 2019. It also appeared in a [Numberplay](https://wordplay.blogs.nytimes.com/2014/07/21/12coin/) column in 2014 (with twelve coins instead of balls), in the Museum of Math's [Mind-Benders for the Quarantined!](https://momath.org/civicrm/?page=CiviCRM&q=civicrm/event/info&reset=1&id=1620) series in 2020, and in many other venues.\n", + "If I'm going to solve a puzzle with dozens or hundreds of balls, I'd rather use a computer program, not pencil and paper (as was intended for the 1945 version of the puzzle). I originally wrote such a program in Lisp around 1980, ported it to Python in 2012, and decided to publish it here as a notebook after seeing continued interest in the puzzle:\n", + "- A [Numberplay column](https://wordplay.blogs.nytimes.com/2014/07/21/12coin/) in 2014.\n", + "- A [MathWorld article](https://mathworld.wolfram.com/Weighing.html) in 2017.\n", + "- A [Wikipedia article](https://en.wikipedia.org/wiki/Balance_puzzle) that was started in 2018.\n", + "- A [538 Riddler column](https://fivethirtyeight.com/features/which-billiard-ball-is-rigged/) 2019.\n", + "- A [Mind-Benders for the Quarantined! entry](https://momath.org/civicrm/?page=CiviCRM&q=civicrm/event/info&reset=1&id=1620) in 2020. \n", "\n", "\n", "# Defining the Vocabulary\n", " \n", - "Here are the main concepts:\n", + "Here are the main concepts, and how I implement them in Python:\n", "\n", + "- **Puzzle**: A dataclass holding a description of the number of balls, number of allowable weighings, and the possible oddballs.\n", "- **Ball**: A positive integer from 1 to some *N*. \n", - "- **Oddball**: The one ball that is different from the others, and the way it is different: heavier or lighter. I'll use, e.g., `+3` to mean that ball `3` is heavier than the rest, `-3` to mean that ball `3` is lighter than the rest, and `0` ito mean that all the balls actually weigh the same. \n", - "- **Puzzle**: A description of the number of balls, number of allowable weighings, and the possible oddballs.\n", - "- **Answer**: Given a specific puzzle with a specific oddball, a correct **answer** means identifying the specific oddball (in the allowable number of weighings).\n", - "- **Solution**: A solution to a puzzle is a **strategy tree** that gives a correct answer for all possible oddballs (in the allowable number of weighings).\n", - "- **Strategy tree**: A tree whose root is a **weighing** (of some balls on the left versus some balls on the right) and which specifies the three posssible outcomes of the weighing. Each of these outcomes leads to either another weighing, or a leaf nodes saying which oddball is the answer, under the contingency that the given outcomes occured. Every oddball in the puzzle must appear as a leaf somewhere in the tree. \n", - "- **Outcome**: The **outcome** of a **weighing** will be that the weight of the left side is greater than, equal to, or less than the right side. \n", - "- **Partition**: Each weighing partitions the possible oddballs into three subsets, corresponding to the three possible outcomes. \n", - "- **Rule of 3**: The key insight is that one weighing partitions the set of possible oddballs into 3 subsets, two weighings into 3 x 3 = 9 subsets, three weighings into 3 x 3 x 3 = 27 subsets, and w weighings into 3w subsets. The 12 ball puzzle has 24 possible oddballs, and thus cannot possibly be solved in two weighings, but *might* be solved in three. In general, *w* weighings can never solve puzzles with more than 3w oddballs.\n", + "- **Oddball**: The one ball that is different from the others, and the way it is different: heavier or lighter. I'll use, e.g., `+3` to mean that ball `3` is heavier than the rest, `-3` to mean that ball `3` is lighter than the rest, and `0` ito mean that all the balls actually weigh the same.\n", + "- **Weighing**: a dataclass describing the set of balls on each side of the scale, and the three possible outcomes of the weighing.\n", + "- **Outcome**: The outcome of a weighing is that the weight of the left side is greater than, equal to, or less than the right side.\n", + "- **Partition**: Each weighing *partitions* the set of possible oddballs into three subsets, corresponding to the three possible outcomes.\n", + "- **Rule of 3**: A key insight is that two weighings partition the set of possible oddballs into 3 x 3 = 9 subsets, three weighings into 3 x 3 x 3 = 27 subsets, and w weighings into 3w subsets. \n", + "- **Good/Bad Partitions**: A weighing that leaves more 3(w-1) oddballs in any outcome branch is said to be a **bad partition**, and could never lead to a solution. A weighing that does not do that is a **good partition** (but might not lead to a solution).`\n", + "- **Policy tree**: A tree where the interior nodes are weighings and rthe leaves are sets of oddballs. \n", + "- **Solution**: A solution to a puzzle is a policy tree in which no path has more than the allowable number of weighings; every possible path ends with the identification of a single oddball; and all the oddballs are covered.\n", "\n", + "# Implementation of Basic Data Types and Constants\n", "\n", - "# Implementation of Data Types and Constants" + "Some imports and definitions of data types and constants:" ] }, { @@ -43,106 +54,194 @@ "outputs": [], "source": [ "from dataclasses import dataclass\n", - "from typing import Union, Literal, Optional, Dict, Set, Tuple, List, Iterable\n", + "from typing import *\n", "import random\n", "random.seed(42) # For reproducability\n", "\n", - "lt, eq, gt = 'lt', 'eq', 'gt' # The 3 possible outcomes of a weighing \n", - "unreachable = () # A branch of a tree that is impossible to reach\n", - "\n", - "Ball = int # Balls are positive integers\n", - "Oddball = int # Oddballs are positive (heavier), negative (lighter), or zero (same weight) integers\n", - "Outcome = Literal[lt, eq, gt] # Possible outcomes of a weighing\n", - "Leaf = Oddball # Leaves are oddballs\n", - "# A tree can be an weighing, or a leaf oddball, or None to indicate failure, or `unreachable`\n", - "Tree = Union['Weighing', Leaf, None, Literal[unreachable]] \n", - "\n", - "@dataclass\n", - "class Weighing:\n", - " \"\"\"An interior node of a strategy tree; represents a weighing and the three possible outcomes.\n", - " Calling `partition` returns a `Weighing` where each gt/eq/lt branch holds a set of oddballs; \n", - " then `solve` replaces each of those sets with a subtree.\"\"\"\n", - " L: List[Ball]\n", - " R: List[Ball]\n", - " gt: Union[Set[Oddball], Tree]\n", - " eq: Union[Set[Oddball], Tree]\n", - " lt: Union[Set[Oddball], Tree]\n", - "\n", - "class Puzzle:\n", - " \"\"\"A ball-weighing puzzle. \n", - " `N`: the number of balls that can be weighed\n", - " `weighings`: the number of weighings allowed\n", - " `odd`: either a collection of oddball numbers, or a string with some of the characters '+-0',\n", - " where '+' means any ball can be heavy, '-' means any ball can be light, \n", - " and '0' means that it is possible that all the balls actually weigh the same.\"\"\"\n", - " def __init__(self, N=12, weighings=3, odd='+-'):\n", - " self.N = N\n", - " self.weighings = weighings\n", - " self.odd = odd\n", - " self.balls = range(1, N + 1)\n", - " self.oddballs = (oddballs(odd, N) if isinstance(odd, str) else odd)\n", - " def __repr__(self): return f'Puzzle(N={self.N}, weighings={self.weighings}, odd={self.odd!r})'" + "empty = frozenset() # The empty set\n", + "lt, eq, gt = 'lt', 'eq', 'gt' # The 3 possible outcomes of a weighing (`lt` means the left weighs less than the right)\n", + "Outcome = Literal[lt, eq, gt] # Possible outcomes of a weighing\n", + "Ball = int # Balls are positive integers\n", + "Oddball = int # An Oddball is an integer: positive (heavier), negative (lighter), or zero (same weight)\n", + "Tree = Union['Weighing', Set[Oddball]] # A policy tree has Weighings for interior nodes and oddball sets for leaf nodes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# Implementation of Basic Functions\n", + "# The `Puzzle` class\n", "\n", - "Here are some straightforward utility functions, before we get to the main `solve` function:" + "`Puzzle` is a data class that records the number of balls, the number of allowable weighings, a collection of ball numbers, and the possible oddballs. " ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 94, "metadata": {}, "outputs": [], "source": [ - "def oddballs(odd: str, N: int) -> List[Oddball]:\n", - " \"\"\"Parse a string containing \"+-0\" into a list of oddballs.\"\"\"\n", - " oddballs = [0] if '0' in odd else []\n", - " if '+' in odd: oddballs.extend(+b for b in range(1, N + 1))\n", - " if '-' in odd: oddballs.extend(-b for b in range(1, N + 1))\n", - " return oddballs\n", - "\n", - "def weigh(L, R, oddball) -> Outcome:\n", - " \"\"\"Weighing the collection of balls `L` against the balls `R`, given the oddball; return gt, lt, or eq.\"\"\"\n", - " def heavier(L, R) -> bool: return len(L) > len(R) or oddball in L or -oddball in R\n", - " return (gt if heavier(L, R) else lt if heavier(R, L) else eq)\n", - " \n", - "def answer(tree, oddball) -> Oddball:\n", - " \"\"\"What answer does the strategy tree produce for the given oddball?\"\"\"\n", - " if isinstance(tree, Leaf):\n", - " return tree\n", - " else:\n", - " outcome = weigh(tree.L, tree.R, oddball)\n", - " return answer(getattr(tree, outcome), oddball)\n", - " \n", - "def is_solution(tree, puzzle) -> bool:\n", - " \"\"\"Does the strategy tree solve the puzzle correctly for all possible oddballs?\"\"\"\n", - " return (tree is not None and depth(tree) <= puzzle.weighings and \n", - " all(answer(tree, oddball) == oddball \n", - " for oddball in puzzle.oddballs))\n", - "\n", - "def depth(tree) -> int:\n", - " \"\"\"Maximum depth (number of weighings) in tree.\"\"\"\n", - " return (0 if isinstance(tree, Leaf) or not tree\n", - " else 1 + max(depth(tree.gt), depth(tree.eq), depth(tree.lt)))\n", - "\n", - "def first(iterable): return next(iter(iterable))" + "@dataclass\n", + "class Puzzle:\n", + " \"\"\"A ball-weighing puzzle.\"\"\"\n", + " N: int # the number of balls that can be weighed\n", + " weighings: int # the number of weighins\n", + " balls: Collection[Ball] # all the balls in the puzzle\n", + " oddballs: Set[Oddball] # the allowable oddball numbers" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Let's test out some of these functions:" + "\n", + "The convenience function `make_puzzle` allows you to specify the oddballs by setting the parameter `odd` to be either a set of oddball integers, or a string of characters:" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 95, + "metadata": {}, + "outputs": [], + "source": [ + "def make_puzzle(N, weighings, odd='+-'):\n", + " \"\"\"Create a puzzle with `N` balls, and the given number of `weighings`.\n", + " `odd` is a collection of numbers, or a string with some of the characters `+-=`,\n", + " meaning any balls might be heavy (`+`), light (`-`), or equal (`=`).\"\"\"\n", + " balls = range(1, N + 1)\n", + " if isinstance(odd, str):\n", + " sign = {'+': +1, '-': -1, '=': 0}\n", + " oddballs = {sign[ch] * b for b in balls for ch in odd}\n", + " else:\n", + " oddballs = set(odd)\n", + " return Puzzle(N, weighings, balls, oddballs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# The `Weighing` class\n", + "\n", + "`Weighing` is a simple data class:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "@dataclass\n", + "class Weighing:\n", + " \"\"\"A weighing of the balls on the left (`L`) against the balls on the right (`R`),\n", + " with three branches `gt`, `eq`, and `lt` for the three outcomes of the weighing.\"\"\"\n", + " L: List[Ball]\n", + " R: List[Ball]\n", + " gt: Tree\n", + " eq: Tree\n", + " lt: Tree" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The function call `weigh(L, R, oddballs)` weighs the `L` balls against the `R` balls assuming that only the given `oddballs` are possible. The three outcome branches partition the set of `oddballs`." + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [], + "source": [ + "def weigh(L: Collection[Ball], R: Collection[Ball], oddballs: Set[Oddball]) -> Weighing:\n", + " assert len(L) == len(R)\n", + " weighing = Weighing(L, R, set(), set(), set())\n", + " # Partition the oddballs into the three outcome branches\n", + " for b in oddballs:\n", + " if +b in L or -b in R: weighing.gt.add(b)\n", + " elif +b in R or -b in L: weighing.lt.add(b)\n", + " else: weighing.eq.add(b)\n", + " return weighing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's an example weighing where there are 5 balls, and the oddball can be lighter, heavier, or there might be no oddball:" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Weighing(L=[1, 2], R=[4, 5], gt={1, 2, -5, -4}, eq={0, 3, -3}, lt={4, 5, -2, -1})" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "weigh([1, 2], [4, 5], range(-5, 6))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The notation `gt={1, 2, -5, -4}` means that if the outcome is that the left balance pan is heavier than the right then the remaining possibilities are that the 1 or 2 ball might be heavy, or the 4 or 5 ball might be light. \n", + "\n", + "# `Tree` Functions\n", + "\n", + "Here are some straightforward utility functions on trees:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def is_solution(tree, puzzle) -> bool:\n", + " \"\"\"Is this policy tree a solution to the puzzle?\n", + " It is if it all the leaves are singletons or empty, and every oddball appears.\"\"\"\n", + " return (all(len(leaf) <= 1 for leaf in leaves(tree)) \n", + " and set().union(*leaves(tree)) == puzzle.oddballs)\n", + "\n", + "def leaves(tree: Weighing) -> List[Set[Oddball]]:\n", + " \"\"\"A list of all leaves of the tree.\"\"\"\n", + " return (leaves(tree.gt) + leaves(tree.eq) + leaves(tree.lt)\n", + " if isinstance(tree, Weighing)\n", + " else [tree])\n", + " \n", + "def branches(tree: Weighing) -> tuple:\n", + " \"\"\"The three branches of a weighing.\"\"\"\n", + " return (tree.gt, tree.eq, tree.lt)\n", + "\n", + "def is_good_partition(weighing: Weighing, w: int) -> bool:\n", + " \"Does this weighing partition the oddballs in a way that might be solved in `w` more weighings?\"\n", + " return all(len(oddballs) <= 3 ** w for oddballs in branches(weighing))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's write some simple tests for these functions:" + ] + }, + { + "cell_type": "code", + "execution_count": 125, "metadata": {}, "outputs": [ { @@ -151,21 +250,31 @@ "True" ] }, - "execution_count": 3, + "execution_count": 125, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def test1() -> bool:\n", - " puzzle3 = Puzzle(3, 1, odd='+')\n", - " solution3 = Weighing([1], [3], gt=1, eq=2, lt=3)\n", + " puzzle3 = make_puzzle(3, 1, odd='+')\n", + " solution3 = weigh([1], [3], {1, 2, 3})\n", + " \n", + " assert solution3 == Weighing(L=[1], R=[3], gt={1}, eq={2}, lt={3})\n", " assert is_solution(solution3, puzzle3)\n", - " puzzle8 = Puzzle(8, 3) \n", - " assert str(puzzle8) == \"Puzzle(N=8, weighings=3, odd='+-')\"\n", - " assert puzzle8.balls == range(1, 9)\n", - " assert puzzle8.oddballs == [1, 2, 3, 4, 5, 6, 7, 8, -1, -2, -3, -4, -5, -6, -7, -8]\n", - " assert weigh([1, 2], [3, 4], -4) == 'gt'\n", + " assert leaves(solution3) == [{1}, {2}, {3}]\n", + " assert branches(solution3) == ({1}, {2}, {3})\n", + "\n", + " assert make_puzzle(3, 1, '+').oddballs == {1, 2, 3}\n", + " assert make_puzzle(3, 1, '-').oddballs == {-1, -2, -3}\n", + " assert make_puzzle(3, 1, '+-').oddballs == {1, 2, 3, -1, -2, -3}\n", + " assert make_puzzle(3, 1, '+=').oddballs == {0, 1, 2, 3}\n", + " assert make_puzzle(3, 1, '+-=').oddballs == {0, 1, 2, 3, -1, -2, -3}\n", + " assert make_puzzle(3, 1, '+-=') == Puzzle(N=3, weighings=1, balls=range(1, 4), oddballs={0, 1, 2, 3, -2, -3, -1})\n", + "\n", + " assert not is_good_partition(weigh([1, 2, 3], [10, 11, 12], puzzle12.oddballs), 2)\n", + " assert is_good_partition(weigh([1, 2, 3, 4], [9, 10, 11, 12], puzzle12.oddballs), 2)\n", + " \n", " return True\n", "\n", "test1()" @@ -175,142 +284,62 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Partitions\n", + "# Good and Bad Partitions\n", "\n", - "Now we've got all the pieces we need to find solutions. The first step is to **partition** a collection of oddballs into three subsets by weighing one set of balls against another. We store the three subsets in a `Weighing` tree node:" + "Consider a puzzle with 12 balls and 3 weighings. Assume we start by weighing balls [7, 8, 9] against [10, 11, 12]: " ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 97, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "Weighing(L=[7, 8, 9], R=[10, 11, 12], gt={7, 8, 9, -12, -11, -10}, eq={1, 2, 3, 4, 5, 6, -2, -6, -5, -4, -3, -1}, lt={10, 11, 12, -9, -8, -7})" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "def partition(L: List[Ball], R: List[Ball], oddballs) -> Weighing:\n", - " \"A node that partitions the possible outcomes of weighing L versus R.\"\n", - " weighing = Weighing(L, R, set(), set(), set())\n", - " for oddball in oddballs:\n", - " outcome = weigh(L, R, oddball)\n", - " getattr(weighing, outcome).add(oddball)\n", - " return weighing" + "puzzle12 = make_puzzle(N=12, weighings=3)\n", + "\n", + "weigh([7, 8, 9], [10, 11, 12], puzzle12.oddballs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "For example, with 12 balls, if we weigh balls [1, 2, 3] on the left versus [10, 11, 12] on the right, then there are 6 ways the left side can be greater than the right: either 10, 11 or 12 is lighter or 1, 2, or 3 is heavier. Similarly there are 6 ways of getting a `lt` outcome. The remaining 12 possibilities—balls 4 through 9 being either heavier or lighter—show up in the `eq` branch:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Weighing(L=[1, 2, 3], R=[10, 11, 12], gt={1, 2, 3, -12, -11, -10}, eq={4, 5, 6, 7, 8, 9, -9, -8, -7, -6, -5, -4}, lt={10, 11, 12, -2, -3, -1})" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "puzzle12 = Puzzle(12, 3)\n", + "If this was the first weighing in our policy tree, could we go on to solve the puzzle? \n", "\n", - "partition([1, 2, 3], [10, 11, 12], puzzle12.oddballs)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If this was the first weighing in our strategy tree, could we go on to solve the puzzle? \n", + "The answer is: **No!** If the outcome is `eq` (the scale balances) then there are 12 possible oddballs remaining (any of 1–6 could be either heavy or light). We only have *w* = 2 weighings left, and 12 > 32, so the **rule of 3** tells us it is impossible to reach a solution from here. This a **bad partition**. \n", "\n", - "**No!** After using one of our three weighings we can only solve the puzzle if every branch of the partition has no more than 32 = 9 oddballs, but here we have 12 oddballs in the `eq` branch. We call this a **bad partition**. A good partition is one where no branch has more than 3w oddballs when there are *w* remaining weighings. Being a good partition does not guarantee that the puzzle is solvable from there; but being a bad partition guarantees that it is not solvable.\n", - " " + "Here's a **good partition**, in which no branch has more than 32 = 9 oddballs:" ] }, { "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "def good_partition(node, w) -> bool:\n", - " \"Is this a partition which might lead to a solution in `w` more weighings?\"\n", - " return all(len(oddballs) <= 3 ** w for oddballs in (node.lt, node.eq, node.gt))" - ] - }, - { - "cell_type": "code", - "execution_count": 7, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "False" + "Weighing(L=[5, 6, 7, 8], R=[9, 10, 11, 12], gt={5, 6, 7, 8, -12, -11, -10, -9}, eq={1, 2, 3, 4, -2, -4, -3, -1}, lt={9, 10, 11, 12, -8, -7, -6, -5})" ] }, - "execution_count": 7, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "good_partition(partition([1, 2, 3], [10, 11, 12], puzzle12.oddballs), 2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "With 12 balls, weighing 4 balls on each side is a good partition because each of the branches has 8 possibilities, and 8 is less than 32:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Weighing(L=[1, 2, 3, 4], R=[9, 10, 11, 12], gt={1, 2, 3, 4, -12, -11, -10, -9}, eq={5, 6, 7, 8, -8, -7, -6, -5}, lt={9, 10, 11, 12, -2, -4, -3, -1})" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "partition4 = partition([1, 2, 3, 4], [9, 10, 11, 12], puzzle12.oddballs)\n", - "partition4" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "good_partition(partition4, 2)" + "weigh([5, 6, 7, 8], [9, 10, 11, 12], puzzle12.oddballs)" ] }, { @@ -319,95 +348,76 @@ "source": [ "# Solving Puzzles\n", "\n", - "So now we have a viable approach to implementing `solve`: it partitions oddballs down to singletons (or gives up and returns `None` if that can't be done in the allowable number of weighings). For each subset of oddballs in a partition, recursively call `solve` on a new subproblem.\n", - " \n", - "Much of the work is done by `good_partitions`. It is a generator that yields good partitions (i.e. ones that might lead to a solution). Most of the time the first or one of the first few partitions will be accepted, but if a partition does not lead to a solution, it will keep generating new attempts up to `tries` times (default 300). It prefers shorter lists of balls on each side of the scale, but is not guaranteed to pick the shortest possible lists. After each try it randomly shuffles the balls, in order to get a different partition on the next try. (I note that for puzzles that specify `odd` as a `\"+-0\"` string, there's no sense making multiple tries on the first weighing–the only choice that matters is how many balls, `B`, to put on each side, because the balls are undifferentiated at this point. So I try each value of `B` only once.) If I wanted to solve puzzles with thousands of balls, not just dozens to hundreds, I would come back and make `good_partitions` more efficient." + "So now we have a viable approach to implementing `solve(puzzle)`: build a policy tree that partitions oddballs down to singletons (or give up and return `None` if that can't be done in the allowable number of weighings). For each subset of oddballs in a partition, recursively call `solve` on a new subpuzzle. Since we don't know for sure which balls to weigh at each point, call `good_partitions` to generate multiple possible good partitions, and try to find one that works." ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 71, "metadata": {}, "outputs": [], "source": [ - "def solve(puzzle) -> Tree:\n", - " \"Find a tree that covers all the oddballs in the given number of weighings.\"\n", - " N, weighings, oddballs = puzzle.N, puzzle.weighings, puzzle.oddballs\n", - " if len(oddballs) == 1:\n", - " return first(oddballs) # One possibile oddball: an answer\n", - " elif len(oddballs) == 0:\n", - " return unreachable # This branch of the tree will never be reached\n", - " elif weighings == 0:\n", - " return None # No solution; failure\n", - " else:\n", - " for node in good_partitions(puzzle):\n", - " node.lt = solve(Puzzle(N, weighings-1, node.lt))\n", - " node.eq = solve(Puzzle(N, weighings-1, node.eq))\n", - " node.gt = solve(Puzzle(N, weighings-1, node.gt))\n", - " if None not in (node.lt, node.eq, node.gt):\n", - " return node\n", - " return None # No solution; failure\n", - "\n", - "def good_partitions(puzzle, tries=100) -> Iterable[Weighing]:\n", + "def solve(puzzle) -> Optional[Tree]:\n", + " \"\"\"Find a tree that covers all the oddballs in the puzzle within the given number of weighings.\"\"\"\n", + " N, w, oddballs = puzzle.N, puzzle.weighings, puzzle.oddballs\n", + " if len(oddballs) <= 1: # No choices left; this branch is complete\n", + " return oddballs\n", + " elif len(oddballs) > 3 ** w: # Impossible to solve from here\n", + " return None\n", + " elif w > 0: # Find a partition that works\n", + " for partition in good_partitions(puzzle):\n", + " partition.lt = solve(make_puzzle(N, w - 1, partition.lt))\n", + " partition.eq = solve(make_puzzle(N, w - 1, partition.eq))\n", + " partition.gt = solve(make_puzzle(N, w - 1, partition.gt))\n", + " if None not in branches(partition):\n", + " return partition\n", + " return None # No solution; failure" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Much of the work is done by `good_partitions`, a generator that yields good partitions. For now, I'm not going to try to be clever about choosing partitions. For values of `B` from 1 to `N/2`, I'll try to weigh the first `B` balls on the left against the last `B` balls on the right. If that results ina good partition, I'll yield it. Then I'll randomly shuffle the balls and repeat the whole process (`repeat` times), so that I'll get different sets of balls on the left and right on each try." + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [], + "source": [ + "def good_partitions(puzzle, repeat=100) -> Iterable[Weighing]:\n", " \"Yield random good partitions.\"\n", - " oddballs, weighings, balls = puzzle.oddballs, puzzle.weighings, list(puzzle.balls)\n", - " if isinstance(puzzle.odd, str):\n", - " tries = 1 # First weighing, undifferentiated balls: only need to try once.\n", - " for _ in range(tries): \n", - " for B in range(1, 1 + len(balls) // 2):\n", + " oddballs, w, balls = puzzle.oddballs, puzzle.weighings, sorted(puzzle.balls)\n", + " for _ in range(repeat): \n", + " for B in range(1, len(balls) // 2 + 1):\n", " L, R = balls[:B], balls[-B:]\n", - " node = partition(L, R, oddballs)\n", - " if good_partition(node, weighings - 1):\n", - " yield node\n", - " random.shuffle(balls)" + " partition = weigh(L, R, oddballs)\n", + " if is_good_partition(partition, w - 1):\n", + " yield partition\n", + " random.shuffle(balls) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Here we see that `good_partitions` does its job:" + "We can check to see if `solve` does the job:" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 103, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "Weighing(L=[1, 2, 3, 4], R=[9, 10, 11, 12], gt={1, 2, 3, 4, -12, -11, -10, -9}, eq={5, 6, 7, 8, -8, -7, -6, -5}, lt={9, 10, 11, 12, -2, -4, -3, -1})" + "Weighing(L=[1, 2, 3, 4], R=[9, 10, 11, 12], gt=Weighing(L=[1, 8, 3, 7, 10], R=[2, 9, 5, 4, 6], gt=Weighing(L=[7, 4, 3], R=[11, 5, 1], gt={3}, eq={-9}, lt={1}), eq=Weighing(L=[1], R=[12], gt={-12}, eq={-11}, lt=set()), lt=Weighing(L=[4, 8, 9], R=[2, 11, 7], gt={4}, eq={-10}, lt={2})), eq=Weighing(L=[2, 1, 10, 9, 11], R=[6, 12, 5, 3, 8], gt=Weighing(L=[1, 2, 3, 4, 5], R=[8, 9, 10, 11, 12], gt={-8}, eq={-6}, lt={-5}), eq=Weighing(L=[1, 2, 3, 4, 5, 6], R=[7, 8, 9, 10, 11, 12], gt={-7}, eq=set(), lt={7}), lt=Weighing(L=[1, 2, 3, 4, 5], R=[8, 9, 10, 11, 12], gt={5}, eq={6}, lt={8})), lt=Weighing(L=[11, 4, 2, 10], R=[3, 12, 7, 6], gt=Weighing(L=[10, 5, 6, 12], R=[11, 8, 1, 9], gt={10}, eq={-3}, lt={11}), eq=Weighing(L=[1], R=[12], gt=set(), eq={9}, lt={-1}), lt=Weighing(L=[7, 11, 8, 10, 1], R=[12, 6, 4, 5, 3], gt={-4}, eq={-2}, lt={12})))" ] }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "first(good_partitions(puzzle12))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And so does `solve`:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Weighing(L=[1, 2, 3, 4], R=[9, 10, 11, 12], gt=Weighing(L=[7, 5, 2, 12], R=[1, 11, 9, 3], gt=Weighing(L=[1, 4, 6, 11], R=[12, 5, 3, 9], gt=-9, eq=2, lt=-11), eq=Weighing(L=[1, 2, 3], R=[10, 11, 12], gt=-10, eq=4, lt=()), lt=Weighing(L=[3], R=[1], gt=3, eq=-12, lt=1)), eq=Weighing(L=[7, 4, 5], R=[3, 6, 11], gt=Weighing(L=[10, 5], R=[7, 3], gt=5, eq=-6, lt=7), eq=Weighing(L=[1, 2, 3, 4, 5], R=[8, 9, 10, 11, 12], gt=-8, eq=(), lt=8), lt=Weighing(L=[1, 11, 12, 2, 5], R=[7, 8, 3, 4, 9], gt=-7, eq=6, lt=-5)), lt=Weighing(L=[8, 6, 3, 9], R=[5, 1, 2, 11], gt=Weighing(L=[5, 4], R=[1, 9], gt=-1, eq=-2, lt=9), eq=Weighing(L=[10, 11, 6], R=[12, 8, 3], gt=10, eq=-4, lt=12), lt=Weighing(L=[1, 2], R=[11, 12], gt=(), eq=-3, lt=11)))" - ] - }, - "execution_count": 12, + "execution_count": 103, "metadata": {}, "output_type": "execute_result" } @@ -420,34 +430,36 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "OK, that's really hard to read–my bad. Let's look at a much easier puzzle: 3 balls, 1 weighing allowed, and the oddball can only be heavier:" + "The good news is that it appears to get an answer; the bad news is that the output is really hard to read. \n", + "\n", + "Let's look at a trivial puzzle: 3 balls, 1 weighing allowed, and the oddball can only be heavier:" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 104, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "Weighing(L=[1], R=[3], gt=1, eq=2, lt=3)" + "Weighing(L=[1], R=[3], gt={1}, eq={2}, lt={3})" ] }, - "execution_count": 13, + "execution_count": 104, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "solve(Puzzle(3, 1, odd='+'))" + "solve(make_puzzle(3, 1, odd='+'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "This trivial tree says you weigh the first ball against the third (leaving the second unweighed), and the three possible weighing outcomes tell you which of the three balls is heavier. " + "This trivial policy tree says you weigh the first ball against the third (leaving the second unweighed), and the three possible weighing outcomes tell you which of the three balls is heavier. That looks right." ] }, { @@ -456,153 +468,199 @@ "source": [ "# Prettier Output\n", "\n", - "Let's make the output easier to read. The function`do(puzzle)` will solve the puzzle, verify that the tree is valid (if it is not `None`), and print the tree in a pretty format using the function `pretty_str(tree)`:\n", - "- Balls number 1 to 50 are represented as the Unicode characters `①` to `㊿`, and higher numbers by various other Unicode characters, mostly ball-like.\n", - "- A string like `①②③④ ⚖ ⑨⑩⑪⑫ ➔` represents a weighing;\n", - "- The three branches of a tree are represented by the prefixes \">:\" or \"=:\" or \"<:\" (on indented lines, unless they are all leaves).\n", - "- The empty tree, representing the fact that all balls balance is represented as \"≡\"." + "Let's make the output easier to read. The function`do(puzzle)` will solve the puzzle, verify that the tree is valid, and print the tree in a pretty format using the function `pretty_tree(tree)`. The format is:\n", + "- Balls are represented by Unicode characters: `①` or `②`.\n", + "- An oddball is represented with a plus or minus sign for heavy or light: `+①` or `-②`.\n", + "- A weighing is represented by a string with a balance scale symbol: `[①② ⚖ ③④] ➔`.\n", + "- The three branches of a tree are represented by the prefixes \"`>:`\" or \"`=:`\" or \"`<:`\".\n", + "- The empty set of oddballs (meaning no ball is heavier) is represented by `∅`.\n", + "- An impossible branch is represented by the character `!` (as when weighing have ① > ② > ③).\n", + "- Branches are on indented lines, unless the branches are all leaves." ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 132, "metadata": {}, "outputs": [], "source": [ - "def do(puzzle):\n", + "def do(puzzle) -> None:\n", " \"Solve the puzzle; verify the solution; and print the solution in a pretty format.\"\n", " tree = solve(puzzle)\n", " assert (tree is None) or is_solution(tree, puzzle)\n", - " print(pretty_str(tree))\n", + " print(pretty_tree(tree))\n", " \n", - "def pretty_str(tree, depth=0, prefix='') -> str:\n", - " \"Pretty, indented string representing a strategy tree.\"\n", - " if tree in (None, 0, unreachable):\n", - " return f'{prefix}{tree}'\n", - " elif isinstance(tree, Leaf):\n", - " return f'{prefix}{\"+\" if tree > 0 else \"-\"}{ballstr([abs(tree)])}'\n", - " else:\n", - " subtrees = (pretty_str(tree.gt, depth + 1, '>:'), \n", - " pretty_str(tree.eq, depth + 1, '=:'), \n", - " pretty_str(tree.lt, depth + 1, '<:'))\n", + "def pretty_tree(tree, depth=0, prefix='') -> str:\n", + " \"Pretty, indented string representing a policy tree.\"\n", + " if tree is None:\n", + " return 'No solution'\n", + " elif isinstance(tree, Weighing):\n", + " subtrees = (pretty_tree(tree.gt, depth + 1, '>:'), \n", + " pretty_tree(tree.eq, depth + 1, '=:'), \n", + " pretty_tree(tree.lt, depth + 1, '<:'))\n", " indent = ('' if depth == 0 else ('\\n' + ' ' * depth))\n", - " return f'{indent}{prefix}{ballstr(tree.L)} ⚖ {ballstr(tree.R)} ➔ {\" \".join(subtrees)}'\n", + " return f'{indent}{prefix}[{ball_str(tree.L)} ⚖ {ball_str(tree.R)}] ➔ {\" \".join(subtrees)}'\n", + " else: # tree is a set of oddballs\n", + " return f'{prefix}{oddball_str(tree)}'\n", " \n", - "def ballstr(balls: List[Ball]) -> str:\n", - " \"\"\"Unicode character string representing a list of balls. The first 50 balls are easy; then it gets a bit wacky.\"\"\"\n", - " return ''.join(BALLS[i] if (1 <= i < len(BALLS)) else f'{i}' for i in balls)\n", + "def ball_str(balls: List[Ball]) -> str:\n", + " \"\"\"Unicode character string representing a list of balls.\"\"\"\n", + " return cat(BALLS[i] if (0 <= i < len(BALLS)) else f'({i})' \n", + " for i in sorted(balls))\n", "\n", - "BALLS = (' ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿'\n", + "def oddball_str(oddballs) -> str:\n", + " \"\"\"Unicode character string representing a list of oddballs.\n", + " Normally a string like '-①+②', but the empty list returns '!'.\"\"\"\n", + " if not oddballs:\n", + " return '!'\n", + " else:\n", + " return cat((\"+\" if b > 0 else \"-\" if b < 0 else \"\") + ball_str([abs(b)]) \n", + " for b in oddballs)\n", + "\n", + "cat = ''.join\n", + "\n", + "BALLS = ('∅①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿'\n", " 'ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏ'\n", " 'ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ'\n", " '⦰⦱⦲⦳⦴⦵⦶⦷⦸⦹⦺⦻⦼⦽⦾⦿⧀⧁⧂⧃⨀⨁⨂⨴⨵⨶⨷⨸⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾')" ] }, { - "cell_type": "code", - "execution_count": 15, + "cell_type": "markdown", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "① ⚖ ③ ➔ >:+① =:+② <:+③\n" - ] - } - ], "source": [ - "# The easier puzzle from before: 3 balls, 1 weighing, only heavier balls possible\n", - "do(Puzzle(3, 1, odd='+'))" + "# Easy Puzzle Solutions\n", + "\n", + "Now that the results will be readable, let's solve some puzzles:" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 133, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "① ⚖ ③ ➔ \n", - " >:② ⚖ ① ➔ >:() =:-③ <:+① \n", - " =:② ⚖ ① ➔ >:+② =:0 <:-② \n", - " <:① ⚖ ② ➔ >:() =:+③ <:-①\n" + "[① ⚖ ③] ➔ >:+① =:+② <:+③\n" + ] + } + ], + "source": [ + "# The trivial puzzle from before: 3 balls, 1 weighing, only heavier balls possible\n", + "do(make_puzzle(3, 1, odd='+'))" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[①②③ ⚖ ⑦⑧⑨] ➔ \n", + " >:[②⑤ ⚖ ③④] ➔ >:+② =:+① <:+③ \n", + " =:[①②③④ ⚖ ⑥⑦⑧⑨] ➔ >:+④ =:+⑤ <:+⑥ \n", + " <:[①④⑤⑧ ⚖ ②③⑥⑨] ➔ >:+⑧ =:+⑦ <:+⑨\n" + ] + } + ], + "source": [ + "# 9 balls, 2 weighings, odd ball can only be heavier\n", + "do(make_puzzle(9, 2, '+'))" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(① ⚖ ③) ➔ \n", + " >:(② ⚖ ①) ➔ >:! =:-③ <:+① \n", + " =:(② ⚖ ③) ➔ >:+② =:∅ <:-② \n", + " <:(① ⚖ ②) ➔ >:! =:+③ <:-①\n" ] } ], "source": [ "# 3 balls, 2 weighings, lighter, heavier or equal balls possible\n", - "do(Puzzle(3, 2, '+-0'))" + "do(make_puzzle(3, 2, '+-='))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Note that if both weighings have the outcome of weighing the same, then the string `=:0` above means that the answer is that no ball is different. \n", + "Six of the outcomes (of the second weighings) correctly identify the numbered oddball. But there are three special outcomes:\n", + "- `=:∅` means there is no oddball; all balls weigh the same.\n", + "- `>:!` means this outcome is impossible (because it implies that `② > ① > ③`, and we know only one ball can have an odd weight).\n", + "- `<:!` also indicates an impossible outcome (because it implies `① < ③ < ②`).\n", "\n", - "Also, if the first weighing's outcome is that ① is heavier than ③ , and the second weighing's outcome is that ② is heavier than ①, then the string `>:()` above means that this pair of outcomes is impossible; there can be only one heavier ball, so it can't be that ② > ① > ③." + "Let's look at the original puzzle with 12 balls and 3 weighings. We'll run it twice and get two random solutions:" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 135, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "①②③④ ⚖ ⑨⑩⑪⑫ ➔ \n", - " >:④⑫① ⚖ ③⑧② ➔ \n", - " >:① ⚖ ⑫ ➔ >:+① =:+④ <:() \n", - " =:⑦⑩ ⚖ ②⑪ ➔ >:-⑪ =:-⑨ <:-⑩ \n", - " <:⑤①⑩④⑨ ⚖ ⑫⑦⑪③⑥ ➔ >:-⑫ =:+② <:+③ \n", - " =:⑩⑥⑤① ⚖ ⑦③④② ➔ \n", - " >:③⑫① ⚖ ⑦⑤⑨ ➔ >:-⑦ =:+⑥ <:+⑤ \n", - " =:①②③④⑤ ⚖ ⑧⑨⑩⑪⑫ ➔ >:-⑧ =:() <:+⑧ \n", - " <:②③⑫ ⚖ ⑤⑦① ➔ >:-⑤ =:-⑥ <:+⑦ \n", - " <:⑫⑧③⑦ ⚖ ⑨⑩①⑥ ➔ \n", - " >:⑨⑩③⑥① ⚖ ⑪②④⑧⑤ ➔ >:() =:+⑫ <:-① \n", - " =:⑧③⑦ ⚖ ②⑩⑪ ➔ >:-② =:-④ <:+⑪ \n", - " <:③⑩ ⚖ ①④ ➔ >:+⑩ =:+⑨ <:-③\n" + "[①②③④ ⚖ ⑨⑩⑪⑫] ➔ \n", + " >:[①②⑦⑫ ⚖ ③④⑥⑩] ➔ \n", + " >:[②⑥⑦⑪⑫ ⚖ ①③⑤⑧⑨] ➔ >:+② =:-⑩ <:+① \n", + " =:[①② ⚖ ⑪⑫] ➔ >:-⑪ =:-⑨ <:! \n", + " <:[④⑧⑩⑪⑫ ⚖ ①②⑤⑥⑦] ➔ >:+④ =:+③ <:-⑫ \n", + " =:[④⑧⑩⑫ ⚖ ②⑥⑦⑨] ➔ \n", + " >:[⑥⑧⑨⑩ ⚖ ①②③④] ➔ >:+⑧ =:-⑦ <:-⑥ \n", + " =:[①②③④⑤ ⚖ ⑧⑨⑩⑪⑫] ➔ >:+⑤ =:! <:-⑤ \n", + " <:[⑥⑧⑪ ⚖ ①②④] ➔ >:+⑥ =:+⑦ <:-⑧ \n", + " <:[①③⑦⑩ ⚖ ④⑤⑧⑨] ➔ \n", + " >:[①②③ ⚖ ⑩⑪⑫] ➔ >:! =:-④ <:+⑩ \n", + " =:[⑫ ⚖ ⑪] ➔ >:+⑫ =:-② <:+⑪ \n", + " <:[⑤⑦⑧ ⚖ ③⑨⑩] ➔ >:-③ =:-① <:+⑨\n" ] } ], "source": [ - "# The original puzzle with 12 balls and 3 weighings\n", "do(puzzle12)" ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 136, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "①②③④ ⚖ ⑨⑩⑪⑫ ➔ \n", - " >:⑩①⑤ ⚖ ④③⑨ ➔ \n", - " >:① ⚖ ⑫ ➔ >:+① =:-⑨ <:() \n", - " =:④⑨⑦ ⚖ ②③⑫ ➔ >:-⑫ =:-⑪ <:+② \n", - " <:①⑪③ ⚖ ④⑫⑤ ➔ >:+③ =:-⑩ <:+④ \n", - " =:⑧⑪⑥ ⚖ ②③⑤ ➔ \n", - " >:①④⑫⑪③ ⚖ ⑧②⑦⑤⑨ ➔ >:-⑤ =:+⑥ <:+⑧ \n", - " =:①②③④⑤⑥ ⚖ ⑦⑧⑨⑩⑪⑫ ➔ >:-⑦ =:() <:+⑦ \n", - " <:⑩⑨⑥ ⚖ ⑧①④ ➔ >:-⑧ =:+⑤ <:-⑥ \n", - " <:⑥⑩⑧① ⚖ ⑨④⑦③ ➔ \n", - " >:⑦⑥ ⚖ ③⑩ ➔ >:-③ =:-④ <:+⑩ \n", - " =:⑫④① ⚖ ⑪⑧⑦ ➔ >:+⑫ =:-② <:+⑪ \n", - " <:① ⚖ ⑫ ➔ >:() =:+⑨ <:-①\n" + "[①②③④ ⚖ ⑨⑩⑪⑫] ➔ \n", + " >:[③⑦⑫ ⚖ ②⑨⑩] ➔ \n", + " >:[②⑩ ⚖ ⑦⑨] ➔ >:-⑨ =:+③ <:-⑩ \n", + " =:[①②⑤ ⚖ ④⑥⑩] ➔ >:+① =:-⑪ <:+④ \n", + " <:[① ⚖ ⑫] ➔ >:-⑫ =:+② <:! \n", + " =:[②③④⑦⑧ ⚖ ①⑥⑨⑪⑫] ➔ \n", + " >:[②⑤⑦⑨⑩ ⚖ ③④⑧⑪⑫] ➔ >:+⑦ =:-⑥ <:+⑧ \n", + " =:[①②③④⑤ ⚖ ⑧⑨⑩⑪⑫] ➔ >:+⑤ =:! <:-⑤ \n", + " <:[①③⑥⑦⑨ ⚖ ②④⑤⑩⑪] ➔ >:+⑥ =:-⑧ <:-⑦ \n", + " <:[④⑤⑨ ⚖ ①②⑪] ➔ \n", + " >:[②⑪ ⚖ ①⑤] ➔ >:-① =:+⑨ <:-② \n", + " =:[③⑤⑥⑧⑩ ⚖ ②④⑦⑨⑪] ➔ >:+⑩ =:+⑫ <:-③ \n", + " <:[①② ⚖ ⑪⑫] ➔ >:! =:-④ <:+⑪\n" ] } ], "source": [ - "# A different random solution to the same puzzle\n", "do(puzzle12)" ] }, @@ -612,7 +670,7 @@ "tags": [] }, "source": [ - "I note that the traditional answer to the 12-ball puzzle weighs 4 balls on each side of the first weighing, three balls on the second weighing, and 2 balls on the third weighing. But my program is not so orderly. It always weighs 4 balls on the first weighing (because that is the only good partition), but from there it can vary; it won't necessarily minimize the number of balls on each side of the scale, nor make one branch of the tree be symmetric with another branch.\n", + "I note that the traditional answer to the 12-ball puzzle weighs 4 balls on each side of the first weighing, three balls on the second weighing, and 1 ball on each side on the third weighing. But my program won't necessarily minimize the number of balls on each side of the scale, nor make one branch of the tree be symmetric with another branch.\n", "\n", "# Other Puzzles with 3 Weighings\n", "\n" @@ -627,7 +685,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -635,146 +693,30 @@ "output_type": "stream", "text": [ "①②③④ ⚖ ⑨⑩⑪⑫ ➔ \n", - " >:①⑦⑧⑨ ⚖ ⑪⑫④③ ➔ \n", - " >:②⑨④①⑫ ⚖ ⑩⑧③⑦⑥ ➔ >:+① =:-⑪ <:-⑫ \n", - " =:①② ⚖ ⑪⑫ ➔ >:+② =:-⑩ <:() \n", - " <:⑩②⑤③ ⚖ ④⑫⑦⑧ ➔ >:+③ =:-⑨ <:+④ \n", - " =:⑤①⑧ ⚖ ③⑦④ ➔ \n", - " >:①②③④⑤ ⚖ ⑧⑨⑩⑪⑫ ➔ >:+⑤ =:-⑦ <:+⑧ \n", - " =:①②③④⑤⑥ ⚖ ⑦⑧⑨⑩⑪⑫ ➔ >:+⑥ =:0 <:-⑥ \n", - " <:①②③④⑤ ⚖ ⑧⑨⑩⑪⑫ ➔ >:-⑧ =:+⑦ <:-⑤ \n", - " <:⑪⑥③ ⚖ ④⑫① ➔ \n", - " >:⑦⑨ ⚖ ①⑪ ➔ >:-① =:-④ <:+⑪ \n", - " =:⑨⑤⑥② ⚖ ③④⑦⑧ ➔ >:+⑨ =:+⑩ <:-② \n", - " <:① ⚖ ⑫ ➔ >:() =:-③ <:+⑫\n" + " >:④⑧⑫ ⚖ ③⑩⑪ ➔ \n", + " >:④⑤⑥⑩ ⚖ ①③⑦⑧ ➔ >:+④ =:-⑪ <:-⑩ \n", + " =:②④ ⚖ ①⑩ ➔ >:+② =:-⑨ <:+① \n", + " <:① ⚖ ⑫ ➔ >:-⑫ =:+③ <:! \n", + " =:①②③⑨ ⚖ ⑥⑦⑧⑪ ➔ \n", + " >:③⑦ ⚖ ⑧⑪ ➔ >:-⑧ =:-⑥ <:-⑦ \n", + " =:①②③④⑤ ⚖ ⑧⑨⑩⑪⑫ ➔ >:+⑤ =:∅ <:-⑤ \n", + " <:①⑦ ⚖ ②⑥ ➔ >:+⑦ =:+⑧ <:+⑥ \n", + " <:②⑤⑦⑧ ⚖ ①③④⑩ ➔ \n", + " >:①②⑧⑩⑫ ⚖ ③⑤⑦⑨⑪ ➔ >:-③ =:-④ <:-① \n", + " =:②⑪ ⚖ ⑧⑫ ➔ >:+⑪ =:+⑨ <:+⑫ \n", + " <:①② ⚖ ⑪⑫ ➔ >:! =:+⑩ <:-②\n" ] } ], "source": [ - "do(Puzzle(12, 3, odd='+-0'))" + "do(make_puzzle(12, 3, odd='+-='))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Can we solve the **13-balls in 3 weighings** puzzle, which has 26 possibilities? After all, 26 is less than 33 = 27." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "None\n" - ] - } - ], - "source": [ - "puzzle13 = Puzzle(13, 3, odd='+-')\n", - "do(puzzle13)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**No**, and the reason is that there is no first weighing that partitions the 26 possibilities into three branches, each of which has 9 or fewer possibilities (and thus can be handled in the two remaining weighings). No matter what we do, there will always be a branch with 10 or more possibilities:" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Weighing(L=[1, 2, 3, 4], R=[10, 11, 12, 13], gt={1, 2, 3, 4, -13, -12, -11, -10}, eq={5, 6, 7, 8, 9, -9, -8, -7, -6, -5}, lt={10, 11, 12, 13, -2, -4, -3, -1})" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "partition([1, 2, 3, 4], [10, 11, 12, 13], puzzle13.oddballs)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Weighing(L=[1, 2, 3, 4, 5], R=[9, 10, 11, 12, 13], gt={1, 2, 3, 4, 5, -13, -12, -11, -10, -9}, eq={6, 7, 8, -8, -7, -6}, lt={9, 10, 11, 12, 13, -2, -5, -4, -3, -1})" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "partition([1, 2, 3, 4, 5], [9, 10, 11, 12, 13], puzzle13.oddballs)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "I'll define `partition_sizes` to make this more clear:" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "def partition_sizes(puzzle, B) -> List[int]:\n", - " \"How big is each branch of a partition with B balls on both sides?\"\n", - " node = partition(puzzle.balls[:B], puzzle.balls[-B:], puzzle.oddballs)\n", - " return [len(oddballs) for oddballs in (node.gt, node.eq, node.lt)]" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{1: [2, 22, 2],\n", - " 2: [4, 18, 4],\n", - " 3: [6, 14, 6],\n", - " 4: [8, 10, 8],\n", - " 5: [10, 6, 10],\n", - " 6: [12, 2, 12]}" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "{B: partition_sizes(puzzle13, B) for B in range(1, 7)}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can do **27 balls in 3 weighings** if we know that the oddball can only be lighter, not heavier (or vice-versa):" + "Can we solve the **13-light-or-heavy-balls in 3 weighings** puzzle, which has 26 possibilities? After all, 26 is less than 33 = 27." ] }, { @@ -786,67 +728,42 @@ "name": "stdout", "output_type": "stream", "text": [ - "①②③④⑤⑥⑦⑧⑨ ⚖ ⑲⑳㉑㉒㉓㉔㉕㉖㉗ ➔ \n", - " >:⑫⑭⑥④⑩⑱㉒⑦①⑤㉓⑳ ⚖ ③⑮⑲⑰⑬⑨㉔⑧⑯⑪②㉖ ➔ \n", - " >:⑯㉓②㉑⑭⑮⑪⑦⑰⑬⑲ ⚖ ⑫⑳㉕①④⑥㉗⑱㉖⑤⑨ ➔ >:-㉖ =:-㉔ <:-⑲ \n", - " =:⑯⑲⑤⑥㉒⑰⑳⑭⑫㉕ ⚖ ㉗①㉔③⑮④⑦⑨⑬② ➔ >:-㉗ =:-㉑ <:-㉕ \n", - " <:㉖⑫⑤②⑮㉗㉔㉓ ⚖ ⑬㉕⑦③①⑯⑳㉑ ➔ >:-⑳ =:-㉒ <:-㉓ \n", - " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫ ⚖ ⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗ ➔ \n", - " >:⑥㉑⑧④②③⑲⑯ ⚖ ㉕㉓⑤⑨㉗⑰⑫⑦ ➔ >:-⑰ =:-⑱ <:-⑯ \n", - " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬ ⚖ ⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗ ➔ >:-⑮ =:-⑭ <:-⑬ \n", - " <:㉓㉗⑬⑥⑨⑧⑳⑲⑩ ⚖ ③⑭⑤⑮㉒㉕㉑②⑫ ➔ >:-⑫ =:-⑪ <:-⑩ \n", - " <:③㉔⑬⑨②⑩⑱⑰㉖ ⚖ ⑧⑳①㉒⑪⑭④㉕⑮ ➔ \n", - " >:㉓⑥⑦④㉗㉔⑫㉑⑰ ⚖ ①⑨㉕⑪⑭②⑳③⑮ ➔ >:-① =:-⑧ <:-④ \n", - " =:㉓⑯⑬⑥⑪⑳ ⚖ ⑦㉒⑲㉑㉖⑨ ➔ >:-⑦ =:-⑤ <:-⑥ \n", - " <:⑬㉓⑪㉕⑰⑮② ⚖ ⑨㉖㉑⑦④㉔⑳ ➔ >:-⑨ =:-③ <:-②\n" + "No solution\n" ] } ], "source": [ - "do(Puzzle(27, 3, '-'))" + "puzzle13 = make_puzzle(13, 3, odd='+-')\n", + "do(puzzle13)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "And we can do **26 balls** under the condition that either one ball is lighter or all the balls weigh the same:" + "**No**, and we can see why by looking at the sizes of the three partitions. For the first weighing we need to find some number of balls *B* to put on each side of the scale so that there will be no more than 9 balls in any partition. It seems best to choose a *B* that is near *N*/3, where *N* is the number of balls in the puzzle, to partition the oddballs into thirds. \n", + "\n", + "So for *N* = 13, it looks like *B* = 4 or 5 balls is the best bet, but to help figure it out, I'll define the function `partition_sizes` to build a dict that, for various numbers *B* of balls gives the sizes of the three resulting branches of the partition, and tells whether the partition is *good* or *bad*." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "①②③④⑤⑥⑦⑧⑨ ⚖ ⑱⑲⑳㉑㉒㉓㉔㉕㉖ ➔ \n", - " >:㉖⑲⑫⑤⑱ ⚖ ㉔㉓⑨⑳⑥ ➔ \n", - " >:⑰⑩②⑨⑦㉔⑧⑭⑲㉖⑬ ⚖ ㉓③⑤㉒⑯⑮⑥㉑⑪⑱⑫ ➔ >:-㉓ =:-⑳ <:-㉔ \n", - " =:⑩⑧⑭㉖㉑ ⚖ ㉓㉕⑱⑰③ ➔ >:-㉕ =:-㉒ <:-㉑ \n", - " <:⑩㉔⑫㉒⑦⑧⑱ ⚖ ⑮⑲④⑯⑭㉑㉓ ➔ >:-⑲ =:-㉖ <:-⑱ \n", - " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫ ⚖ ⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖ ➔ \n", - " >:⑦⑱⑫⑭⑨④⑰②⑥ ⚖ ⑮⑤㉓⑪⑳㉔㉑⑲㉒ ➔ >:-⑮ =:-⑯ <:-⑰ \n", - " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬ ⚖ ⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖ ➔ >:-⑭ =:0 <:-⑬ \n", - " <:①⑳⑨⑬⑱⑥⑯⑮⑪ ⚖ ⑲⑫⑦㉒㉕④㉑⑰③ ➔ >:-⑫ =:-⑩ <:-⑪ \n", - " <:㉖⑦⑳⑤㉒③⑩⑲ ⚖ ①⑧⑬⑱㉔㉕④㉓ ➔ \n", - " >:⑤⑳⑨⑧⑱ ⚖ ④⑩⑭㉑㉓ ➔ >:-④ =:-① <:-⑧ \n", - " =:⑩⑲㉖⑬⑳⑤⑪⑥ ⚖ ⑯⑮㉒㉔⑦④⑨㉕ ➔ >:-⑨ =:-② <:-⑥ \n", - " <:⑬⑯⑱㉓⑤⑮①⑲⑨⑥㉔ ⚖ ⑦④㉕㉑⑳⑩②㉖㉒⑫⑭ ➔ >:-⑦ =:-③ <:-⑤\n" - ] - } - ], + "outputs": [], "source": [ - "do(Puzzle(26, 3, '-0'))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here's a puzzle with **26 balls** where it is stipulated that either one of the odd-numbered balls is heavier, or one of the even-numbered balls is lighter, or there is no oddball." + "def partition_sizes(puzzle) -> Dict[int, Tuple[int, int, int]]:\n", + " \"\"\"For various nunbers of balls B to weigh, what are the sizes of the three branches,\n", + " and is the partition good?\"\"\"\n", + " third = puzzle.N // 3\n", + " result = {}\n", + " for B in range(third - 2, third + 4):\n", + " L, R = puzzle.balls[:B], puzzle.balls[-B:]\n", + " partition = weigh(L, R, puzzle.oddballs)\n", + " lengths = map(len, branches(partition))\n", + " good = 'Good' if is_good_partition(partition, puzzle.weighings - 1) else 'Bad'\n", + " result[B] = (good, *lengths)\n", + " return result " ] }, { @@ -855,16 +772,32 @@ "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15, -16, 17, -18, 19, -20, 21, -22, 23, -24, 25, -26]\n" - ] + "data": { + "text/plain": [ + "{2: ('Bad', 4, 18, 4),\n", + " 3: ('Bad', 6, 14, 6),\n", + " 4: ('Bad', 8, 10, 8),\n", + " 5: ('Bad', 10, 6, 10),\n", + " 6: ('Bad', 12, 2, 12),\n", + " 7: ('Bad', 14, 0, 12)}" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "odd_even = [(+b if b % 2 else -b) for b in range(27)]\n", - "print(odd_even)" + "partition_sizes(puzzle13)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that whatever value we choose for `B`, we will always get a bad partition of the 13-ball puzzle (there will always be at least one branch with more than 9 oddballs). \n", + "\n", + "For the puzzle with 12 balls (and thus 24 oddballs), the only good partition is with 4 balls on each side of the balance:" ] }, { @@ -873,36 +806,30 @@ "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "①⑭⑬②③㉔⑳㉑⑥ ⚖ ⑨⑯㉒㉓⑲⑱⑮⑫④ ➔ \n", - " >:⑪⑥㉓⑦⑮②③⑩⑰ ⚖ ㉑⑯⑨⑤⑬①㉕⑳⑱ ➔ \n", - " >:⑨⑦①㉔⑯ ⚖ ㉓⑬⑱㉒⑲ ➔ >:-⑱ =:+③ <:-⑯ \n", - " =:①②③④⑤ ⚖ ㉒㉓㉔㉕㉖ ➔ >:-㉒ =:-⑫ <:-④ \n", - " <:①②③④⑤⑥ ⚖ ㉑㉒㉓㉔㉕㉖ ➔ >:+① =:+⑬ <:+㉑ \n", - " =:⑩⑰③㉕⑮④⑫⑱② ⚖ ⑦㉑⑲⑪⑥⑧⑭⑳⑬ ➔ \n", - " >:③⑰⑮㉔⑯⑬ ⚖ ㉕㉒⑩④⑤⑭ ➔ >:+⑰ =:-⑧ <:+㉕ \n", - " =:⑮⑭⑫⑰⑥⑨⑳㉒⑩②③ ⚖ ㉖㉔⑬㉕㉓⑪⑱⑦①⑤⑲ ➔ >:-㉖ =:0 <:+⑤ \n", - " <:①②③④⑤⑥⑦⑧⑨⑩ ⚖ ⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖ ➔ >:+⑦ =:+⑪ <:-⑩ \n", - " <:⑰⑯⑫⑤⑭④⑱⑲⑳ ⚖ ⑪㉔⑩⑬⑮㉕②⑦③ ➔ \n", - " >:①②③ ⚖ ㉔㉕㉖ ➔ >:-㉔ =:+⑲ <:-② \n", - " =:㉔⑤⑦⑫⑰ ⚖ ⑨①㉕⑥⑧ ➔ >:-⑥ =:+㉓ <:+⑨ \n", - " <:①②③④⑤⑥⑦⑧⑨⑩⑪⑫ ⚖ ⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖ ➔ >:-⑳ =:-⑭ <:+⑮\n" - ] + "data": { + "text/plain": [ + "{2: ('Bad', 4, 16, 4),\n", + " 3: ('Bad', 6, 12, 6),\n", + " 4: ('Good', 8, 8, 8),\n", + " 5: ('Bad', 10, 4, 10),\n", + " 6: ('Bad', 12, 0, 12),\n", + " 7: ('Bad', 14, 0, 10)}" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "do(Puzzle(26, 3, odd=odd_even))" + "partition_sizes(puzzle12)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Another variation: **27 balls, 3 weighings**, the oddball can only be heavier, but one ball (number 27) is poisonous and can't be touched or placed on the balance scale. It might, however be the heavier ball, and you still need to report it as such if it is. \n", - "\n", - "We describe this situation by defining a puzzle with 26 (weighable) balls, but with the oddballs including the positive ball numbers from +1 to +27, inclusive. Note that when all three weighings are equal, the strategy tree correctly reports `+㉗`." + "We can do **27 balls in 3 weighings** if we know that the oddball can only be heavier, not lighter:" ] }, { @@ -911,36 +838,24 @@ "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "①②③④⑤⑥⑦⑧⑨ ⚖ ⑱⑲⑳㉑㉒㉓㉔㉕㉖ ➔ \n", - " >:⑬⑯⑩④㉕②⑧ ⚖ ①⑱⑤⑮㉔㉓⑥ ➔ \n", - " >:⑭②⑰ ⚖ ⑧⑳⑥ ➔ >:+② =:+④ <:+⑧ \n", - " =:⑱②⑦⑳⑪⑰㉕ ⚖ ③⑭⑩④⑯①⑫ ➔ >:+⑦ =:+⑨ <:+③ \n", - " <:⑧⑳⑤ ⚖ ㉖⑩① ➔ >:+⑤ =:+⑥ <:+① \n", - " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫ ⚖ ⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖ ➔ \n", - " >:⑧⑮⑳②⑬⑰⑨⑱㉕⑪ ⚖ ①⑭⑥⑯㉒㉔④⑫⑲㉑ ➔ >:+⑪ =:+⑩ <:+⑫ \n", - " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬ ⚖ ⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖ ➔ >:+⑬ =:+㉗ <:+⑭ \n", - " <:㉖⑪⑬⑤⑰ ⚖ ⑯⑲㉓⑦⑧ ➔ >:+⑰ =:+⑮ <:+⑯ \n", - " <:⑫⑤⑱⑪㉒㉑ ⚖ ㉔⑳㉖⑯③⑬ ➔ \n", - " >:㉖③㉑⑨ ⚖ ㉒⑳⑦⑰ ➔ >:+㉑ =:+⑱ <:+㉒ \n", - " =:④③⑫㉕⑪⑩㉖ ⚖ ㉓⑦⑧㉑⑳②⑤ ➔ >:+㉕ =:+⑲ <:+㉓ \n", - " <:②⑦⑳⑯㉕⑱① ⚖ ㉖⑭⑪⑰⑬㉒㉑ ➔ >:+⑳ =:+㉔ <:+㉖\n" - ] + "data": { + "text/plain": [ + "{7: ('Bad', 7, 13, 7),\n", + " 8: ('Bad', 8, 11, 8),\n", + " 9: ('Good', 9, 9, 9),\n", + " 10: ('Bad', 10, 7, 10),\n", + " 11: ('Bad', 11, 5, 11),\n", + " 12: ('Bad', 12, 3, 12)}" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "do(Puzzle(26, 3, odd=range(1, 28)))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Puzzles with 4 Weighings\n", - "\n", - "We can tackle larger puzzles. With 4 weighings, we can theoretically handle up to 34 = 81 possibilities. Can we solve for **40 balls**, heavy or light?" + "puzzle27 = make_puzzle(27, 3, '+')\n", + "partition_sizes(puzzle27)" ] }, { @@ -952,41 +867,67 @@ "name": "stdout", "output_type": "stream", "text": [ - "None\n" + "①②③④⑤⑥⑦⑧⑨ ⚖ ⑲⑳㉑㉒㉓㉔㉕㉖㉗ ➔ \n", + " >:④⑥⑧⑬⑭⑱⑲㉒㉕ ⚖ ①②⑨⑩⑮⑰⑳㉓㉔ ➔ \n", + " >:④⑳ ⚖ ⑧⑫ ➔ >:+④ =:+⑥ <:+⑧ \n", + " =:④⑤⑬⑭⑱㉖ ⚖ ⑦⑨⑩⑪⑯⑲ ➔ >:+⑤ =:+③ <:+⑦ \n", + " <:④⑨⑭⑮⑯⑱⑳㉔㉕㉗ ⚖ ①③⑤⑥⑦⑧⑩⑬⑲㉓ ➔ >:+⑨ =:+② <:+① \n", + " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫ ⚖ ⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗ ➔ \n", + " >:④⑤⑦⑩⑭⑮⑳ ⚖ ①⑧⑨⑫⑰㉒㉖ ➔ >:+⑩ =:+⑪ <:+⑫ \n", + " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬ ⚖ ⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗ ➔ >:+⑬ =:+⑭ <:+⑮ \n", + " <:②④⑩⑪⑭⑮⑯⑲㉒㉔㉕ ⚖ ③⑤⑦⑧⑬⑰⑳㉑㉓㉖㉗ ➔ >:+⑯ =:+⑱ <:+⑰ \n", + " <:②⑦⑨⑮⑯㉒㉓㉔ ⚖ ③⑥⑩⑬⑱⑳㉑㉕ ➔ \n", + " >:①⑤⑥⑪⑱⑲㉑㉔㉖ ⚖ ④⑦⑨⑩⑫⑭⑰⑳㉒ ➔ >:+㉔ =:+㉓ <:+㉒ \n", + " =:⑤⑯㉓㉗ ⚖ ①⑪⑱㉖ ➔ >:+㉗ =:+⑲ <:+㉖ \n", + " <:①③④⑥㉑ ⚖ ⑨⑫⑬㉔㉕ ➔ >:+㉑ =:+⑳ <:+㉕\n" ] } ], "source": [ - "p40 = Puzzle(40, 4)\n", - "\n", - "do(p40)" + "do(puzzle27)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Unfortunately, **no**, we didn't find a solution. That's because the `partition_sizes` always leaves us with a branch of size 28 or more, which can't be handled in the three remaining weighings:" + "And we can do **26 balls** under the condition that either one ball is heavier or all the balls weigh the same (so, 27 possibilities):" ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 137, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "[26, 28, 26]" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "[①②③④⑤⑥⑦⑧⑨ ⚖ ⑱⑲⑳㉑㉒㉓㉔㉕㉖] ➔ \n", + " >:[②③⑤⑮⑱㉑ ⚖ ①⑥⑨⑫㉔㉕] ➔ \n", + " >:[②⑦㉓ ⚖ ③㉔㉖] ➔ >:+② =:+⑤ <:+③ \n", + " =:[③⑧⑩⑬⑮⑰⑱⑳㉓㉔㉕㉖ ⚖ ①②⑤⑥⑦⑨⑪⑫⑭⑯⑲㉑] ➔ >:+⑧ =:+④ <:+⑦ \n", + " <:[①⑧⑩⑱⑲㉓㉖ ⚖ ③④⑦⑨⑰㉔㉕] ➔ >:+① =:+⑥ <:+⑨ \n", + " =:[①②③④⑤⑥⑦⑧⑨⑩⑪⑫ ⚖ ⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖] ➔ \n", + " >:[④⑪ ⚖ ⑩⑮] ➔ >:+⑪ =:+⑫ <:+⑩ \n", + " =:[①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬ ⚖ ⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖] ➔ >:+⑬ =:∅ <:+⑭ \n", + " <:[③⑦⑧⑭⑯⑱㉒㉓㉔㉖ ⚖ ①②④⑤⑩⑫⑬⑰⑲⑳] ➔ >:+⑯ =:+⑮ <:+⑰ \n", + " <:[③⑩⑮㉓㉔㉕ ⚖ ②⑦⑪⑱㉑㉒] ➔ \n", + " >:[⑫⑬⑮⑯㉓ ⚖ ④⑥⑲㉕㉖] ➔ >:+㉓ =:+㉔ <:+㉕ \n", + " =:[②⑦⑧⑨⑫⑯⑱⑲㉑㉓㉔ ⚖ ①③⑤⑥⑩⑪⑭⑮⑰㉕㉖] ➔ >:+⑲ =:+⑳ <:+㉖ \n", + " <:[③④⑧⑨⑪⑭⑲⑳㉒㉓㉕ ⚖ ①②⑤⑥⑩⑫⑬⑮⑰⑱㉖] ➔ >:+㉒ =:+㉑ <:+⑱\n" + ] } ], "source": [ - "partition_sizes(p40, 13)" + "do(make_puzzle(26, 3, '+='))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here's another puzzle with **26 balls**, where it is stipulated that either one of the odd-numbered balls is heavier, or one of the even-numbered balls is lighter, or there is no oddball." ] }, { @@ -995,34 +936,54 @@ "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "[28, 24, 28]" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "{0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, -26, -24, -22, -20, -18, -16, -14, -12, -10, -8, -6, -4, -2}\n" + ] } ], "source": [ - "partition_sizes(p40, 14)" + "odd_even = {(+b if b % 2 else -b) for b in range(27)}\n", + "print(odd_even)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "①③⑫⑭⑮⑯⑰㉒㉔ ⚖ ②⑤⑧⑩⑬⑱㉑㉕㉖ ➔ \n", + " >:①②⑨⑩⑳㉓㉕ ⚖ ⑤⑥⑦⑧⑪⑰㉖ ➔ \n", + " >:②③⑧⑨⑮⑳㉕ ⚖ ⑤⑦⑪⑲㉑㉔㉖ ➔ >:-㉖ =:+① <:-⑧ \n", + " =:⑥⑫⑮⑱㉑㉓㉕ ⚖ ④⑤⑬⑰⑳㉔㉖ ➔ >:+⑮ =:+③ <:-⑱ \n", + " <:⑨⑬⑲㉑㉓ ⚖ ②⑤⑯⑰⑳ ➔ >:-② =:-⑩ <:+⑰ \n", + " =:⑤⑥⑦⑧⑪⑱㉑㉕ ⚖ ③⑨⑩⑫⑮⑲⑳㉔ ➔ \n", + " >:②⑦⑭⑳㉑ ⚖ ⑫⑮⑯⑱㉕ ➔ >:+⑦ =:+⑪ <:-⑳ \n", + " =:⑧⑩⑰⑱㉒ ⚖ ④⑦⑯㉓㉕ ➔ >:-④ =:∅ <:+㉓ \n", + " <:③⑦⑩⑭⑮⑱⑳㉑㉓㉔㉖ ⚖ ①②④⑤⑥⑪⑫⑬⑯⑰⑲ ➔ >:-⑥ =:+⑨ <:+⑲ \n", + " <:⑤⑥⑯⑲⑳㉕㉖ ⚖ ②④⑧⑨⑬㉑㉒ ➔ \n", + " >:⑦⑧⑨⑬⑭⑳㉔㉕ ⚖ ①③⑤⑫⑮⑯⑰⑱ ➔ >:+㉕ =:-㉒ <:+⑤ \n", + " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫ ⚖ ⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖ ➔ >:-㉔ =:-⑭ <:-⑫ \n", + " <:①②③④⑤⑥⑦⑧⑨⑩⑪ ⚖ ⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖ ➔ >:-⑯ =:+⑬ <:+㉑\n" + ] + } + ], + "source": [ + "do(make_puzzle(26, 3, odd=odd_even))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "How about **39 balls, 4 weighings**, heavier or lighter, with the possibility that no ball is odd? That's 39 × 2 + 1 = 79 possibilities, which is less than 81, and the partition sizes are all 27 or less." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "p39 = Puzzle(39, 4, '+-0')" + "Another variation: **27 balls**, 3 weighings, the oddball can only be heavier, but one ball, number 27, is toxic and can't be touched or placed on the balance scale. It might, however be the heavier ball, and you still need to report it as such if it is. \n", + "\n", + "We describe this situation by defining a puzzle with 26 (weighable) balls, but with the oddballs including the positive ball numbers from +1 to +27, inclusive. Note the correct `=:+㉗` notation when all three weighings are equal." ] }, { @@ -1031,74 +992,167 @@ "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "[26, 27, 26]" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "①②③④⑤⑥⑦⑧⑨ ⚖ ⑱⑲⑳㉑㉒㉓㉔㉕㉖ ➔ \n", + " >:①②③⑩⑱⑳㉓ ⚖ ④⑤⑥⑯⑲㉔㉕ ➔ \n", + " >:①⑭⑳ ⚖ ③⑦㉖ ➔ >:+① =:+② <:+③ \n", + " =:⑨⑮㉑ ⚖ ①⑦⑫ ➔ >:+⑨ =:+⑧ <:+⑦ \n", + " <:④⑪⑫⑭⑮⑱ ⚖ ⑥⑦⑲⑳㉑㉒ ➔ >:+④ =:+⑤ <:+⑥ \n", + " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫ ⚖ ⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖ ➔ \n", + " >:①②⑤⑥⑧⑨⑩⑬⑮⑰⑲⑳ ⚖ ③④⑦⑫⑭⑱㉑㉒㉓㉔㉕㉖ ➔ >:+⑩ =:+⑪ <:+⑫ \n", + " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬ ⚖ ⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖ ➔ >:+⑬ =:+㉗ <:+⑭ \n", + " <:②③⑦⑭⑯㉑㉒㉔ ⚖ ①④⑨⑩⑬⑰⑱㉖ ➔ >:+⑯ =:+⑮ <:+⑰ \n", + " <:②④⑤⑥⑫⑱⑳㉔ ⚖ ①⑦⑨⑭⑰⑲㉒㉓ ➔ \n", + " >:①④⑦⑨⑭⑯⑰㉑㉓㉔㉕ ⚖ ③⑥⑧⑩⑪⑫⑮⑲⑳㉒㉖ ➔ >:+㉔ =:+⑱ <:+⑳ \n", + " =:③⑤⑥⑨⑩⑭⑱⑲㉖ ⚖ ①⑦⑧⑪⑫⑬⑰㉒㉕ ➔ >:+㉖ =:+㉑ <:+㉕ \n", + " <:③⑤⑥⑧⑪⑯㉒㉔ ⚖ ①②⑦⑮⑳㉑㉓㉖ ➔ >:+㉒ =:+⑲ <:+㉓\n" + ] } ], "source": [ - "partition_sizes(p39, 13)" + "do(make_puzzle(26, 3, odd=range(1, 28)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Puzzles with 4 Weighings\n", + "\n", + "We can tackle larger puzzles. With 4 weighings, we can theoretically handle up to 34 = 81 possibilities. Can we solve for **40 balls**, heavy or light? Let's check the partition sizes:" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{11: ('Bad', 22, 36, 22),\n", + " 12: ('Bad', 24, 32, 24),\n", + " 13: ('Bad', 26, 28, 26),\n", + " 14: ('Bad', 28, 24, 28),\n", + " 15: ('Bad', 30, 20, 30),\n", + " 16: ('Bad', 32, 16, 32)}" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "partition_sizes(make_puzzle(40, 4))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Every partition is bad, leaving us with a branch of size 28 or more, which can't be handled in three remaining weighings.\n", + "\n", + "How about **39 balls**, heavier or lighter, with the possibility that no ball is odd? " + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "puzzle39 = make_puzzle(39, 4, '+-=')" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{11: ('Bad', 22, 35, 22),\n", + " 12: ('Bad', 24, 31, 24),\n", + " 13: ('Good', 26, 27, 26),\n", + " 14: ('Bad', 28, 23, 28),\n", + " 15: ('Bad', 30, 19, 30),\n", + " 16: ('Bad', 32, 15, 32)}" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "partition_sizes(puzzle39)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We see that it might be possible to solve the puzzle by starting with 13 balls on each side. Let's try:" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬ ⚖ ㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴ ➔ \n", - " >:⑩㉑⑰㉕⑬⑱㊴⑦㉛㉗⑭㉞㊱④ ⚖ ㉒㉘⑲㉚⑥⑮⑨㊲⑪⑯①㉝㉔㉖ ➔ \n", - " >:㉟⑦㊳⑧㉘㊴⑰㊲⑨⑬ ⚖ ②⑤⑫④⑭⑱㊱⑯①⑥ ➔ \n", - " >:①②③④⑤⑥⑦ ⚖ ㉝㉞㉟㊱㊲㊳㊴ ➔ >:+⑦ =:+⑬ <:() \n", - " =:⑥⑩㉘⑯③⑰⑧⑨㉙㉓㉝ ⚖ ㉟㊲④①⑬⑲⑮⑫㊳㉜㉞ ➔ >:+⑩ =:-㉚ <:-㉝ \n", - " <:⑱㉜①㉛㉗⑬⑮㉖⑥㊳㉚ ⚖ ④㉝⑯⑲㉟㉘⑤㉕㉔㉑⑳ ➔ >:-㉘ =:-㊲ <:+④ \n", - " =:㉛㉘⑦⑭㉖⑤⑯㉜⑫⑩⑮㉞⑬⑧㉙ ⚖ ②㉚㉑④⑳⑪⑥①⑲㉓⑱㉗㉕㉝㊱ ➔ \n", - " >:㉟③②㉒㊴㉙㉓⑬㉚⑰㉝⑱⑲⑧ ⚖ ㉑㉛⑮㉕㉔㊱⑳㉗④⑫㊳⑪⑩㊲ ➔ >:+⑧ =:+⑤ <:+⑫ \n", - " =:㉓⑮㉒④㉘㉟ ⚖ ㉗㉑㊳㉙㉝⑥ ➔ >:-㊳ =:+③ <:-㉟ \n", - " <:⑩㉓①㉕㊱⑫㉗㊴⑦㉟④㉑⑧⑳㉜ ⚖ ㉔㊳⑯③⑪㉛⑤㉖⑲㉘⑮⑥㉝㊲㉙ ➔ >:-㉙ =:+② <:-㉜ \n", - " <:⑭⑫㉕⑩㉚㉖⑲㊳⑱㉔㉙㊱㉜②㉗⑮⑥ ⚖ ㉟①㉛㉞㉘⑳㉑③⑧⑯㉓㉝㉒⑤㊲④⑬ ➔ \n", - " >:⑭㉗㊲㉜㊴㉟⑨⑬㉔㉘⑮③ ⚖ ⑥④㉝㉕㉛②⑧⑫⑤㊳㉖⑱ ➔ >:-㉛ =:-㉞ <:+⑥ \n", - " =:㉙⑧㉑⑲⑤㉜㉗⑩④㉛⑬⑦ ⚖ ⑪⑮㉞②㉖㊲⑰㊴㉒㊳㉓⑫ ➔ >:-㊴ =:+⑨ <:+⑪ \n", - " <:㉔㉛ ⚖ ①㉗ ➔ >:-㉗ =:-㊱ <:+① \n", - " =:⑦㉑③⑩㉛⑰㉞②㊲⑬⑨⑤㉙㉗ ⚖ ⑳㉕⑱⑪㉜㉘⑮④㉔㉒㉚⑭㊱㉝ ➔ \n", - " >:⑬⑩㉖⑰⑥⑧⑫㉛㉔⑨⑳㉚⑲㉕ ⚖ ㊴④㉗㉜㉒㉘㉝⑭⑤①㊲㉟⑪⑦ ➔ \n", - " >:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰ ⚖ ㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴ ➔ >:+⑰ =:-㉒ <:-⑭ \n", - " =:④㉕㊱⑨㉚㉗⑪⑭⑮①⑬㉘㉛㉙⑥㉟ ⚖ ⑱⑫㉖⑲⑤㉜㊲⑳⑩②㉓⑯⑰㊴⑧㉔ ➔ >:-⑱ =:+㉑ <:-⑮ \n", - " <:㉔㉚⑯⑲ ⚖ ㉕②㉑㉘ ➔ >:-㉕ =:-⑳ <:-㉔ \n", + " >:④⑤⑧⑨⑭⑰㉑㉕㉗㊱㊳ ⚖ ②③⑥⑦⑪⑬㉒㉚㉜㉞㉟ ➔ \n", + " >:①③⑦⑨⑫⑬⑭⑯㉑㉕㉘㉚㉟㊴ ⚖ ④⑥⑩⑮⑰⑲⑳㉓㉔㉙㉛㉜㉝㊳ ➔ \n", + " >:①②③④⑤⑥⑦⑧ ⚖ ㉜㉝㉞㉟㊱㊲㊳㊴ ➔ >:-㉜ =:+⑨ <:! \n", + " =:②④⑥⑧⑫⑱㉓㉔㊴ ⚖ ⑤⑪⑭⑲㉗㉘㉙㊲㊳ ➔ >:+⑧ =:-㉞ <:+⑤ \n", + " <:③④⑫⑬⑮⑯㉔㉕㉝㉟㊴ ⚖ ②⑥⑲⑳㉑㉒㉓㉖㉛㉞㊱ ➔ >:+④ =:-㉚ <:-㉟ \n", + " =:②③⑦⑩⑪⑭⑮⑰⑱㉖㉝㉞㊱㊴ ⚖ ①④⑤⑥⑬⑲⑳㉑㉒㉓㉔㉕㉙㊲ ➔ \n", + " >:④⑤⑳㉒㉓㉖㉚㉝㉟㊱㊴ ⚖ ②⑨⑩⑫⑭⑯⑲㉗㉜㉞㊲ ➔ >:-㊲ =:-㉙ <:+⑩ \n", + " =:①⑤⑥⑨⑪⑭⑳㉔㉕㊳ ⚖ ③④⑫⑮⑱㉑㉓㉘㉝㊱ ➔ >:-㉘ =:-㉛ <:+⑫ \n", + " <:①⑤⑦⑧⑩⑯㉑㉓㉛㊳㊴ ⚖ ②③⑥⑭⑱⑲㉒㉔㉘㉚㉞ ➔ >:+① =:-㉝ <:-㊴ \n", + " <:③⑦⑧⑨⑬㉓㉖㉗㉙㉚㉜㉝㉟㊱ ⚖ ①④⑤⑥⑮⑯⑰⑱⑳㉒㉕㉛㉞㊲ ➔ \n", + " >:⑤⑩⑫⑬⑮㉜㉞ ⚖ ⑦⑰⑱㉒㉖㉚㊳ ➔ >:+⑬ =:+③ <:+⑦ \n", + " =:②㊴ ⚖ ⑪⑭ ➔ >:+② =:-㊳ <:+⑪ \n", + " <:②③⑦⑧⑩⑪⑬⑭⑯㉑㉒㉓㉕㉖㉙㉚㉜㉞ ⚖ ①④⑤⑥⑨⑰⑱⑲⑳㉔㉘㉛㉝㉟㊱㊲㊳㊴ ➔ >:-㊱ =:-㉗ <:+⑥ \n", + " =:⑨⑬⑭⑯⑰⑲㉒㉕㉚㉜㊴ ⚖ ⑥⑦⑧⑪⑫⑱㉑㉔㉗㉘㊳ ➔ \n", + " >:③⑤⑪⑬⑭⑮⑯㉑ ⚖ ②⑨⑰⑲㉔㉖㉙㉟ ➔ \n", + " >:②④⑧⑯㉖㉘ ⚖ ①⑥⑨⑩⑭㉟ ➔ >:+⑯ =:-㉔ <:+⑭ \n", + " =:⑤⑥⑦⑩⑭⑯㉒㉖㉗㉛㉝㊲㊳ ⚖ ②③⑧⑪⑫⑬⑮⑰⑳㉑㉔㉕㉟ ➔ >:+㉒ =:-⑱ <:+㉕ \n", + " <:⑧⑯㉔㉗㉟ ⚖ ⑬⑭⑲㉑㊲ ➔ >:-㉑ =:+⑰ <:+⑲ \n", " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰ ⚖ ㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴ ➔ \n", - " >:㉛㉗⑧㊱⑩⑲⑬⑤⑳㉘㉒⑱⑥㉔⑦⑭ ⚖ ㉖㉑①⑨⑪㉟⑯㉞㊴㉜⑫④㊲②③⑮ ➔ >:-㉖ =:-㉓ <:+⑯ \n", - " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲ ⚖ ㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴ ➔ >:+⑲ =:0 <:-⑲ \n", - " <:⑪⑮㉚㉛③⑳⑫⑰④㉑⑱⑯⑧⑭㉓ ⚖ ㉜㉞㉒②⑤⑬㉝⑦①㉘⑲㉟㉗㊲㊳ ➔ >:+㉓ =:+㉖ <:-⑯ \n", - " <:㉓㉝㉛⑳⑱㊲㉗㉙ ⚖ ㉒⑤⑪⑰⑭⑲㉕⑯ ➔ \n", - " >:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱ ⚖ ㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴ ➔ >:+⑱ =:+⑳ <:-⑰ \n", - " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯ ⚖ ㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴ ➔ >:+⑮ =:-㉑ <:+㉔ \n", - " <:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮ ⚖ ㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴ ➔ >:+⑭ =:+㉒ <:+㉕ \n", - " <:㉑⑳㉖㉜㉛⑭⑩㉟⑨㉕⑫⑥⑦ ⚖ ㉚⑲⑪⑱⑮⑧㊴㉙④㉓㊲⑤⑬ ➔ \n", - " >:㉖⑳㊱③㉒⑰⑯㉓㊴⑭⑱ ⚖ ④㉛㉔⑤㉝㊳⑩㉜⑧⑥① ➔ \n", - " >:㉙㉓㉚⑮㉑㉞㉛⑫⑦⑯⑩⑨④ ⚖ ㉒①⑱⑧③⑳⑬㊱㉘⑭㊲⑰② ➔ >:-⑧ =:-⑤ <:-④ \n", - " =:⑲⑰㊴①⑳㉙㉟⑦③㉘⑪ ⚖ ⑨⑮㉛㉝㉖⑧⑫㉒㉔⑥⑱ ➔ >:+㉟ =:-⑬ <:-⑪ \n", - " <:①②③④⑤⑥⑦⑧ ⚖ ㉜㉝㉞㉟㊱㊲㊳㊴ ➔ >:() =:+㉛ <:+㉜ \n", - " =:㉓④㉔⑥⑮㉞⑳㉘㉒㊱⑬②㉚⑦㊲ ⚖ ㊳㉛⑨㉝⑪⑩⑭⑯㉕⑫⑰㉟㉜⑤⑲ ➔ \n", - " >:㊳⑧⑥㉑⑫㉟㊲㉛㉔㉜⑩㉙⑲㉞ ⚖ ⑰⑳③⑤⑬㉒㉘⑨㉖㊴㉚㉝⑱⑯ ➔ >:+㉞ =:+㊱ <:+㉘ \n", - " =:㉝⑲⑬⑥④⑭㉚㉑⑮③ ⚖ ⑱②①㉕㉛㊲㉖㊳㉘⑨ ➔ >:-① =:+㉗ <:-③ \n", - " <:⑥⑯㉗⑳㉓⑱㉝㉑㊱⑭② ⚖ ㉔㉚㉙㉖③⑲㉕⑰⑦㉘⑤ ➔ >:+㉝ =:+㊳ <:-② \n", - " <:①⑮㉙㉟⑱㉝⑥㉗㉘⑩㉜㉑ ⚖ ⑦⑨⑰㊱②㉛㉚④⑧㉔③㉒ ➔ \n", - " >:㉗③⑩⑫ ⚖ ㉙⑨⑰㉞ ➔ >:-⑨ =:-⑦ <:+㉙ \n", - " =:㉘⑧㉒⑨⑯㉝㉗⑬㉙⑰㊳⑥ ⚖ ㊲㉜④㊱⑫⑱⑮㉖㉛⑭㉟② ➔ >:-⑫ =:+㊴ <:+㊲ \n", - " <:⑪㉗㉞㉑①⑱㉛㉒㉟④ ⚖ ⑥㉚⑭㉓⑫㉘㉕②㉜㉖ ➔ >:-⑥ =:-⑩ <:+㉚\n" + " >:①④⑥⑨⑪⑫⑯⑲⑳ ⚖ ③⑦⑮㉖㉙㉞㉟㊱㊲ ➔ >:-㉖ =:-㉓ <:+⑮ \n", + " =:③④⑩⑪⑬⑮⑯⑰⑱⑲⑳㉑㉒㉓㉗㉚㉟㊱㊳ ⚖ ①②⑤⑥⑦⑧⑨⑫⑭㉔㉕㉖㉘㉛㉜㉝㉞㊲㊴ ➔ >:+⑳ =:∅ <:-⑳ \n", + " <:②③④⑥⑦⑬⑯⑰⑱⑲⑳㉒㉖㉚㉜㉝㉟㊴ ⚖ ①⑤⑧⑩⑪⑫⑭㉑㉓㉔㉕㉗㉘㉙㉛㉞㊱㊲ ➔ >:+㉖ =:-⑮ <:+㉓ \n", + " <:①③④⑬⑰⑱⑲㉑㉒㉔㉗㉞㊳㊴ ⚖ ②⑤⑦⑧⑫⑮⑳㉓㉖㉘㉙㉛㊱㊲ ➔ \n", + " >:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱ ⚖ ㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴ ➔ >:+⑱ =:+㉑ <:+㉔ \n", + " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮ ⚖ ㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴ ➔ >:-㉕ =:-⑯ <:-⑭ \n", + " <:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱ ⚖ ㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴ ➔ >:-㉒ =:-⑲ <:-⑰ \n", + " <:②⑩⑪⑮⑳㉓㉖㉗㉙㉞㉟ ⚖ ①④⑦⑧⑫⑰㉜㉝㊲㊳㊴ ➔ \n", + " >:②⑤⑥⑩⑪⑬㉑㉓㉔㉕㉖㉗㉚㉜㉝㊴ ⚖ ①③⑦⑭⑮⑯⑰⑱⑲㉒㉙㉛㉞㉟㊲㊳ ➔ \n", + " >:②③④⑤⑥⑨⑩⑫⑭⑮㉒㉓㉖㉘㉜㉞㉟㊱㊲ ⚖ ①⑧⑪⑬⑯⑰⑱⑲⑳㉑㉔㉕㉗㉙㉚㉛㉝㊳㊴ ➔ >:-① =:-⑦ <:+㉗ \n", + " =:⑫⑭⑮⑯㉑㉔㉗㉘㉚㉜㊴ ⚖ ①②③⑧⑨⑩⑲⑳㉖㉞㊳ ➔ >:-⑧ =:-④ <:-⑫ \n", + " <:①⑦⑩⑬⑭⑯⑲⑳㉕㉝㉟㊱㊴ ⚖ ②④⑤⑧⑪⑫⑱㉒㉔㉖㉗㉙㊲ ➔ >:+㉟ =:+㉞ <:+㉙ \n", + " =:⑬⑯㉒㉗㉘㉚㊴ ⚖ ⑥⑦㉓㉖㉛㊱㊲ ➔ \n", + " >:⑥⑬⑰⑱⑳㉒㉕㉗㉘㉙㉛㉜㉞㊱㊲ ⚖ ①②④⑤⑦⑧⑨⑩⑫⑮⑲㉓㉔㉟㊴ ➔ >:+㉘ =:+㉚ <:-⑥ \n", + " =:①④⑤⑥⑫⑮⑲㉒㉔㉚㉝㉞ ⚖ ⑧⑨⑪⑬⑯㉕㉖㉗㉘㊱㊳㊴ ➔ >:-⑨ =:-③ <:-⑤ \n", + " <:②④⑥⑪㉙㉚㊱ ⚖ ⑳㉓㉘㉛㉞㉟㊲ ➔ >:+㊱ =:-⑬ <:+㉛ \n", + " <:③⑤⑨⑬⑭⑮⑯⑱㉑㉕㉚㊱㊲㊳ ⚖ ①④⑦⑩⑫⑰⑲㉒㉖㉘㉙㉜㉞㊴ ➔ \n", + " >:②⑥⑩⑯⑰⑳㉒㉓㉖㉘㉙㉚㉝㉟㊲ ⚖ ③⑤⑧⑨⑫⑬⑭⑮⑱㉕㉗㉛㉞㊱㊴ ➔ >:+㊲ =:+㊳ <:-⑩ \n", + " =:②⑱㉕㉙㉝㊴ ⚖ ⑦⑧⑩⑳㉗㊱ ➔ >:+㉝ =:-⑪ <:-② \n", + " <:① ⚖ ㊴ ➔ >:! =:+㉜ <:+㊴\n" ] } ], "source": [ - "do(p39)" + "do(puzzle39)" ] }, { @@ -1110,357 +1164,212 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 138, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗ ⚖ ⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓ ➔ \n", - " >:ⓑ⑪㉒Ⓟ㊻㉕㉟㊷㊼⑩㉓Ⓥ⑰Ⓛ㉔ⓓ⑦Ⓨ⑥②ⒸⒾ⑱⑮⑤ⒼⓈ ⚖ ㉜ⓍⒿ㊴Ⓓ㊵㊳⑯㊶①㊺ⓇⒷⓏ㉗㊽ⓒⒽⓀ⑧㊱⑲⑳Ⓔ㉞㊾⑫ ➔ \n", - " >:③㉖㊶㉒Ⓨⓓⓒ⑰㊺⑲Ⓘ㊼⑬Ⓜ②⑫㊾㉝⑤㉗Ⓝ⑥⑪⑯⑧㉑ⒹⒻⒶⒽ㊸㊽ ⚖ Ⓡ㉛㊴⑨④㉕㉜㉓㊻㉚⑱⑦㉘Ⓟⓑ㊵㊲Ⓢ㊱⑩㉞㉔ⓀⓐⒼ①ⒺⓌ⑳⑭㊳㉙ ➔ \n", - " >:ⓊⒾ㉑Ⓑ㉟㊼⑥㊽Ⓞ㊺⑭⑮㉒Ⓠ㊾ⓐ㊷㊵㉔⑳⑲㉖㊴④Ⓙ㉙ⒻⓉⓓⒺ ⚖ Ⓝ①Ⓩ⑫⑬㊿ⓅⓋⓇ⑩㉝Ⓜ㉗⑪⑯㊶㊹㊲㉞⑱Ⓒ㉜Ⓢ⑰ⓌⓒⒹⒽ㉚ⓑ ➔ >:-Ⓡ =:-Ⓚ <:-Ⓔ \n", - " =:⑯Ⓖ㊲⑬㉒Ⓚ⑨⑱Ⓣ⑩ⒹⓍ ⚖ ⑭Ⓙ⑳ⓅⓈ㊵⑮Ⓐⓒ㊶㉞④ ➔ >:-Ⓙ =:-Ⓩ <:-Ⓧ \n", - " <:⑯㊶㊲㊷ⒽⓊ㉗㊽ⒷⓈ⑩㉜㉑⑱㉝㊵ⒶⓂ㉖① ⚖ ⓒⓅ㉙Ⓡ㊾ⓑⓐⓌⓍ⑧⑪㊴㊿㊱㉟⑤Ⓝ③⑮Ⓘ ➔ >:-ⓒ =:-Ⓓ <:-Ⓗ \n", - " =:㉝㊻㉖⑨⑦㊿⑭ⓁⓈⓌ①Ⓡ㊵ⒷⓅⓐ⑲Ⓙ㊳⑳⑥㉞㊷⑮㉗㉕⑧ⓒⓉ ⚖ ㊱⑪Ⓞ⑩Ⓗ㉓ⓏⓃⓋ⑱㊸Ⓕ㊺Ⓔ㊲㊾㊶㊴④ⒾⓀ㉚㉜⑯⑫ⓓ㊹⑬③ ➔ \n", - " >:㊱①⑫ⓏⓋⓃ ⚖ ㉔㉕⑪Ⓨ㉙Ⓞ ➔ >:-Ⓞ =:-Ⓕ <:-Ⓝ \n", - " =:ⓄⓂⓉⒹ㉕㉘㉖㊴㉑Ⓢ㊳㊵ ⚖ Ⓤ⑫⑳①Ⓝ㊺㉙ⓓ㉝ⓍⒿⓇ ➔ >:-Ⓤ =:-Ⓠ <:-Ⓜ \n", - " <:㉝㉞ⒾⓃⓉⓆⓓ⑮ⒻⓅ⑳㉑Ⓙ⑩Ⓖ㊾⑬㉙⑯Ⓩ㉓㊺Ⓢ⑧Ⓗ⑫㉚④㉘ⒷⓁⓀ㊲Ⓤ② ⚖ Ⓦ㉒㊵㊼㊳⑨㉔㉖⑰⑤㊱⑭㊴ⓄⒸ㉟㊷⑥⑦Ⓐ㊶㊿Ⓡ㊸㉛ⓑⓎ㉕Ⓓ①Ⓥ㊹ⓍⒺ㉗ ➔ >:-Ⓦ =:-ⓐ <:-Ⓣ \n", - " <:㊷㊶Ⓐ⑳Ⓟ㊵㉞㊹㉚Ⓙ㉒㉙ⓓ㉑⑬Ⓛ㊲ ⚖ Ⓘ㊳ⓊⓍ㊺⑧⑮⑱ⓀⓋⓑ③㉗①㊼㉛⑫ ➔ \n", - " >:Ⓣ㉒⑰㉞㉟㊷㉙ⓏⒹ㊼ⓊⒻ⑱⑨⑯⑩㉗ⓒ㊾Ⓨⓐ㉛⑧㉔④⑥㉖ⒾⓓⒸ ⚖ ⓋⒿⓈ⑲ⓍⓌ②㊱⑫⑪㊹ⒷⓆⓇ⑭㊴⑬㉑Ⓚ㊿Ⓜ㉕Ⓝ㊺㊽ⒼⓅ㊻⑤㉜ ➔ >:-Ⓥ =:-ⓑ <:-Ⓘ \n", - " =:ⓓⓁ⑨ⓍⓏⒹ㊽⑯Ⓑ②ⓆⒶ㉜Ⓨ⑮㉑㉚Ⓞ㊱Ⓥ㊲⑲㊹㉔ⓇⓉ㊿ⒾⒿ①㊴㉕㊵㊺㊷Ⓟ ⚖ ⓈⒽ④⑫⑰㊸⑭㉞㉗㉙㊻ⓒ⑳Ⓜ㉖⑱ⓑ⑩⑥㉓㉝㉟Ⓔ③Ⓤ⑦㉘ⓀⒻ㊼⑧㊾ⓐ⑤Ⓦ㊶ ➔ >:-Ⓢ =:-Ⓖ <:-Ⓨ \n", - " <:ⓄⓈ㊾㊷Ⓦ⑭Ⓥ㉔Ⓗ㉞Ⓔ⑰㊺ⓓ ⚖ Ⓖ㉓Ⓙ㉖㉑⑦㉝Ⓚ㊿㊼ⒸⒶⓁ⑲ ➔ >:-Ⓛ =:-Ⓟ <:-ⓓ \n", - " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱ ⚖ ㊺㊻㊼㊽㊾㊿ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓ ➔ \n", - " >:㊿ⓆⓃ㉙㉘㉛㊺⑧⑲ⓓ㊴Ⓟ⑭Ⓖ㉚ⓒ⑯㉒Ⓢ⑩ⓑ㉖㊻ ⚖ ⓇⒽ②⑱㉔ⓌⓏ㉕Ⓚ⑮Ⓓ⑨ⒾⒶⓁⓎⓊ㊼㉞㉟⑤㊽㉑ ➔ \n", - " >:ⓑ㊿ⓓ⑤Ⓥ㉝⑥ⓏⓀⓆ②⑩㉓⑪ⓍⒹⒻ⑬Ⓞ㉞Ⓐ ⚖ ㉑⑯㉗㊻㊺㊱㊼㉟⑮㊴⑦ⓎⓅ⑧ⓁⒺ㊹㉙㉚㊵Ⓡ ➔ >:-㊼ =:-㊽ <:-Ⓐ \n", - " =:⑪Ⓐ㉑Ⓨ㉔②㊲⑬㉙Ⓟ㉚ⓑ㊾ ⚖ ㊿ⓄⒷ㊷⑰ⓃⓊⓂⒹ⑯㉟Ⓛ㉖ ➔ >:-Ⓑ =:-Ⓒ <:-㊾ \n", - " <:Ⓜ㉝Ⓓ㉞Ⓥ㊽④ⒷⓌ㊴ⓒ⑪㊾㊺ ⚖ ㉒㊼⑯㊿㊵⑤⑰Ⓡ①㉔㉙㉜Ⓠ⑱ ➔ >:-㊿ =:-㊻ <:-㊺ \n", - " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴ ⚖ ㊷㊸㊹㊺㊻㊼㊽㊾㊿ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓ ➔ \n", - " >:⑳⑫㊼㉒Ⓓ㉟㊷ ⚖ ①⑬㊸㊻⑧㊾Ⓑ ➔ >:-㊸ =:-㊹ <:-㊷ \n", - " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵ ⚖ ㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓ ➔ >:-㊶ =:0 <:-㊵ \n", - " <:⑳㉑㊳ⒺⒿⓃ ⚖ ㊲ⓑⓇⒹ⑨⑬ ➔ >:-㊲ =:-㊴ <:-㊳ \n", - " <:ⓐⓀⓌ㊻⑦①㉔③④⑯⑫ⓇⓍ⑳㉝㉞Ⓐ㊽㊿②㉒㉕ⓎⓁⓒ⑰⑩ⒷⒿ㊺㊴㉘ ⚖ ㊱ⒽⒻⒾⒼ㉛㉙⑮⑪㉗ⓑ㊲㊶ⓅⓏ㊷Ⓔ㉖Ⓢ⑥⑬ⓓ⑧㊾Ⓒ⑨㉑ⓂⓆ㊼⑤㊸ ➔ \n", - " >:㊹⑦⑰⑭㉟⑤㊻㊸㊾㉛㉔ⒾⒺ㊺ⓎⒶ㉖⑥ⓒⓂⒸⒻⓁ ⚖ ㊱㉓ⓏⓍⓌ⑬⑪Ⓟ㉘ⓃⓈ㊽Ⓚⓐ⑯㊼ⒿⒽ㉞ⒹⓉ⑧Ⓞ ➔ >:-㊱ =:-㉙ <:-㉛ \n", - " =:Ⓟ㉑⑧Ⓔ㊿⑳Ⓢ⑤Ⓨ㊳ⓒⓓ①②㉒⑭Ⓝ㉚ ⚖ ㊹ⒶⓊⓉⓋ㊸㊴㉝ⓇⓐⒽ㉙ⒹⒸⓂ㉟ⓏⒿ ➔ >:-㉟ =:-㉜ <:-㉚ \n", - " <:Ⓡ⑤㊱Ⓜ㉜ⓌⓃⓍ㉒㊹㊵ⓈⓊⓉ㊷㉟⑥Ⓚⓑ㉓Ⓖ㉘㊻④Ⓓ⑨㊳ ⚖ ㉝㊸㉕㉙③㉖㊶㊲ⓎⒽ②⑫⑱⑰⑮㉛⑦ⓐ㊿㉚ⓓⓅⓆⓋ⑩㉑Ⓘ ➔ >:-㉝ =:-㉞ <:-㉘ \n", - " <:㊾ⓊⒷⓉ⑰⑤㊷⑪Ⓧ㉘⑧⑯㉓Ⓝ⑦②㊳㊻Ⓙⓒ㊺Ⓕ㉕ ⚖ ⑳③⑩ⓐ①Ⓒ㊱Ⓥ⑱Ⓠ㊹⑫㉙㉗Ⓨ㉞㊼Ⓛ㉖⑭㊶Ⓩ㊴ ➔ \n", - " >:ⒹⓊ㉓㊸⑮Ⓣ㉞㊻Ⓑ㊽㊴㊶㊱⑦⑤ⓐ㉜㊺ⓒⓅ㉒⑳ⒼⓀ⑧⑪㉝Ⓜ⑱④③ ⚖ ⓎⓆⓁⓓ⑩ⒶⒽ⑫Ⓞ⑬㊹㊼⑲Ⓒ㉘Ⓦⓑ⑰㊾Ⓩ㊲㉟㉕㉗㉙⑯ⓃⒾⒻⓇ② ➔ \n", - " >:㉖㊱㉑㉗㉚Ⓡ㉛⑧⑥Ⓧ㊷ⓅⒾⓃⓆⓁ㊻㊶㊵㊽⑨ⓌⓈ㊼㉕ⓒⓂ㉘Ⓩ㉞⑲Ⓣ㉓ⓐ⑯⑪Ⓓ ⚖ ⑫㉙①⑦Ⓑ⑱ⓎⒶ㊹ⒺⓊⒼ⑰㊴③⑳ⒽⒻ⑮②㉝㉒⑬⑤ⓄⒸ㉜㊾⑭㊿Ⓙ㊲ⓑⓓⓀ㊺Ⓥ ➔ >:-⑫ =:-⑩ <:-㉗ \n", - " =:㊶⑥㊽㊸⑮⑭ ⚖ ①㊿ⒽⒷⓆⓋ ➔ >:-① =:-㉖ <:-⑭ \n", - " <:ⒽⒾ㉕Ⓑ㉙㉞ⓆⓌ⑩⑯⑲㊺Ⓔ③ ⚖ ㊻⑤⑳⑨㊳Ⓚ㉛Ⓡ㉝⑪⑦Ⓞ⑫Ⓖ ➔ >:-⑳ =:-⑱ <:-③ \n", - " =:ⓐⓎ⑨ⓆⓍ⑯Ⓢ㉖㊲Ⓦ⑤③ⒹⓉ⑭Ⓩ①㊴⑫④㊻㉚Ⓘ⑪⑥ ⚖ ⓒⒶ㊾⑲Ⓤ㉟⑩ⓑ㉑ⓁⒻ㉝⑮ⓓⓃ㉛②㊹㊳ⓄⓅ⑰⑦㊷㉗ ➔ \n", - " >:Ⓟ㊵Ⓖ㊳㊺ⓐ②Ⓑ㊾⑩㊽㉓㉒㉚⑤Ⓥ⑮ ⚖ ㉔⑦④Ⓘ㊷Ⓓ㊻⑨Ⓞ㉞㉑⑬Ⓔ㊸ⒸⓀⓂ ➔ >:-㉑ =:-⑲ <:-⑮ \n", - " =:㉑㊾ⓓ㉞㉓⑧ⓈⒿⒸ⑱ⓃⓁ⑭㉘ⓐ㊱⑨㉚⑬ ⚖ Ⓧ㉙Ⓦⓒ②Ⓣ㊶③Ⓓ㉜ⓅⒼ⑥㊷㉒㊵㊿⑲Ⓘ ➔ >:-㉒ =:-㉔ <:-⑬ \n", - " <:Ⓚ㉚⑮ⓑ⑱ⒿⒺ㉙⑩Ⓨ㊼ⓃⓏ⑥⑦Ⓞ㊵⑭㊷⑬ ⚖ ⑨㉘㉜㉒㊴㉓ⓇⓐⒾⒼ㊾㊶Ⓗ㊿⑯Ⓕ⑤③ⓓⓉ ➔ >:-⑨ =:-④ <:-⑥ \n", - " <:㉑㉙⑨ⒿⓋ㊶㉕㊿ⒾⓃ㊽②ⓇⓉ㉝㊵⑮Ⓕ⑱Ⓑ㊺ⓂⓄ⑤ ⚖ ㊾㉖㊻ⓀⓎⓁⓈ㊲㉒⑲⑩㉚ⓑ⑰⑧⑪㉗⑥㉟ⒶⓊ㊷⑫㉔ ➔ \n", - " >:Ⓧ⑫㊼㉚②㉕⑦㉞ⓉⒻ⑥ⓊⓀ㊾Ⓛ⑪㉘㉒ⓑ㊶㊵㉔㉗ⓋⓌ ⚖ ⑰Ⓜ㊹㊱Ⓢ④㉓Ⓐ⑮Ⓨ㉜㉙㊻㉛ⓅⒾⒿ①⑯⑱㊽ⓓ⑤㊲Ⓝ ➔ >:-⑰ =:-⑧ <:-⑪ \n", - " =:Ⓒ③㊹⑨⑦ ⚖ ㊽㊿㉓Ⓘⓒ ➔ >:-㉓ =:-⑯ <:-⑦ \n", - " <:㉚㉟ⓂⒸⓓ⑤㉛Ⓞ ⚖ ②㉖⑪㊳㉓㊷⑭⑧ ➔ >:-② =:-㉕ <:-⑤\n" + "[①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗ ⚖ ⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓ] ➔ \n", + " >:[①③⑦⑬㉒㉔㉗㉜㊱㊵㊷㊿ⒽⓁⓅⓇⓈⓉⓍⓑⓒ ⚖ ⑥⑨⑩⑲⑳㉕㉙㉚㊳㊶㊾ⒷⒹⒻⒼⒾⓂⓃⓆⓊⓐ] ➔ \n", + " >:[⑥⑧⑬㉝㊲㊿ⒶⒻⓁⓂⓃⓌⓏ ⚖ ③㉒㉔㉖㉘㊽ⒹⒼⒽⒿⓐⓒⓓ] ➔ \n", + " >:[⑤⑫⑲㉓㉛ⒷⒸⒽⒾⓐⓒ ⚖ ①②③④⑬㉕㊷ⒹⓂⓄⓋ] ➔ >:-Ⓓ =:-Ⓖ <:-ⓐ \n", + " =:[④⑥⑪⑯⑲㉓㉕㉗㉘㉙㉝㉟㊱㊵㊹㊺㊻㊿ⒶⒺⒻⒼⒽⓂⓃⓅⓆⓈⓌⓒ ⚖ ①⑤⑦⑬⑭⑮⑱㉚㉜㉞㊲㊴㊷㊸㊼㊽㊾ⒷⒸⒹⒾⒿⓀⓁⓋⓍⓎⓏⓑⓓ] ➔ >:-Ⓘ =:-Ⓤ <:-Ⓠ \n", + " <:[⑧⑨⑩㉚㊲ⓂⓅⓈ ⚖ ⑫㊱㊹ⒷⒸⒻⒼⒿ] ➔ >:-Ⓕ =:-Ⓝ <:-Ⓜ \n", + " =:[②⑲㉕㉘㉙㉟㊱㊴㊵㊽㊿ⒼⓀⓄⓆⓉⓎⓑ ⚖ ⑥⑧⑨⑫⑰⑱㉓㉔㉗㉞㊸ⒸⒹⒿⓂⓈⓌⓏ] ➔ \n", + " >:[①⑥⑦⑫⑱㉒㉔㉖㉚㊳㊷㊸㊻㊽ⒶⒷⒸⒼⓁⓂⓆⓇⓏⓓ ⚖ ④⑤⑧⑩⑬⑲㉗㉛㉝㉞㉟㊱㊴㊶㊹㊺㊾㊿ⒽⒾⓃⓌⓎⓑ] ➔ >:-Ⓦ =:-Ⓙ <:-Ⓩ \n", + " =:[③④⑥⑬⑰⑱⑲㉜㉝㉞㉟㊺㊻ⒼⒾⒿⓁⓆⓇⓏⓐⓓ ⚖ ①②⑤⑦⑧⑨⑭⑳㉓㉕㉗㊲㊳㊸㊾ⒶⒷⒸⓀⓂⓊⓋ] ➔ >:-Ⓥ =:-Ⓔ <:-ⓓ \n", + " <:[①④⑦⑩⑫⑬㉒㉖㉗㉘㉟㊱㊳㊴㊶㊹㊿ⒶⒷⒹⒼⒾⒿⓅⓇⓋⓌⓎⓐⓑ ⚖ ⑥⑧⑨⑪⑮⑯⑰⑱⑲㉑㉓㉔㉕㉚㉛㊵㊸㊻㊼㊽㊾ⒺⒽⓁⓃⓄⓆⓈⓉⓏ] ➔ >:-Ⓞ =:-Ⓚ <:-Ⓨ \n", + " <:[④⑦⑩⑪⑬⑱㉓㉔㉖㉗㉚㉜㊳㊴㊺ⒶⒸⒹⒾⓀⓃⓆⓇⓉⓌⓏⓑ ⚖ ①③⑥⑧⑨⑭⑲㉒㉛㉝㊵㊷㊸㊻㊽㊾㊿ⒺⒿⓁⓂⓄⓅⓈⓋⓎⓐ] ➔ \n", + " >:[④⑲㉕㉚㊳㊹ⒷⒾⓅⓌⓑⓒ ⚖ ②㉑㉓㉔㉝㉟㊺ⓁⓄⓆⓏⓓ] ➔ >:-Ⓛ =:-Ⓢ <:-Ⓟ \n", + " =:[②⑨⑬⑭㉚㊴㊵㊸㊺㊼㊾ⒷⒸⒹⒼⒾⒿⓃⓏⓒ ⚖ ④⑧⑩⑯⑱㉓㉔㉖㉘㉛㉜㉟㊳㊷ⒶⓊⓌⓍⓎⓐ] ➔ >:-Ⓧ =:-Ⓗ <:-ⓒ \n", + " <:[③㊲ⒹⓂⓐⓑ ⚖ ㊷ⒺⓀⓄⓇⓍ] ➔ >:-Ⓡ =:-Ⓣ <:-ⓑ \n", + " =:[①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱ ⚖ ㊺㊻㊼㊽㊾㊿ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓ] ➔ \n", + " >:[①④⑤⑦⑨⑯⑰⑲㉖㉞㊴㊶㊹㊻㊼ⒷⒹⓃⓅⓈⓉⓎⓏⓐⓒ ⚖ ②③⑮⑱⑳㉑㉒㉓㉔㉕㉛㉝㉟㊱㊾ⒶⒸⒺⒻⒽⒾⓂⓄⓆⓌ] ➔ \n", + " >:[①④⑭⑮⑲㉘㉟㊳㊵㊸㊽ⒸⒺⒾⒿⓊⓌⓏ ⚖ ③⑥⑦⑪㉓㉖㉗㉜㊹㊻㊼㊾㊿ⒷⒹⒼⓈⓎ] ➔ >:-㊾ =:-Ⓐ <:-Ⓒ \n", + " =:[㉔㉖㊷㊿ⒷⓋⓌ ⚖ ⑪㉓㊻㊼㊽ⒽⓂ] ➔ >:-㊽ =:-㊺ <:-㊿ \n", + " <:[②⑥⑭㉟㊴㊻㊽ⒸⓃⓅⓐⓓ ⚖ ③⑤⑧⑪⑰㉗㊵㊶ⒷⒺⓆⓎ] ➔ >:-Ⓑ =:-㊼ <:-㊻ \n", + " =:[①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴ ⚖ ㊷㊸㊹㊺㊻㊼㊽㊾㊿ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓ] ➔ \n", + " >:[⑧⑨⑩⑬⑰⑳㉔㉕㉜㉞㉟㊳㊶㊹㊽㊿ⒷⒸⓃⓅⓊⓍⓐ ⚖ ⑥⑦⑭㉖㉘㉙㉝㊴㊵㊸㊼㊾ⒶⒺⒼⒿⓁⓄⓆⓇⓉⓏⓓ] ➔ >:-㊸ =:-㊷ <:-㊹ \n", + " =:[①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵ ⚖ ㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓ] ➔ >:-㊶ =:∅ <:-㊵ \n", + " <:[③④⑥⑦⑪⑳㉒㉕㉖㉗㉚㉜㊱㊲㊶㊷㊸㊹㊺㊾㊿ⒸⒼⒾⓁⓃⓅⓈⓉⓊⓍⓒ ⚖ ①②⑧⑩⑫⑭⑮⑯⑱㉓㉘㉙㉛㉞㉟㊴㊵㊻㊽ⒶⒹⒺⒽⓀⓂⓄⓆⓇⓎⓏⓐⓓ] ➔ >:-㊴ =:-㊳ <:-㊲ \n", + " <:[①③⑤⑥⑧⑨⑩⑫⑰⑲⑳㉛㉜㊱㊳㊴㊵㊶㊷㊾ⓁⓃⓅⓋⓏⓑⓓ ⚖ ④⑪⑮㉖㉗㉘㉙㉚㊸㊹㊺㊻ⒶⒸⒺⒻⒾⒿⓀⓄⓇⓈⓉⓌⓎⓐⓒ] ➔ \n", + " >:[①④⑦⑨⑬⑭⑮⑳㉒㉔㉗㉘㊲㊳㊵㊶㊿ⒶⒸⒻⒿⓈⓊⓏⓒ ⚖ ②⑤⑩⑫⑱⑲㉖㉙㉜㉝㉟㊷㊸㊽㊾ⒷⒺⒼⒾⓂⓄⓆⓇⓍⓎ] ➔ >:-㉙ =:-㉚ <:-㉘ \n", + " =:[⑩⑱㉒㉕㉞ⒺⓍⓑⓒ ⚖ ⑦⑨⑪⑬㉖㉚㉝㊳㊾] ➔ >:-㉝ =:-㉟ <:-㉞ \n", + " <:[⑨⑩⑪⑬㉖㉘㉜㉝㊲㊴㊷㊸㊹㊻㊿ⒶⒸⓂⓆⓈⓋⓎⓐⓑⓓ ⚖ ②④⑦⑯⑲⑳㉓㉔㉗㉙㉚㉛㊽㊾ⒷⒾⒿⓀⓅⓇⓉⓊⓌⓏⓒ] ➔ >:-㉛ =:-㊱ <:-㉜ \n", + " <:[⑥⑦⑨⑫⑯⑱㉒㉓㉖㉙㉜㉝㉞㊱㊵㊷㊼ⒶⒸⒺⒻⒼⓁⓃⓋⓐⓑⓒ ⚖ ②③⑩⑪⑲⑳㉔㉕㉗㉘㉚㉟㊸㊹㊺㊻㊾ⒽⒿⓀⓂⓄⓅⓇⓈⓉⓌⓎ] ➔ \n", + " >:[⑧⑨⑪⑮⑯⑱⑲㉑㉒㉔㉚㉛㉟㊱㊴㊶㊷㊿ⒶⒸⒹⒺⒼⓀⓁⓈⓑ ⚖ ①②③⑰⑳㉓㉘㉞㊲㊵㊺㊼㊽ⒷⒽⒿⓄⓅⓆⓉⓋⓌⓍⓎⓏⓒⓓ] ➔ \n", + " >:[②⑤㉒㉕㉘㉙㉚㉛㉟㊱㊶ⒹⒽⓋⓑ ⚖ ③⑦⑩⑪⑯⑰㉔㉝㊴㊸㊹ⒶⒿⓆⓓ] ➔ >:-③ =:-⑳ <:-② \n", + " =:[③⑥⑩⑫⑭⑳㉝㉟㊿ⒽⒿⓁⓄⓅⓈ ⚖ ④⑦⑪⑱㉑㉔㉕㉛㉜㊴㊼ⒾⓉⓎⓓ] ➔ >:-㉕ =:-㉗ <:-⑩ \n", + " <:[①③④⑨⑫⑲㉑㉓㉗㊳㊶㊷㊺㊼㊾㊿ⒸⒹⒺⒽⒿⓀⓄⓈⓉⓎⓏⓑ ⚖ ②⑥⑩⑪⑮⑯⑰⑱⑳㉕㉖㉛㉜㉞㊴㊻㊽ⒻⒾⓁⓂⓆⓇⓊⓌⓍⓐⓓ] ➔ >:-⑪ =:-㉔ <:-⑲ \n", + " =:[④⑤⑥⑦⑨⑩⑬⑲㉒㉓㉔㉗㉘㉝㉟㊱㊷㊹㊼㊽㊾㊿ⒹⒻⒽⒿⓀⓁⓂⓋⓎⓒ ⚖ ①②③⑧⑪⑫⑯⑰⑱⑳㉖㉙㉚㉛㊲㊳㊴㊵㊶㊻ⒶⒷⒸⒺⓃⓄⓇⓉⓌⓏⓐⓑ] ➔ \n", + " >:[④⑤⑩⑫⑭⑮⑰⑲㉑㉒㉛㉝㉟㊲㊳㊴㊻㊽㊾ⒷⒹⒻⒽⒿⓋⓍⓓ ⚖ ③⑥⑧⑪⑱㉓㉔㉕㉖㉚㉜㉞㊱㊵㊷㊹㊺㊿ⒶⒸⓁⓅⓊⓌⓎⓏⓑ] ➔ >:-⑧ =:-① <:-⑰ \n", + " =:[⑨⑭⑳㉕㉖㉗㉛㉞㊸ⒶⒻⓀⓅⓇ ⚖ ⑥⑫⑬⑮㉚㊹㊺㊿ⒹⒺⒿⓊⓌⓎ] ➔ >:-⑮ =:-㉑ <:-⑭ \n", + " <:[③⑤⑥⑧⑨⑰⑳㉑㉒㉓㉔㉕㉗㉘㉙㉚㉝㊲㊵㊶㊸ⒷⒺⒻⓀⓁⓂⓃⓄⓊⓐⓑⓒⓓ ⚖ ①②⑩⑪⑫⑬⑭⑮⑯⑱㉖㉜㉞㉟㊱㊳㊴㊹㊺㊻㊽㊿ⒶⒸⒹⒽⒿⓆⓇⓈⓉⓋⓌⓎ] ➔ >:-⑬ =:-④ <:-⑤ \n", + " <:[②⑯㉓㉕㉖㉘㉛㊲㊵㊶㊸ⒸⒺⒼⒿⓂⓅⓊⓎ ⚖ ④⑤⑥⑦⑧⑩⑬㉒㉙㉚㉜㉝㊼ⒶⒻⓆⓉⓑⓒ] ➔ \n", + " >:[②⑥⑬⑯⑱㉔㉖㉙㉜㉟㊱㊷㊽ⒷⒹⒻⒾⓆⓈⓉⓐⓒⓓ ⚖ ①③⑤⑪⑰㉑㉒㉚㉞㊶㊺㊼㊿ⒶⒸⒺⒼⓂⓅⓇⓊⓋⓎ] ➔ >:-㉒ =:-⑦ <:-⑥ \n", + " =:[①⑥⑦⑧⑫⑭⑯⑲㉔㉖㉘㉚㉞㉟㊲ⒼⓄⓆⓇⓋⓍⓐⓓ ⚖ ③⑬⑮⑰⑱⑳㉑㉓㊴㊹㊾㊿ⒹⒺⒻⒾⓁⓅⓉⓊⓌⓏⓑ] ➔ >:-⑱ =:-⑨ <:-⑫ \n", + " <:[③⑨⑪㉖㉜㉟㊲㊵㊶㊷㊼ⒻⒼⓁⓄⓅⓆⓇⓈⓏⓒⓓ ⚖ ④⑧⑩⑭⑲㉓㉔㉗㉚㊴㊹㊽㊾㊿ⒶⒷⒹⓂⓃⓊⓍⓐ] ➔ >:-㉓ =:-⑯ <:-㉖\n" ] } ], "source": [ - "do(Puzzle(80, 4, '-0'))" + "do(make_puzzle(80, 4, '-='))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Looking good (except that the output is still rather hard to read).\n", + "Looking good (except that the output is a bit hard to read and understand, because it is so large).\n", "\n", - "# Puzzles with 5 Weighings\n", + "# Puzzles with 5 or More Weighings\n", "\n", - "With 5 weighings, 35 = 243, so I might be able to handle up to 121 lighter-or-heavier balls (242 possibilities):" + "With 5 weighings I could conceivably handle up to 35 = 243 oddballs, and with 6 weighings, 36 = 729. The resulting policy trees would be multiple pages of output, so I don't think I need to see them. Instead, I'll make a **table** of results. For various values of *w* from 3 up, and for the oddballs being each of '+-', '+-=', '+', '+=', I want to know what's the highest number of balls, *N*, that leads to a solvable puzzle (and the total number of oddballs, which will be either *N*, 2*N*, *N* + 1, or 2*N* + 1)." ] }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 139, + "metadata": {}, + "outputs": [], + "source": [ + "def report(w_range=range(3, 7), odds=('+-', '+-=', '+', '+=')):\n", + " headers = ['*w*','3*w*', *(f'odd: \"{odd}\"' for odd in odds)]\n", + " return format_table(headers, [[w, 3 ** w, *(highest_N(w, odd) for odd in odds)] \n", + " for w in w_range])\n", + " \n", + "def highest_N(w, odd: str) -> Optional[Tuple[int, int]]:\n", + " \"\"\"Find highest number of balls N (and total number of oddballs) that are solvable in w weighings.\"\"\"\n", + " target = 3 ** w // (odd.count('+') + odd.count('-'))\n", + " for N in reversed(range(target + 3)):\n", + " puzzle = make_puzzle(N, w, odd)\n", + " if any(good_partitions(puzzle, repeat=1)) and solve(puzzle):\n", + " return (N, len(puzzle.oddballs))\n", + " return None # No solution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "I decided to format the table with IPython Markdown:" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "metadata": {}, + "outputs": [], + "source": [ + "from IPython.display import Markdown\n", + "\n", + "def format_table(headers, rows, justify='---:') -> Markdown:\n", + " \"\"\"Make a markdown table from header and rows.\"\"\"\n", + " underline = [justify for _ in headers]\n", + " lines = [headers, underline, *rows]\n", + " return Markdown(cat(map(format_row, lines)))\n", + "\n", + "def format_row(columns) -> str: \n", + " \"\"\"Format a single row of a table in Markdown format.\"\"\"\n", + " columns = map(str, columns)\n", + " return \"|\" + \"|\".join(columns) + \"|\\n\"" + ] + }, + { + "cell_type": "code", + "execution_count": 58, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "None\n" - ] - } - ], - "source": [ - "puzzle5 = Puzzle(121, 5)\n", - "do(puzzle5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Nope, that didn't work. Let's check the partition sizes (they need to be 81 or less to solve in 4 more weighings):" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[80, 82, 80]" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "partition_sizes(puzzle5, 40)" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[82, 78, 82]" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "partition_sizes(puzzle5, 41)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's back off to **120 balls, 5 weighings** for 2 × 120 + 1 = 241 possibilities:" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵ ⚖ ⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⦰⦱⦲⦳⦴⦵⦶⦷⦸⦹⦺⦻⦼⦽⦾⦿⧀⧁ ➔ \n", - " >:㊴㊳ⓨ⦸⑫⑩④ⓌⒾⓅⓐⓝⓠ㊽⦲①㉛③ⒺⓣⒶⓦ⦹Ⓞⓙ⦶ⓗ⑨㊹Ⓡ㊱⑰Ⓩ㊿Ⓕ⦴②㉞ ⚖ ㉟㉗Ⓑ⑥⑤⑦⑧ⓜ㉓㉑⦻ⓞⒿⓩⓘ⑬⦳㉖ⓓⓤ㊺ⓚⓥ㊼ⓔ⦰㉕⑯ⓢ⦿㊻Ⓖ⑲⦽Ⓛ⑳ⓊⓍ ➔ \n", - " >:⑤ⓙⓦ㊷⑨㉕㉘⦾ⓋⓩⓕⒶ⦲⑥⦱ⓓ⑬㉞Ⓣ㊵ⓑ⑱㉙⧀㉔ⓞ㊻⑪⑧⦸⦺ⓖⓄⓈ㉓⑩㊸⦷ⓘ㉚㉛ⓝ④⦹ ⚖ ⑫㊳ⓂⓥⓍⓌ㉗㊹⦵②ⓠ㉒⑲⑦ⓨⒽⓛ㊾㊿㉜⦳ⓟⓊ⦿①㊽Ⓓⓒ㉑㊴ⓡ㊶ⓐ㊱⦼ⒾⓏⒿⓤⒺⓁ㉖⦴ⓣ ➔ \n", - " >:⦹㉚ⓥⓇ①⦱⑧ⓕ㊼Ⓘⓖⓣⓗⓝ㊲㉘㊳⑮Ⓛ㊹Ⓨ㉛ⓜ⑭㉓⧁⑯③ⓔ㊸⑤⦼⦵ⒷⓊⓄ⑨㉜ⓤ ⚖ ㉙Ⓔⓙ⑫㊷ⓦ㉟⦻⑲Ⓒ⧀Ⓟ㊾㉖Ⓩ㊵⦰㉒⑬㊶⑪ⓩⓈ㊿ⓡⓧ⑱㊽㊴⦷④ⓞ⦿⑳Ⓗ⦸㉔ⓘⓛ ➔ \n", - " >:⑰Ⓞ㉜㊳㉗㊻ⓊⓚⓋ⑥㉘ⓞⓨⓍ㊱ⓦ⑦⦵⦻⧀㉚⑯㊿⑲Ⓒ②㊾①ⓌⓠⓅⓕ㉛ ⚖ ⓤⓎ⧁⑳ⓒⒺ㊸ⓥⒹ㊵⑨⑫㉔㉓⑭⦾㉝ⓀⓈⓟ㉟㊴Ⓖ⦽ⓙⓉ⦶ⓢⓛⓗⓓ⦼㊺ ➔ >:+㉛ =:-⦿ <:+⑨ \n", - " =:㊹ⓙⓎⓘ⑳ⓋⓝⓃ⑭ⓥ㊱ⓐⓛⓨ㊾⦴⑪㉞㉑Ⓣ⦽ ⚖ ⑩㉙Ⓚ⑧㉕⑫ⓁⓍⒷⒾⓂ⑦⦼㊷ⓞ⦿ⓧ㊸㊵㊺㉓ ➔ >:+㉞ =:-⦳ <:+⑩ \n", - " <:Ⓞⓣ㉔ⓥⓘⓦ㊼ⓠ⑳⑪Ⓐ⦹㊽Ⓗ⦺ ⚖ ⓤ⦲②⑭⑩⦻⦷Ⓙ㉒Ⓚ㊾⦱㉗㊶ⓖ ➔ >:-ⓤ =:+④ <:-ⓥ \n", - " =:Ⓢ㊺ⓛⓠⓄⒻ㉗⦾⧁㉓㉞⦷ⓨ㉖ⓕ⑱③Ⓡ㉚㉑Ⓘ⦵ⓑⓒ⦳㊲ⓓ⑲ⓥⓔⓍⓃ⦼㊼ⓧ㊾ⓂⓀⓖ⑦Ⓗⓢ ⚖ ⓐ⦻㊿⑧Ⓥ㊽⑫⦿⦸Ⓙ㊻㊳㉔⑨ⓩ⑭②Ⓠ㉕Ⓛ㊹Ⓩ㉒④ⓦ⦹ⓣ⦴㊶Ⓟ㉙⦲⑬①Ⓑⓘ⦽ⓟⒹⓉ⦶⑰ ➔ \n", - " >:ⒺⓗⓁⓅ⦹Ⓡ⦾Ⓒ㊱Ⓥ㉚Ⓘ㊽⑲㊺ⒻⓌⓒⓟⓍⓥ㊵Ⓢⓙ⦶ⓠ㉛⧁㉕④㊳㉜Ⓖ㉗⑬⑨ⓛ㊻⦽ ⚖ ⓑ⦻ⓦ㊿⦰㊲ⓤ⦵ⓝ㊸⧀⑪Ⓚ㊾ⓜ⑤Ⓜ⦼⑭ⒹⓊⒶ㉖⦱⑧ⓧⓡ②㊶ⓩⓚⓖ㉔ⓨ⦿㊷Ⓠ⦳㉓ ➔ >:-⦻ =:+③ <:-⦽ \n", - " =:㉒Ⓨ⦰㊾⑫㉗ⓟ㉚㉔Ⓠⓙⓔ⑮Ⓤ ⚖ ⓜ⑰⦳Ⓒ⑤Ⓞ⦴㊸ⓢ⦶⦱ⓛⓏ② ➔ >:-ⓜ =:-ⓚ <:-⦰ \n", - " <:㊵Ⓢ㉑㉜⦱ⓥⓄⒽ㊾ ⚖ ⑰ⓢⓨⒹ㉔⦼⦿ⓜ⑨ ➔ >:-ⓢ =:-ⓔ <:+⑰ \n", - " <:⦼ⓔ㉕ⒺⓠⒶⓈⒿ②ⓕ⑩ⓣ㉘⧀⑭⦷⦺①㊸ⓐ⑨⦸⦲Ⓨⓞ ⚖ ⦰Ⓞ⑮㉜⦽ⓤ㊿③ⓑⓋⓩⒾⓍⒽ㊷㊱㉚⦹ⓟ⦿㉗⦻㊴㊲⑲ ➔ \n", - " >:Ⓦ㉓ⓨ㉔⦰Ⓢⓔ㉞Ⓕⓟ㉖ⓞⓋ㊿Ⓗ㉒ⓣⓏ㊾㉚㊶⦽㉝ ⚖ ②⦱ⓛ⦷Ⓝ㊱Ⓔ㉑⑬⦵㉟⦸⦹Ⓟ③㊻ⓆⓩⓙⒶ⑥⑱⦼ ➔ >:-ⓩ =:+① <:+② \n", - " =:ⓞⒺ⑨ⓘ⑬⦱Ⓒ⦰㉘⦻Ⓞ③ⒾⓌⒶⒼ㊽ⓣ⑥Ⓓ㊸Ⓕ㉒Ⓥ⑫ ⚖ ⑭㉗Ⓨⓤ㊹㉔㉓ⓚⓃ㉙⦲ⓨ⑱Ⓙ㉚Ⓠ⦺ⓦ㉑Ⓑⓝ㊻Ⓢ⑳⑰ ➔ >:+⑫ =:+㊳ <:-ⓘ \n", - " <:㊼㊴Ⓚⓠ⦻①㊽ⓛⓚ⦺③㉜⧁ⓩ⦷Ⓢ⦹㉟ⒼⓏ⑨ⓅⒽⒻⓊ④Ⓡ⑧ⒿⓂⓝ⦳⦱Ⓣⓗ⑥ⓥ⑮㊹㉔㊶㉚Ⓥⓞ ⚖ Ⓔ㉝Ⓒ⦵㊿㉗㉛ⒶⓔⓄ⦽ⓒⓡⓢⓆ⑬⦲ⓧ⦼ⓙⓣⓐⓁ㉖⦰Ⓝ㊾⧀⑭ⓘ㊲Ⓨⓤ㊳⑪㉒ⓕⒹⓖⓜ⦶Ⓦ⦿⑫ ➔ >:+㊴ =:+㊱ <:-ⓞ \n", - " =:㊶④Ⓝⓧ⦾ⓦⓠⒾ㊺⑬ⓡⓘⓊ㉚Ⓣ㉘⑱ⓞ⦲ⓔⓐ⑧⑥⦳ⓙ⑰ⓎⓈ㊲㊿㉝ⓛ㉕Ⓦ①Ⓧ⧁Ⓟ ⚖ ⦼㉛㊴ⓩ⦹⦶㊷Ⓑ⦵㉔Ⓞ⑩Ⓥ⑲⦱⑫⑮⦸ⓑⓤⓟ㉑⦿㉓ⓁⓆ⑪㊱⑤ⒸⓇ㊹③⦴㉙⑨ⓥⓏ ➔ \n", - " >:ⓞ⦻⑨ⓙⓁⓈⓇ⦷⑫ⓄⓊⓐⓘⒸ⑤Ⓓ⑩㉟㊽⑬③ⓕ㉗⦱⑪㊾㊸⑧⦾⦸Ⓕ㉑㉔⧁㉚④ⓟ ⚖ Ⓚ①⦲②Ⓦ⑦㉜ⓝⓨⒿⓍ㉛㉞⦼⑭ⓗⓩⒶ⦵ⓒⓋⓖⓡ㊼Ⓟ⑲⦴㊻⦿⧀⦺ⓉⓣⓂⓚⓆ㉘ ➔ \n", - " >:⧁㉚⑫⑧Ⓗ⦼ ⚖ ㉝ⓣⒾ㊵ⓨ⦺ ➔ >:+㉚ =:-⦵ <:-⦼ \n", - " =:⑰㊿㉙㉞㊴ⓘ⦻ⒶⓂ㉜⦴⧁㉖⑱ ⚖ ⓨⓅⓐ㉑㉗⑩⦽⑯ⓒⓁ⦸㊱ⓓ㊲ ➔ >:+⑱ =:+㉝ <:+㊲ \n", - " <:㉟ⓣⓙⓠⓞ⦴㉚⑮Ⓣ㊺Ⓝ⦶Ⓡ⑪Ⓓ㉝㊾㊱Ⓦⓝ⦾⦹Ⓖ ⚖ ⓟ㉖⦼⑳㉑Ⓨ㊿㉘ⓈⓅⓂ①ⓔⓖ④ⓘ㊶㉕⦸ⓕⓛ⦿⦺ ➔ >:-ⓟ =:-⦱ <:+㉘ \n", - " =:⑬Ⓥ㊽⑥ⓚ㊷⦵㊸⦲Ⓦ㉒⑤Ⓓ①Ⓣ㊼Ⓨ⦷㉝⦱ⓛⓈ⦺Ⓟⓖ⑭ ⚖ ⓣⓔⓕ⧁㊿Ⓛ⑯㊲Ⓐⓡ⦻⑪ⓤ㉘Ⓒ③⦹⦿ⓊⓇⓦ⑩⑰⑱ⓑ⑨ ➔ \n", - " >:㊴㉗Ⓧ⑮㉖㉟㊺㉘Ⓥ⑩Ⓐ㉛Ⓡ②ⓤ⦱⦴Ⓔⓙ⑳⦸ⓠⓅⓂⓨ㉜⑤㊾ⓡ㉒ⓕ ⚖ ⓐ㊼ⓘ㊳ⓜ㊸ⓝ㊽㉙ⓑ㉓⑰㊵⦻⑨ⒻⓉ⑯ⓀⓏⓥⓞ①Ⓞ⧀Ⓢ⦽⦰㊻⦾㉝ ➔ >:+㉒ =:+⑭ <:-ⓕ \n", - " =:㊹⑤ⓙ⑩⦶⑧Ⓢ㉘Ⓦ⑦㉟⦻ⓘⒺⓧ㉛⑮㊵ ⚖ ⒿⓎ㉞ⒶⒻ⑬㊿③⑨⦼㊱㊽㉝①⦷㉗㉜② ➔ >:+㊵ =:-⧀ <:+㉜ \n", - " <:㊷㉞⑮㊺㉜㉗㊵ⓦ⦶⑪Ⓐ⑬㊴㊱Ⓨ㊳ⓔⓧⓇ⑱ⓢ㊽㉖㉛ⓀⓄⓌ㉙㉓⦸㊿ⒸⓓⓉⓝⒼ⦷ ⚖ ⑳⦴③⑦⧁ⓤ㊾㉕㉔⦺ⓩⓚ⦽ⓠⓏⒻ⦿ⒹⓍ⑥㊲ⓐ⦱Ⓥⓡ⦻⑨⑫ⓣ㉚㉟⦳Ⓔⓨ⦹⦾⦲ ➔ >:-⦺ =:-ⓖ <:-⦷ \n", - " <:ⓒ⦼⦿④⑦⑤ⓓ⦸ⓧⓐ㊸Ⓚⓛⓡ⑩㉝Ⓥ⦳㉞⑮⦴Ⓞ㉚⑯⑪Ⓗ ⚖ ⦾ⓑ⑨㉛ⓩ㊶ⓃⓈⓝ㊽③㉒ⓔⓦⓨ⑳㊷㊼㉑㉓⑱㉗㊵Ⓓⓢ⑰ ➔ \n", - " >:Ⓩ㊴Ⓝ⑭㉒ⓢ㉞Ⓔ㊶ⒷⓊ⑥㉓ⓚ⑦Ⓥ⑤㊲ ⚖ ⑮⑫㊱ⓤⓔⓅⓒ⑰ⓧ⑬⦾ⓛ⑧㊺ⓐ㉚㉑⦸ ➔ >:-⦾ =:+⑪ <:+⑮ \n", - " =:ⓤⓏⓨ㊾Ⓖⓦ㉓Ⓠ⦽Ⓓ㊽ⓖ㉑㊼⦲⦱⦴ⓠⓍⓅ⑧Ⓞ㉗Ⓛⓐ㉘㊵⑮ⓚ ⚖ ⧁⑩㊴Ⓑ⦼㉔⑫㊲⦺ⓣⒶ⦵ⓞ⑭⦶㉜㉚ⓑ①⧀ⓇⓒⓎⓔⓓ⦿㉞Ⓗ⦷ ➔ >:-⧁ =:+㉙ <:+㉔ \n", - " <:ⒻⓤⓐⓇⓣ①⑩ⓞ⦸ⒺⓢⓎ⑬ⓑ㉛㉒㊳⑳ⓕⓠ②㊶ⓄⒿ⑱⦽ⓁⓋⓟ⦵⧀⦱ⓂⓖⓥⒽ㊺⦲Ⓘⓛ ⚖ ㉑㉘㉗ⓧⓘ㊽㊿⦷⑦㊼ⓌⒼ㊻㉞⦿⑮⦹ⓜ㉝ⓒ㊱⦳⦻⑥ⓝⓗ㊷⑪Ⓝ㊹㉖Ⓤ㊾⦴⑭Ⓒ㊲ⓩ⦺⑤ ➔ >:-ⓧ =:-ⓡ <:-ⓛ \n", - " <:ⓋⓅ㊲Ⓑ㊱⦾㉙ⓐ㊸㊴Ⓝ⦷⑨Ⓤ㉓⑰⦴Ⓧ㊳③㉚㉒ⓓ㊿⦹⑦ⓩ⦿㉗ⓨ①㊼ⓚ⦻ⓈⓜⓆⒺ㊻Ⓘ⑧ ⚖ ㊺ⓥ⑯㉖④②⧁⧀⦰⑫⑩Ⓜ⦺㉞ⓖⓠ⦳⦵㊹㉟Ⓞⓣⓒ⑲ⓛ㉜ⓘⓢ㉘ⓔ⦸㉝㊷⦽㊽ⓝⓉⒼ⑬Ⓚⓗ ➔ \n", - " >:①⦹㊼⦻㊶Ⓝ⑨⑲Ⓦ㉝ⒽⓅ⑫ⓔⓝⓓⓛ⦴Ⓨ㉔⦷Ⓡ⦸Ⓛⓙ⦵⦼㊵⦳⑩⑰㉗ ⚖ ㊸③㊽⦱⑮㊱⦰㉘⑪ⓥ⑦Ⓑⓩ⦺⧀ⓣ㊻ⓟⓀⓍⓠⓈⓜⓒ㊳㉙ⓉⓋⓏ㉑Ⓠⓐ ➔ \n", - " >:ⓜ⑨⦱Ⓑ⑤ⓥⒹⓐ㉚Ⓘ㉝①ⓚⓂⓆⒽⓗ㊷㊿ⓠ ⚖ ⓣ㊶㊳㊹ⓄⓀⓅ㊲⑬㉖㉑㉒ⓑⒿ⦿Ⓡ⦵㉙ⓟ⑭ ➔ >:-ⓣ =:+㉗ <:-ⓠ \n", - " =:㉘⦾⑪⑬⑥⑧ⓟ⦼Ⓥ②⑤⑨③⦶㊽Ⓐ ⚖ ㉓Ⓦ⦰Ⓒ㊹⑭ⓃⓘⓀⓈⒻⓦ㉙㊵⦴ⓕ ➔ >:+⑧ =:-ⓗ <:+㉓ \n", - " <:②ⓣ④Ⓔ⦼Ⓑⓙ㉓㉗Ⓣⓡ㉖⑬Ⓢⓟ㊱⦵⑮⦿⑯⑲㉙㊳ⓒⓎⓌ⑧㊾ⓩ㉕⑰⧁ⓧ⧀㊵⦾Ⓙⓤⓖ⦶⦱⦸Ⓚ⑩ⓑⓨ⦽ⓕ㉚⑤㉝㊴⑦ ⚖ ㊲㉟ⓅⓁⒶ㊽⦺㉞Ⓓ㉔㊿㉑⑫⑱Ⓤ㊶㊹ⒾⓃⓚ③㉜Ⓥ㉘ⓘⓗⓠ㊷㊻⑪㉒⑥⦴㊼Ⓞ⦰⦻ⓛⓔⓢⒼⒸ㊺⦳Ⓡⓞ⑳ⓜⓐ⑭⑨Ⓧⓓ ➔ >:+⑦ =:-ⓝ <:-⦸ \n", - " =:Ⓗ⧀⦸ⓖⓩ㉑㊾ⓅⓍⒸ①⦽Ⓠⓒ⑧Ⓖ②⑰Ⓨ⦶ⓟⓇⓈ㉒㊻Ⓞⓑ⑥ ⚖ ⓧ㊴ⓊⓂ㊷⑬Ⓔ⦷⦺⑤ⓚⓤⓓ⑳㉟㉖④⦰㊽ⓦⓕ㊸Ⓐ㉔㊲ⓔⓗ⦾ ➔ \n", - " >:Ⓦ㉟ⓑ㉙⑲ⓒⓅ㉓ⓥⓉ⦱ⓩⓆ㉕ⓛ㊷ⓝⓤⓎ⑭⦶Ⓜ⑮ⓦ⑦Ⓑ⦲㉒ⓔ⑱⧀ⓙ㉑ ⚖ ⓞⓏⓓ⑧ⓡⓗ㉗⦼㊶⑩⑫㊴㉖㊺Ⓖⓐ㊵⑪㊻⦿⦾Ⓛ③⑳㉞④㊲⧁ⓋⒹⒿ㊿Ⓚ ➔ >:+㉑ =:+⑥ <:-ⓦ \n", - " =:ⓣ⦱Ⓡ㉔⦹㊻⑦ⓚ㉛ⓖⓔ④Ⓛ㊱㊾⑮②ⓠ⦲ ⚖ Ⓝ⑬ⓡ㊳㉗ⓞⓐ㉘Ⓕ⦼ⓥⒾⓛⓎ⦿㉝⧁⑰ⓙ ➔ >:-ⓙ =:+㉕ <:-⦲ \n", - " <:⑥ⓛ⦲Ⓖ⑬⑧ⓖⓡⓧⓠ⑩⑫Ⓩ⦾ⓐⓞ⑮ⓨ㉙ⓙ⑨⑪ⒹⓌ②Ⓛ⦽ⓩ⧁Ⓙ④ⓥ⑰⦿ ⚖ ⦶ⓒⒻ⦻Ⓡ⑭㊽Ⓚ㉗㉝㉛㉚ⓑⓈⓆ⦹㊴㉖⦵Ⓒ㉟㉕ⓣⓅ㉓ⓚⒺ㊾①㊳⑳⦷ⓔⓗ ➔ >:-⦶ =:+⑤ <:+⑳ \n", - " <:㉙ⓟ㉖ⓡⓇⓊⓚ⦾⦺ⓨ㉞⦷㊼Ⓩ㊳⑮㉚㊸Ⓦⓢ㊲ⓍⒹⓦ㊻ⓩⓅ⑭⦳㉝⦻ⓤⓓⓁⓎ㊷③Ⓜ㊹㉔㊽㊱㊿⦲ⓝ⦽⦶ ⚖ ⑲Ⓢ⑨㊴ⓥⒾⒸⓘ㉗ⓑ⧀㉟ⓜⓗ㉛⧁ⒶⒽⒷⓄ㊶ⓐ㉒⑧㊺ⓕ㊵⦸㉘⑤ⓒ⦴ⓃⓋ㉜Ⓠ⦿ⓣ㊾ⓖⓧ⑰①㉓⦱②⑦ ➔ \n", - " >:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭ ⚖ ⦴⦵⦶⦷⦸⦹⦺⦻⦼⦽⦾⦿⧀⧁ ➔ >:-⦴ =:+㉖ <:() \n", - " =:Ⓖ㊹⑫⦻㊵⑳ⓤ⦸㉑㉖Ⓡ⦵⦿Ⓗ⦶ⓍⓄⓦ⑯ ⚖ ⓐ⑮㉚Ⓟ㊳㉔㊽⑭ⓙⓔ㉓㊴ⓛ⑬ⓧⒹⒾ⦱⑩ ➔ >:+⑯ =:-⦹ <:+⑬ \n", - " <:⦶ⓕ㊸Ⓟ⦾Ⓛ㉒⦰⑫ⓦⒸⓘ⑳ⓥ㉑Ⓩ③⦽ⓤⓄ⑤⑥⦿ⓚ㊱Ⓙ⑰㊶⦳⑱㊵Ⓗ㉚ⓣ㉜㊲Ⓣ⦹Ⓤ⦴Ⓜ ⚖ ⓨ⦲㊴ⓖ㉞ⓓⓜⓎ⦷⧁㊽Ⓡ①⦸㉘㉔⑭㊷ⓑⓈⓙⓗ⦱④ⓩ㊼Ⓥ㉟㉛Ⓕ⑮Ⓘ②Ⓚ⑦ⓧ⑬ⓟⓝ㉝⑪ ➔ >:-ⓨ =:+⑲ <:+㉟ \n", - " =:①ⓆⓂ⦵ⓨ㉜ⓙⓔ㉙Ⓖ㉓㉖⦰ⓩ㉞⦹㊹㉛ⓈⒾⓚ⑧Ⓛ⦻⑨ⓧ㊴⦴ⓛⓖⓒⓎ㊳⑭⑬⑦㊿㊱②⧀ⓞ ⚖ Ⓧ㊽④⑱ⓑ⑲⦾Ⓣ㊺Ⓑ⑪⦲③⑳Ⓦ㊻⦶㉒⦳Ⓚ⧁Ⓗ⦼㉟㉚Ⓓ㊶ⓢⓐ㉑㉗ⓘⓕⒺⒶ㉔⦽ⓝⓓ㉝Ⓝ ➔ \n", - " >:㉙Ⓧ㉒⧁㊴⑭⑧ⓚ㊲ⓅⓃⓆ㉑⑬⦼⑦Ⓦ⦵㊺Ⓑ⑰㊳ⓢⒿⓀ㉘⑮㉗Ⓖ㊿⑨ ⚖ ⒺⒽ㉜㊵ⓎⓂ⑪㊽ⓠⓕⓥ⑩⧀ⓑⓩ⦿ⓣ⑯②⦱Ⓐⓓ⦸㉞④Ⓛ⑥Ⓡ㉔ⓡ㉓ ➔ \n", - " >:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿ⒶⒷⒸⒹ ⚖ ⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⦰⦱⦲⦳⦴⦵⦶⦷⦸⦹⦺⦻⦼⦽⦾⦿⧀⧁ ➔ \n", - " >:㊿ⓇⓂ⦼㉕㉓ⓔ⑪⦽⧀①Ⓖ⦶㉔ⓝ㉘ⓚⒽⒻ㊼Ⓓ㊽Ⓛ⑤⦷⑮㉖㉚ⓙⓩ⦹Ⓔ㊴⑱⦲ⓣⓖⓢ㉟㊸⦺⦻Ⓙ㉝㊲㉗㉒ⓑ ⚖ ⦴Ⓟ㊶⑬Ⓢ⑯Ⓘⓨ②㊱⑦ⓏⓍ⑩ⓥⓊ⑥㊷㉜⦾Ⓒⓠ㊳ⓗⓟⓜ⦰ⓒⓎ㊾⦱㉛Ⓣ⑭Ⓞⓤ④Ⓚ⦳Ⓦⓘ㉑ⓛ⑰⧁Ⓥ⦸㊻ ➔ >:+㊿ =:-ⓓ <:-ⓑ \n", - " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿ⒶⒷⒸⒹⒺⒻⒼ ⚖ ⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⦰⦱⦲⦳⦴⦵⦶⦷⦸⦹⦺⦻⦼⦽⦾⦿⧀⧁ ➔ >:+Ⓖ =:-Ⓗ <:-Ⓔ \n", - " <:⑩㉑ⓦ㉛㊱⑯㉔⦴㊷⑬㊼Ⓩ㊽ⒹⓈ⧁⦿③⧀ⓥ㉞⑤Ⓤ⦸㊸㉓㊻⦷㊵⦻ ⚖ Ⓐⓟ⑨㊶㉟ⓞⓝⓌ⑧ⓜ⑳ⓡⓖⒼ㉕㉜ⓧ⑲⦵ⓛⓋⒽ㊳⑫⑱Ⓡⓒⓗ㉚㉗ ➔ >:-Ⓐ =:+Ⓠ <:-㊽ \n", - " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿Ⓐ ⚖ ⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⦰⦱⦲⦳⦴⦵⦶⦷⦸⦹⦺⦻⦼⦽⦾⦿⧀⧁ ➔ \n", - " >:ⓑⓩⓈⓋⓧ⦺ⓞⒿⓔ㊺ⓛ㊸⑥Ⓕⓙ⦼⑩㊾⑯㊼ⓐ⑭㊹ ⚖ ⓕ㊴⦱㉝㉔Ⓡ㊲ⒷⓏ⦷⑦⑬ⓝⒾⓊⓎⒹ⑮ⓃⓁ⑧㉕① ➔ >:+㊹ =:-Ⓣ <:-ⓐ \n", - " =:⦲Ⓔ⦶㊲ⓗ㊿ⓘ㊱②ⓒⓧ㉞ⒼⒸ㊼④㊸⦰Ⓤ⦸ⓔ⦹Ⓟⓕ㊷Ⓣ⦼Ⓠ㉖Ⓛ㉟ⓦⒿ⧁ ⚖ Ⓓⓢ⑳㉔⦵⦱Ⓢ㊴⑥Ⓞ㉑⦿㉚⑯㉘⑤ⓤ㊻⑰㉙Ⓐ①⦴⦷Ⓚ㉗ⓑ㊾Ⓑ⦽㉓Ⓩ㉛ⓛ ➔ >:-Ⓓ =:+Ⓘ <:+Ⓢ \n", - " <:ⓘⒷⓙ㉙㊻㉛②⑨ⓗⓓ ⚖ ㊶Ⓕ⦻⑲㊴Ⓓ⦹ⓔⒽ⑧ ➔ >:-㊶ =:+ⓒ <:-㊻ \n", - " <:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿ⒶⒷⒸⒹⒺⒻⒼ ⚖ ⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⦰⦱⦲⦳⦴⦵⦶⦷⦸⦹⦺⦻⦼⦽⦾⦿⧀⧁ ➔ \n", - " >:⦿㉝㉑ⓆⓠⓉⓓ⑩⦰ⓗⒿ㉛⑤ⓅⒻⓄⒹ㊼㊶⑨⑳⧁ⓐ㉜Ⓒ⦸④⦹⦻㉟⦾㉓Ⓝ ⚖ Ⓩ㉖Ⓐ㊲ⓥ⑰⑯㉗Ⓧ⦷ⓡ㊿⑱Ⓥ③ⓟⓊⓁ⦲ⒺⓒⓈ㊱⑬①ⓦ⦴ⓧ㉒ⓜⓀ⑧㊾ ➔ >:-Ⓧ =:-Ⓦ <:-Ⓝ \n", - " =:㉓㉔ⓝⓊⒻⓚ③ⓔ㉒㊳Ⓡⓙⓥ⦰㉗ ⚖ ⓁⒼⓣ㉑Ⓨ⦼㉖㊶ⓤⒺ㉚⑭⦸ⓀⒽ ➔ >:-Ⓚ =:+Ⓜ <:+Ⓛ \n", - " <:Ⓜ⑰ⓄⒽⓁ⑩⑧ⓛⓅ⦼㉕Ⓩ⧀㉝Ⓙ⑨ⓦ②④ⓔⓎⓊⓠ㊳ⓨ㊺ ⚖ Ⓘ㊿㊶Ⓝ⧁ⓧ⑤⑥Ⓚ㉞ⓝ⑯Ⓕ㉘㊻ⓐ⦱ⓌⒹⓋⓘ⦰⦷ⓡ⑲Ⓡ ➔ >:+Ⓨ =:-Ⓑ <:-㊺ \n", - " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿ⒶⒷⒸ ⚖ ⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⦰⦱⦲⦳⦴⦵⦶⦷⦸⦹⦺⦻⦼⦽⦾⦿⧀⧁ ➔ \n", - " >:⑰ⓞⓛⓀ⑨⦰Ⓗ⑫⦾㉙ⓖ⦳Ⓑ㉗Ⓨ⑳Ⓜ㉘⦹ⓉⓄ⑤ⓘⓁⓠ㊾Ⓒ①⑬Ⓓⓣⓩ⦷Ⓤ㉜Ⓔ⑩ⓙ㊵⑪⦺ⓧ⦽⦿⦶⑭⦻㊿ ⚖ ㊷㊳Ⓝ㊺ⓡ⦴ⓚⒻⓈⓓ⑦⧀Ⓐ㉔ⓗⓍ⑮㉚⦵ⓐⓝⒿⓌ㊽ⓤⒾⓦ㉖ⓜ㉑㊹㉞ⓑ③⑱㊼⑲④ⓕ㉛ⓢ⦱⑧㉒⑯⧁⑥Ⓩ ➔ \n", - " >:ⓍⒿⓧⓔ⦵㊼ⓉⓐⒶ⦰㉔Ⓨ⦻⦶ⓝ㊸㉛ⓚ⦷⑪Ⓤ⦾㉕ⓖ㉙㉜Ⓜ⦿ⓣⓢ㉑㉘ⓓ㊲Ⓦ⑤ⓤ ⚖ ⓏⓅ⑨㉞㊴ⓡ㉓⑳⑭㊷⧁ⓦ㊾⦳⑩㊻⑧ⓛ㊳⑰⦹⦴Ⓓ⦱ⓨⓆ㊹ⒽⓇ㊿⑦⦽①㊱ⒻⓀ㉝ ➔ >:-Ⓩ =:+Ⓒ <:+㊾ \n", - " =:Ⓓⓖⓥ⦱㉒ⓤⓀ㉛㊻ⓎⓌ㊺㉞⑥⦻ⓡ⑮ⓜ⑫⑪Ⓒ㉜Ⓘⓑ㊶㊱⦿⑭⑤ⓍⓗⓈ④ⓐⒺ㊷ⓓ㊼⦾⑯ⓔ⑬⦳ⓠⒼ ⚖ ㊸⑧ⓁⓉⓘ⦹㉗⑰⑲⦰ⓩⓅ⑨Ⓜ⦶ⓄⒿⓟⒶ㊹⦵ⓕ㉓ⓨⓃ㊴ⓞⓇⓏ⦲㉕⑱㉑⦽ⓢⒻⒽⓛ㉔⑩ⓝ①③㉝㉚ ➔ >:-Ⓡ =:-Ⓥ <:+㊸ \n", - " <:㊷ⓒ⑰ⓄⓂ㉑Ⓤ ⚖ ⓝ⑥Ⓘ㊳㉒㊺㉜ ➔ >:+㊷ =:+㊼ <:-Ⓤ \n", - " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿ⒶⒷⒸⒹⒺⒻ ⚖ ⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⦰⦱⦲⦳⦴⦵⦶⦷⦸⦹⦺⦻⦼⦽⦾⦿⧀⧁ ➔ \n", - " >:ⓆⓍ④⑥ⓝⓖ㊴ⓠ⦶㉒ⓌⓇⒸⓜ㉞Ⓓ㉝㊵㉓ⓡⓒ㊷Ⓩ㉘Ⓔ⦷Ⓨ⧁⑰⦽㉚⑭ⓅⓟⒿ㊻⦼②⑳Ⓝⓣ㊽Ⓕ ⚖ ⓢ⦺㊼㉟Ⓛⓩ①Ⓚⓦ㉙㊶③⑲⦴ⓚⓛⒾ㊳⑤⦲ⓗⓐ⑮⑯ⓘ㉔㉛Ⓑ⦰㉑⦸⑦Ⓥ㊹Ⓤ㊱Ⓢ㊸⦾⑬㊾㊿⦱ ➔ >:+Ⓕ =:-Ⓞ <:-Ⓟ \n", - " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿ ⚖ ⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⦰⦱⦲⦳⦴⦵⦶⦷⦸⦹⦺⦻⦼⦽⦾⦿⧀⧁ ➔ >:+Ⓙ =:0 <:-Ⓙ \n", - " <:⦽Ⓦⓒ⑧㉝㊿Ⓟ⑤⑫ⒿⓁ⦸Ⓕ ⚖ ⓟ㉟㉞Ⓗ⦴㊷⑬⦱⧀ⓡ⑪ⓢⓉ ➔ >:+Ⓟ =:+Ⓞ <:-Ⓕ \n", - " <:⑤㊶ⓚ㊲Ⓙ㉒㉛⦶Ⓠ㊵⑯⑦⦹①Ⓓ㊿Ⓣ⑰⑬ⓔⓥ㉜㊱④㉞ⓒⓑⓏⓨⓠⓜⓘ⦳ⓝ㊾㉝Ⓚ⦰ⓞⓂⓄ⦽㉗ⓖⓇ ⚖ ⑫Ⓔ⑳Ⓛ㉑⦼Ⓖ②㊹ⓡⒽ⧁ⓣⓊⒻ⑨㉓⦲⦸⦱ⓧ⑭㊷Ⓧ⦻㉘ⒾⓌⓙ㊴⦺Ⓥ⦴⑲⑮㉖㊻㉔㊽Ⓟⓓⓕ㊺ⓢⓎ ➔ \n", - " >:⑪Ⓚⓔ⦱ⒶⓉⓈ㊾㊿⑭④ⓙ⑰㊻㉔⦻Ⓥⓐ㉞ⓑⒽⒾⓌ㊹⦲ⓨⓇⓅⓎ㊷ ⚖ ⓓⓢ⦿㉕ⓘ⑩㉙㊶㉑ⓞ⑯㉝Ⓜ⦴ⓩ㉜㊵①⦶㊳ⓦⓖⓡⓗⓥⓤ⑳Ⓛ㊸Ⓧ ➔ >:+Ⓡ =:+Ⓩ <:-㊷ \n", - " =:ⓇⓈ⑦Ⓚ㉟⑳⑮⑬⦶㊹Ⓩ⦼ⓖⓊ⦳ⓠ㊳ⓝⒸ⑨⑫Ⓞⓜ⦽⦷ ⚖ ㊼ⓛ㉝⦲⑪ⓤ⧀⑭ⓔⓙ①⑥Ⓝ⑰㊻㊶ⓦⓩⒶ㉚⦸ⓍⓂ㉕Ⓛ ➔ >:-㊼ =:-㊸ <:-Ⓒ \n", - " <:Ⓕ⦼⦲⑪Ⓒ㊸ⓜⓝⓁⓡ㊺ⓧⓦⒼⓍⓈⓞⓓ㊽⧀㉝㉘㊲㉙ⓃⓋ ⚖ ⦱㊴㊳ⓗ㉓ⓊⒹⓐ㉒Ⓡ⑳Ⓑ㉑Ⓘ⑨⦷ⓕⓆ⑤ⓉⓔⓅ④㉗⑦⦺ ➔ >:+Ⓥ =:-㊾ <:+Ⓤ \n", - " <:⑭ⓀⓃⒸ㊾㉝⦺Ⓢ⦾⦵㊱⦳ⓟⓐ⑧ⓩⒹ⦸ⓄⓎⒿ⑯㉖Ⓗ㉟Ⓡ⦱㊼⦰ⓦ㉘㊳Ⓦ㊵㊹Ⓥ⑲㉛Ⓘ⦷ ⚖ ⓒ⦻㉜Ⓩ㉑ⓧⓊ㊺⑫⦿ⓝ⑤ⓣⓡ⦶㉚⑰ⓍⓅ㊷⑪⧁ⓢ⦲ⓕ⦹⦼ⓜ㉙ⓁⒷⓚ㊶③Ⓐ⦽Ⓜⓤⓖⓗ ➔ \n", - " >:㊸ⓄⓥⓋ⦲ⓠⒷ㉚㊻㉓㊼㉝Ⓤ⦷③⑫⑲Ⓢⓕ⦵Ⓘ②⑥⑤ⓖ⧁ⓛ㊱ⓤ⦺㉛⑪㊿㉔㊽Ⓔ ⚖ ⓐ⦼㊺⑱㊷㊲ⓓ㉗ⓒ㉒ⓝⓉ㊵⑮ⓚ⦹⦻㊶ⓡⒶⓗⓀⓁ⦿⑩ⓜⒽ⑯⦴㉑Ⓟⓧ㉘㊴㉞Ⓜ ➔ \n", - " >:⑱Ⓙ㉒ⓟⓑⓖ⑤ⓙ㊴⧀⦼ⓛⓉ②ⓗⓩⒶⒾⒻ㉙⑮⦵㊸㊲ⓋⓁⓐ㉘Ⓟ㉟㊹㊼ⓢ㊻⑰㉝ ⚖ ⓒⓤ⑦⦶⑯④㉜ⓨ⑪⦽ⓘ㉖㊵㊽㉑⑫㉔⑥⦱⑬㊺⦸ⓧ㉞⦷Ⓑ③ⓈⒹ⦰Ⓩ㊱ⓆⓇ⑨ⓠ ➔ >:-ⓒ =:-Ⓜ <:-Ⓛ \n", - " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿ⒶⒷⒸⒹ ⚖ ⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⦰⦱⦲⦳⦴⦵⦶⦷⦸⦹⦺⦻⦼⦽⦾⦿⧀⧁ ➔ >:+Ⓓ =:+Ⓝ <:+Ⓦ \n", - " <:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿ⒶⒷⒸⒹⒺⒻⒼⒽ ⚖ ⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⦰⦱⦲⦳⦴⦵⦶⦷⦸⦹⦺⦻⦼⦽⦾⦿⧀⧁ ➔ >:+Ⓗ =:+Ⓚ <:+ⓐ \n", - " =:⦳㊳Ⓤ⦷⑱Ⓦⓨⓡ㉔ⓙ⑩㊴⑥⦸㊸㉖ⓣ⑤⦹ⓕ⦼㊾Ⓣ㉚Ⓝ㊺⑬⧀⦽Ⓩ㊵ⒽⒹ⦲Ⓒⓚ㊻ ⚖ ⓦⒺⓋ⑲㊶㊽⑦⧁ⒿⒼ⑭㉒ⓔ⦱ⓠⓘⓓⓢ③②⦺㊹㊱⦻⦾⦴Ⓜⓒ㉜Ⓧ⑪ⓧ⑮Ⓢ⦶Ⓕⓤ ➔ \n", - " >:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿Ⓐ ⚖ ⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⦰⦱⦲⦳⦴⦵⦶⦷⦸⦹⦺⦻⦼⦽⦾⦿⧀⧁ ➔ >:+㊻ =:-Ⓖ <:+Ⓣ \n", - " =:②㉘Ⓙ㊴㉕⑲⦲ⓖ㉖⦱⦷ⓆⓇⓘ⑩Ⓧ㊽ⓠ⧁ ⚖ ㊿⧀ⓗ⦽㉜ⓙⒽ㊳ⓕ㊼⑫Ⓕ⦵ⓤ⦹㊷Ⓣ㊸ⓔ ➔ >:-㊿ =:+ⓑ <:-Ⓠ \n", - " <:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽ ⚖ ⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⦰⦱⦲⦳⦴⦵⦶⦷⦸⦹⦺⦻⦼⦽⦾⦿⧀⧁ ➔ >:+㊽ =:+Ⓔ <:+ⓓ \n", - " <:⑪⦺㉜Ⓕ⦲ⓗⓂ⑨⑩⦽㊶ⓖ⧁ⓥ⑮⑫ⒿⒼ㉗ⓌⓇⓛⓧⓚ⧀Ⓒⓒ⦼Ⓞ㉔ ⚖ Ⓧ⦰Ⓥ①㉙⑭Ⓠ㊻㉝Ⓢ㉟㉓Ⓣ③⑧ⓑⓊ㊳⦾Ⓐ⑥Ⓘ⑱Ⓑ㉑⑤⦻⦴⑯㉒ ➔ \n", - " >:Ⓔⓙ⦱⦺⑮⦴Ⓢ㉔Ⓚ㉚Ⓜ⦳⦿ⓎⓣⒷ⦹ⓩ④ⓥ㉟㉝ⓢ ⚖ Ⓘ⑦Ⓕ⑲ⓨⓆ㊿㉑⑧⦽㊳ⓝ⑥ⓘ㉛㉗⑩ⓗ②⦲ⓛ㊺⑨ ➔ >:-Ⓘ =:+㊶ <:-Ⓢ \n", - " =:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺ ⚖ Ⓩⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⦰⦱⦲⦳⦴⦵⦶⦷⦸⦹⦺⦻⦼⦽⦾⦿⧀⧁ ➔ >:+㊺ =:-Ⓨ <:-㊹ \n", - " <:①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿Ⓐ ⚖ ⓉⓊⓋⓌⓍⓎⓏⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ⦰⦱⦲⦳⦴⦵⦶⦷⦸⦹⦺⦻⦼⦽⦾⦿⧀⧁ ➔ >:+Ⓐ =:+Ⓑ <:+Ⓧ \n", - " <:㊷⑮⦿⦻ⓌⓆ②③㊱⧁ⓚⓦ㊾⦽⦵㊹Ⓕ⑧Ⓟ㉜ⓠⓟ㉟㉕Ⓓ⦴Ⓚ㉗㊵Ⓩⓗ㉒Ⓝ⑱ⓉⒼⓧⓕ ⚖ Ⓥ⑳⦺㉘⑯Ⓐ⑬㊳⦹㉞㊿㊲ⓤ⦷㉑ⓩ⦰Ⓤ㊴ⓑ⑥ⓛ㉝⦳ⓘⓍ⑤⦸⑫ⓐⒸⒺ㉔㊺⦲ⓖⓞ⦱ ➔ \n", - " >:⦷ⓟⓢ㉖⦰⑳ⓛ㉛ⓜ⦸⑲⦱㉕ⓤⓠⒾ⦹Ⓢ㊷㊶ⓆⓄⓙⓩ⑰ⓑ㊿㊾ⓣ㊴⑪ⓖⒹ㊹ⓐ㊻ⓘⓎⓀⓥⓉ⦶ⓔⓍ㉒Ⓐⓡ②㊳⑩ⓧ ⚖ ⑬㉚ⓊⒸ④㉗⧁⦼Ⓟ⦾⦿Ⓥ⑥⑮①ⒻⒿⓞ⑱⑭Ⓛ㉝⧀㉓⦳㊲⦲㊺ⓚⓏⒼ⦴⑨ⓓ㊵ⓨⒺ㊽ⒽⓕⓦⓌⓃⒷ㊼ⓒ③⑯⑧㉜⑤ ➔ \n", - " >:ⓕ㊽㉗㊿Ⓡ㉞Ⓗ㊼ⓜ㉑ⒷⓋ⑮㉖㊻⑫⑩⑧⦻ⓏⓁ⑦Ⓢ⦼㉛Ⓞ⑥㊷ⓥ⑰ⓚ⦷⧀㉘ⓟ⑬ ⚖ Ⓝⓝ㉟㊲㊺㊴Ⓚ⦾⦵⑯③⦸⦲ⓅⓛⒸ㊵ⓑ㉕ⓒⒼ㊾Ⓓⓧ⦿⑳㉚⑪ⓊⓂ④ⓙⓣ㊶ⓩ⦰ ➔ \n", - " >:Ⓦ㉒⑫㉓⦳㉔⑧Ⓧ②⑨⑤ⓠ㉕㉝⑭⦱Ⓝ⑥ⓗ⑮Ⓘ⦻Ⓒ③⦴⑬ⓤ㊷㊸Ⓣ㊼⦷Ⓖⓘ⦲ⓧ ⚖ ⑯㊿ⒺⓙⓊ⦸ⓄⒹ⦽ⓡ㉘Ⓚ⑪⦼㊱㉟⦶㉗Ⓟ㉞ⒶⓋ⦾ⓖ⑦⑱Ⓕⓝⓨ⦰⑳㊾①ⓜⓟ㊴ ➔ >:-⑯ =:-㊲ <:+ⓟ \n", - " =:Ⓖ⦱⑱ⓂⓉ⦰㉖Ⓢ⑥㊼Ⓔ⑮㉕⦺⦶ⓕ㊹ⓃⒿⓧⒷ㊻⑤ ⚖ Ⓐ⑯ⓒ⦳⑩ⓨ㉝ⓞ㊵㉙ⓣ㊳㉞ⓤ㊸㊴㉜ⒻⓘⒸ㊲⧀㊺ ➔ >:-㉝ =:+ⓠ <:-⑤ \n", - " <:Ⓞ㊽Ⓟ⦹⑭①ⒷⓌⒼⓀ㉘㊵㊺④⦸Ⓛⓟ⦼⑨ⓘⓂ㊲㊼ⓠ㊶㉛ⓩⓇ㊴㉟ⓚⓞ⑦⑳㉝Ⓩ⑧ⓣ⦽Ⓓⓡ㊾㊻⦺ⓨ㊸㉚ⓝⓗ③Ⓒ ⚖ ⓧ⧀Ⓔ⑤Ⓗ⧁ⓤ⦰Ⓕ㉔ⓢ㉖⦲ⓙⓃ㉜㉑⦵⑲ⓦⓐ⑫Ⓠ㊿Ⓤⓛ⦱⦳⑪⑬㉓Ⓧⓓ㉒ⓑ㊱⑮㉙Ⓘ㉗ⓒⒶ⑯ⓜ㊷⑩⦾㊹⑱㊳Ⓥ ➔ >:-⑬ =:-⑥ <:+ⓧ \n", - " =:⦹㊺⑮⑰ⒷⓏⓌ⑤⦾⑨ⓞⓘ⑱㊷ⓩ㉗Ⓡ㊻⑳㉟ⓢⓉⒶ⧁ⓥ⑭ⓨⓍ⦻⑧Ⓓ⑯⑥⦱⑲㊾ⓟ⑫㉔ ⚖ ⦽㊴㉜㊿㊼Ⓖ⦳ⓔⒺ㉖ⓣⓀ㉚ⓝ㊹㊽Ⓛ㉕⑩㉞ⓓ⦰⑬ⓙⓠ①Ⓝ⑪⦷⦲Ⓥ㉑Ⓘ⦺㊳Ⓠ㊶㉛ⓑ ➔ \n", - " >:㉗Ⓧ①ⒾⓆ㉛⦲ⓄⓃ⧁Ⓗ㉘ⓘⓋⓉ㉔Ⓢ㊺Ⓩ⑬Ⓑ㊿⦽⦺Ⓟ㊾⑪Ⓡ⑲⦴㊲⑦㊹ⓟ ⚖ ㉞Ⓙⓩ⦳⑤ⓦ⧀㊶③⑳Ⓖ⑮㉜ⓓ㉙⦰⑧ⓑⓡⓠⓝ⦱ⓖⓔ⦻ⓧⓁⓜ④㊼㉝㉒ⓣⒶ ➔ >:-㉞ =:-㉑ <:+⦻ \n", - " =:㉑⑳⑰ⓞⓩ⑯④Ⓜ⑨⑱ⓒⓨ⑦㉓Ⓡ㉒㉝㊳ⓋⓎⓥⓍ⦹㊹ⓝⓈ⑭Ⓙⓗⓓ㊻⦷⧁㉜Ⓟ㉛⑧Ⓒ ⚖ ⦵Ⓐⓖ②⦽⑫㉟Ⓔ㊿ⓙ⦾Ⓕ⑥ⓜ⦼⦱⑩Ⓖ㊾Ⓩⓣ㊸㊱⦺⦲㊽⧀㉔Ⓑⓤ⦴Ⓘ③ⓦⓡ㉖①⑤ ➔ >:+ⓗ =:-㉘ <:+⦵ \n", - " <:㊿㊲ⓓⓔⓚⒼⓑⓩ⦷ⒷⓈ⑨㊵ⓇⒹⓨⓤⓠ ⚖ ⑫⦱⑤㉚㊾㉝⦾ⓛⒽ⦽㊱⑭⧁⦵⑱ⓝⓎⓁ ➔ >:-⑫ =:-㉔ <:+⦽ \n", - " <:ⓦ㊹⑳㊴㊳Ⓧ㉞Ⓘ⑭ⓕ㉕⑨⧁ ⚖ ②⦵ⓑⓞⓌ㉙⦳⑱⦸ⓁⒼⓤⓏ ➔ \n", - " >:ⓢ⦾㊼⑤Ⓙ⦸ⓕ⦽⦵ ⚖ ⓦⓤⓈⓐ⦴㉚⑧ⓡⓛ ➔ >:+ⓕ =:+⧁ <:+ⓦ \n", - " =:⦿㊾⧁⑩ⒽⒻ㉚ⓖⒼⒾⓨ⑧Ⓞ㉛⑭⧀Ⓜⓛ⦻ⓜ②ⓩⓥⓐ⦶Ⓩ⑪⦰㊺㊲㉓⦸㊽⦹⑳ⓑⓘ㊿ⓙⓡ ⚖ ⦴ⒹⓌ④⦲㊳㉕⑤ⓗ㊶Ⓔ⦵ⓒ⑯㉞⑲Ⓝ㊴ⓤ㊱㊼㉒③ⓝⓧ㊸Ⓑ⑬ⓅⓋ㊷㉝⑥㉜㉔㊹①⦼Ⓒⓠ ➔ >:+⦿ =:+ⓚ <:+⦴ \n", - " <:㉛ⓇⒿ⦽ⓕ⑧⦸ⓡⓥⓓⒷⒸ②㉑ⓍⓆⒻⓒⓣ㊹ⓛⓠ⑲Ⓞ㊷⑰Ⓖ⑤ⓗ⑬Ⓦ㊺㉘③ⓙⓞ㊴㉖ⓢ㊽ ⚖ ㊳㉔Ⓐⓨⓘ⦶Ⓘ⑭⦳㊾㊸㉙Ⓥ⦷ⓜⓚ㊲Ⓜ㉓㉜ⓖⓊⓃ⧀⦵⦾⑮ⒺⓎ⦹⑫ⓩ㉞⑯ⓟ㉚㊻Ⓩ⑥㉟ ➔ >:-㊳ =:-⑳ <:-㊴ \n", - " =:㊳⑧㊼Ⓗ⦵⦳ⓕ㊲㉖㉟Ⓙⓨ㉑⦻Ⓜ⑮㊹Ⓒ㊷Ⓤ②⦸ⓑ㊱③㉓⑱ⓚⓋ㉜Ⓨⓔ⦹ⓠ⦼㉘㉒㊺⑤⑩㊽ ⚖ ⓝ㊵㉙ⓜ⑰ⓁⓘⓅ㉗⑥Ⓔⓓ⑦⑫ⓩ⑪⦱㉔ⓙ㊸㉚ⓤ⑳⦷ⓣ㉝㊴Ⓚ㉕ⓄⒷⓖⓈ⦺⦾⦶ⒻⓃ㊿⑨⧁ ➔ \n", - " >:⑯⦵Ⓚⓥ⑫ⓟⒺⓑ⑮⑧ⓣ⦷⑦㊷㉝㊴⦴⧀㉗㉛⦰ⓒ㉔Ⓐⓧ㊸Ⓨⓔ⦹⦱㊱㉑ⓢⓚ㊹㊳③ ⚖ ⑨ⓩⒾⒹⓨⒼ㉚⦼ⓂⒿⓡⓓⓦ⦿⦶⑬㉜Ⓤ㉟ⓤ㉞ⓝⓍⓗⓈ㊻⦸⦽⦾㉓㉕ⓕ⦺㊿⦲⦳Ⓡ ➔ \n", - " >:ⓠⓀⒿⒽⓚ⦻Ⓓ㉜ⓝ㉒⦵㊶ⓉⒷⓜ㉙ⓨ⑲ⓩⓕ⦰㉖㉝㊻⑥ⓧⓅⓑⒺ㉞⑯⑪㊽ⒼⓂ④㉛㊵㊸⦸⦼ⓄⓁⓥ⦴ⓒⓌ㉔㉟㉑㊱ⓢ ⚖ ⑨Ⓩ㊺㊼⦹ⓞ⑰⦷ⓟⓐⓤ⦲㊷⦺⦳⦶⑱ⓇⓔⒶⓛⓋ③⦿⑫⑬⦱㊲⑳⑭Ⓠ㊴ⓙⓗⒾ㉓ⓘ②Ⓢ㉗㊹㊾Ⓕ㉕Ⓧ㊳⑤㉘ⓡⓣⓓ⧀ ➔ >:-⑨ =:-㉚ <:+ⓔ \n", - " =:Ⓐ㊹㉗Ⓛ㉔Ⓦ⑪㉘㊳ⓗ⦶㊽ ⚖ ㉙ⒿⓈⓕ㉓㉜Ⓑ㉟ⓢ⦴Ⓟⓟ ➔ >:-㉙ =:-⑰ <:-⑪ \n", - " <:ⒷⓥⒶ⑩ⓐⓞ㊶ⒹⓀ⑦ⓔ④ⓣⓝ⦱㊸⑮㉝③⦻ⓧ㊺ⓘⓑⒻ⦺⑤ⒿⓊ㊷Ⓦ⦼ ⚖ Ⓒⓖ㊳Ⓖ⧀Ⓗ⦿㉙ⓜⓃ⑲ⓂⓟⓓⓏ⦲㊿ⓒⓇⓆ⦶⦹㊴㊲⑬ⓛ㉔ⓢⓋⒺ⧁ⓕ ➔ >:+⦼ =:+ⓨ <:-⑦ \n", - " =:⦿Ⓒ⑫⦲ⓏⒷⓇⒶⓓ⑱⦶①⧁㉖Ⓘ㊹ⓞ㉞⦴㉕ⓙ⦰⑧⑤㊵⦼⑨Ⓝⓠ㊷ⓘ㉝ⒹⓌ ⚖ ⓡⓧ㉑ⓣ㉓⑦ⓜ⦱㉗㊻㉛⑲Ⓤⓥ㉘⦷㉜㊸㉙⑩ⓐⓍⓑ㉔⑭㉒ⓁⓂⓀ⦹㊶⦵ⓒ㊺ ➔ \n", - " >:⑦ⓒ⑳㊼Ⓨ㉙⦹㉛㉘⧀㉗㉝㊺⦶Ⓤ㊻㊲Ⓞ㊴ ⚖ ⑭⦻ⓈⓏ⦳Ⓜ⑫ⓕ㉑⦴②⑩㉔㉒ⓅⓙⓃⓩⓢ ➔ >:-⑭ =:-⑲ <:-㉛ \n", - " =:㊻Ⓕ⑲㉑㊹⑫㉟㉜⑤⑨㊴Ⓢⓘ㊲㉒Ⓚ㉖ⓣ㊳ⓥⒷ⦽Ⓘ㉝Ⓜⓝ⑪⦴Ⓤ⑮⦶ⓕ㊷⑯ ⚖ ④②Ⓥ⦷ⓌⒺⓁ㊶⑩ⓉⒽⓟⓄ⑰Ⓟⓞ⑬ⓒⓗ⦸㊱㉙⧀ⓐ⑥⑧㉔ⓠ⑦ⓧⓎⓤⒼ⑭ ➔ >:-④ =:+ⓢ <:+⧀ \n", - " <:⦻ⓅⓀ⧁ⓗⒻⓂⒸⓩⓥⓑⓌ㉔⦸㊲ⓖ⑩⑨⦱Ⓧ⑪⦺ⓤⓣ⑰⑳Ⓓ⦽④ ⚖ ⓡ㉘㉗⧀ⓧ⦲ⓕⓛ㊳⑤㊹ⓜⓚ⑧⦾ⓒⒿ⑱ⓠ㊸㊱⦴㉓ⓆⓄⓝⓋ㉛㊽ ➔ >:+ⓥ =:-① <:+ⓡ \n", - " <:㉜ⓠⒼ㉒㊵⦰⑰ⓙ㉑㊱⑱ⓟⒽ㉟Ⓜ㉚㊹⦴ⓊⒹⓒ⦽⦻⑦㊸Ⓘ⑮④㉖⦿⧀③ⓐⓘⓎ⦺㉝㊼Ⓐⓑ⦵⦼⑨㉛ⓦ⦶ ⚖ ⑬⑤⑲ⓁⓆⓧ㊲⦾⦷⑧㉞㉕ⓕⒿⓚ㊳ⓨⓋⓀⓏ⦲Ⓣ㊽ⓥⓃⓄ㉓㉙ⓣ㉔⦸⑫ⓗⓞⓩⒸ⦹㊺Ⓟ㊷ⓡ㊴㉘ⓢ⦳㊿ ➔ \n", - " >:㊷③㉑Ⓑ㉜㉛ⓝ⑥⦼㊿ⓔⓤ㊹⦸①⑰ⓣ㉖⑮⑪ⓡ⑱⑩㊲Ⓧⓩ㊸ⓑ⦽ⒸⓌ ⚖ ㉓⦺㊽ⓢ⑯㉕⧁㊳ⓊⓕⓇ⦿Ⓖ㊼ⓗⓒⓋ㉟ⓧⒾ⑧⦱⑫ⓙ㉗㉘⦴ⓖ㉚④㊵ ➔ >:-㉓ =:+⦶ <:+ⓙ \n", - " =:㊸㉟Ⓙ㊽㉓⑪⑮ⓨⓀⓛ㉕ⓦⓞⓗ㊾ⓜ⧁㉛Ⓤⓚ⑧㊱Ⓛ⧀ⓔ⑫ⓩ㊴㉚⑭⦿⦷ⓢ②Ⓕ⦺㉙Ⓐ⦹㉝⑯㊳㊿ⓥ㉖⑨Ⓢ㊷ⓧⓠ⑩ ⚖ ⦱ⓙ⑤①⑦ⓖ㊻Ⓡⓕⓐ⑲⑰㉞⦾⦲ⓍⓄ㉗ⓑ⑱ⓟ⦴Ⓜⓒ㊵⦰⦳⦻⦽ⓤ③ⓣ㊹㊲Ⓝ⑳ⓌⓏⒾ⦵ⒽⒷ⑥⦸Ⓟ㉜Ⓒ㊶④⦶ⓡ ➔ >:+ⓜ =:+ⓝ <:-⑩ \n", - " <:㉛⦵㉘㉞Ⓔ⧀Ⓒ㊾Ⓨ④㊹ⓋⓉⓣ㉕㊸ⓘⓁ⦴⦹⦳⑰Ⓟ⑧㊷㊵ⓇⓤⓠⓗⓈⓓ㊻Ⓦⓙⓚ⦷㉝㉗㊶Ⓙ⑫ⓔ㉔⑩ⓧ⧁㊳ ⚖ ⦾㉑②㉓ⓑ⑳⑭ⓡⓀⓄⓨⒶⓕ㉒⑨ⓩ⦿ⓢ㊿Ⓖ⑬⑮㊱⦽Ⓤ㊼㊴Ⓘ⦶⑯⑱⑲ⓞⓐ⦼Ⓧ⑦Ⓝ⦻Ⓑ⑤Ⓕ⑪⑥㉙ⓛ㊲㉜ ➔ >:+ⓣ =:-㉖ <:+⦾ \n", - " <:ⓧⓓ㊷⑳⦺⑲⦳㉛Ⓢⓐⓟ㊲⑯ⓝⓤ⦶⦴㉚⑮Ⓒ㉜ⒹⓅ⑰㊹③㊴⦰㊳ⒷⓆⓥⓠ㉞㉔⑪⦻㉒ ⚖ ㉟ⓑ⦹Ⓞ㉝ⓩ⑬㊸㊵Ⓩ①⦱Ⓡ⦼Ⓖ㉖②ⓣ⦿㊽㊾㉕Ⓥⓒ㉘Ⓔⓡ⧀ⓙⓦⒿ⦷㊼⦸④㉓㊺ⓗ ➔ \n", - " >:ⓝ⦶⦰⦽⑱ⓏⓌ⑨⑰Ⓢ⑤㊺ⓢ⑳Ⓥⓒ⑩④Ⓧ㉘⦼⑲⦲①⦱ⓄⓀ⦳ ⚖ ⓑⓡ⑫⑭Ⓠ㉙㊳ⓥⓂⓜⓞ㉒ⓎⒺⒿⓔ⑮㉝⦵㊾⑥㉟⧁㊹ⓠ⦾ⓤ⦺ ➔ \n", - " >:㊵⦶⧁㊱Ⓑ⑤Ⓓ㊿⦺⑯ⓥⓟⓠ⑪㊳ⓡ㉔⦴ⓓ⑥⦱ⓒ⦸⦾ⓋⓛⒸⓆ⑫㉕㉓④①㉑Ⓐ⦲㉗㉝ⓙ ⚖ ㉟Ⓙ㉙Ⓤⓖ㊺㉚ⓑ⑭⦵ⓦⓀ⦿Ⓞ⑬⑰ⓎⓈ㉜ⓝ㊷⑱ⓜ⑩㊻Ⓣ㊶㉛⦽㊽Ⓕ⧀⦼⦰㊼ⓩⓞ㉞ⓣ ➔ >:-㉟ =:+⦳ <:+⦰ \n", - " =:Ⓒ⦶㊱⑪⦺㉘㉜Ⓙ④Ⓔ⧁ⓘ㊿㉝⑭㉛⑳Ⓛⓙ①ⓀⓐⒻⓅⓎⓚⓡ㊽⦻⑧ⓗ② ⚖ ⧀⦰⑬㊵㊶㉚⦴Ⓢⓒ㊻㊸⑫Ⓝ㉓ⓧ㊺ⓤⒷⓢ㊷ⓖⓊ⦸⦾Ⓥ㉗㉑ⓩⓦ㉞ⓕⓝ ➔ >:-㊵ =:-㉕ <:-② \n", - " <:①②③④⑤⑥⑦⑧ ⚖ ⦺⦻⦼⦽⦾⦿⧀⧁ ➔ >:() =:+ⓤ <:+⦺ \n", - " =:Ⓟ⦶ⓛⓡ㊼㉕ⓟ㉟⑳⦻㊷㊶ⓈⒺ⑧ⒸⓋ③⦷⑩⑰⑦⦹Ⓛ㊸⦱ⓨ⑮㉘ⓂⓏ⦽ⓑ ⚖ ⑱ⓖ㊿ⓓ⦼ⓚⓕⓄ㉓ⓦⓐⓊ㊾Ⓙ⧁ⓜ⑪㊽㊲㊱㊺ⓘ⦺①②㉖Ⓝ⑫⦳㉝ⓢⓇ⑭ ➔ \n", - " >:ⒻⒾ⑥⦺ⓙ㉝⦴⑫ⓝ⑧㊲⦽ⓞ②ⒼⓨⓑⓂ⦼㉜㊶㉞Ⓧ㉟ⓗ⦹㉘⦿⦾Ⓒⓔⓚ⧀⑮ⓥ㉓㊹ⓘⓋⒽⓊ㊺Ⓩ⑯⑪㉛ ⚖ ㊱⦳Ⓔⓟⓦ⦶ⓓⓖⓕ⦷⑬㉑㊽㉒⦱ⓜ㉚Ⓣ㊼Ⓢ⑦ⓤⓩⓌ⑳⧁ⓐⓇ㊻ⓣⓡ㉖③ⓧ㉙ⓛ⦵⑲㉕Ⓟ⦻⦲Ⓐ㉔Ⓞ⦸ ➔ >:-㊱ =:-⑱ <:+ⓛ \n", - " =:Ⓚ㊿⑱ⓨ⦼Ⓒ⦱㊶㊹⑳ⓖ③⑧㊼ⓐⓌ⦲㉟Ⓞ㊺②ⓝⒺⓕⓗⓧⓟ㉛㉔㊳Ⓓ⦳⑥⑦⧁ⒽⒷ④ⓜⓦⓥ㉜㉑⦾Ⓕ⦿Ⓝ㉗ ⚖ ⓚ㊻①⦹㉝⑨ⓔ⑲ⓏⓋ㉖Ⓡⓢ⦷Ⓐ㉘㉕Ⓤ⦽⦰ⓍⓣⒾⓩ⑮⑤⦻ⓑ⦸㉓㊾⦵㊽⦶⦺㊴㊱ⓡⓆ㉚Ⓨ⧀㉒⑯Ⓜⓤ㊸Ⓢ ➔ >:+⦲ =:+ⓞ <:-㉗ \n", - " <:㉘ⓘ㊶⦻ⓁⓄ㉒⑪㉛㊼⑰⑲㉗⑱⑯㉖ⓀⓎ㉜④⧁ⒼⓏⒹⓣ㊺⑧ ⚖ ⓛ⦸㉕ⓗⓒⒿ⦽⦶Ⓟ⦰㉑⧀⑮ⓧⓋ⑫Ⓦ⑩ⓢ⑨ⓕ㊸Ⓧ㊲ⓂⓈⓩ ➔ >:+ⓘ =:+ⓖ <:-⑧ \n", - " <:㊱Ⓞⓙ⑭ⒸⒹ㉒⑮ⓩ⦺⑳⦼ⓃⓛⓈ㉝㊺⦾ⓟ⑤②㊸⑥ⓗ㊽⑧㉙ⓧ㉑㉕Ⓤ㉟Ⓡ⑫㊲⦿ ⚖ ③ⓌⓦⓆ⦰㉜ⓡ㊴Ⓑ⑰Ⓛ⦵ⓢ㉞ⓓ㉚Ⓕ⑪Ⓗ⦷ⓒⓠⓥⒺ㊻ⓨ⑲⧁Ⓟ㉘㉖⑯Ⓩⓐ⑱㊶ ➔ \n", - " >:Ⓕ㉜ⓟ①㉛ⓔⓤⓨⓗ㉑㊿⑭ⓢ㉔Ⓢ㉘㊴⑪ⒹⒶⒸⓛ⧀㉕⧁⦺⑧⑦Ⓥ⑩Ⓤⓚⓞⓩ ⚖ ⑨ⓙ⦿ⓥ⦼㉓⦶Ⓡ⦴⦲Ⓜ㊾㊽⦸㊶ⓄⓏ⑳ⓖ㊺㉒ⓓⓁⒷⓆ⦹ⓣⓅⓠ㊼㉞②Ⓨ⑲ ➔ >:+ⓩ =:-③ <:-㉜ \n", - " =:㊷⑳Ⓧ⑯⑤㊵ⓖ⑮㊻ⓘ㊾ⓠ②⦳⦰ⓔⓙⓗ㊹ⓟⒻⓣ⑰㉝ⒿⓆⓩ⦻Ⓑ㉑㊲ⓒ㊱③ⓜ⧀㊽⦾㉟㉔⦸ⒹⓕⓨⓌⓃ⧁ⓥ㉕㉚ⓡ ⚖ ⦹ⓝⓀ⦶⑩Ⓖ⦺⑱Ⓔ㊶⑪Ⓐⓚⓢ⦷⑨⦿⦵①㉖⑭⑫ⓑ㊳Ⓣ㊸ⓋⓂ④㊴ⓐ⑦ⓤ㉞㉘Ⓞ㊺⦴㉒⦲⑲㉓ⓞ⑥ⓛ㉜Ⓒ㊿ⓏⓇⓦ ➔ >:+⦸ =:+⦱ <:+⦹ \n", - " <:ⓨ㊲ⓐ⦺㉒㉛ⓧ㊵Ⓙ㊼④⦾㉓Ⓤ⑧Ⓨ㉟ⒼⓆ㉙ⓞⒸⒽ⑯ⓟ⦷ ⚖ ⓑ⦼⑤㊽㊷⑩⑥⦶ⓌⓇ⦽㉜ⓓⓜⒾ㊺㊱ⒻⓃⓕ⑲ⓡ⑰⑬Ⓢ⑪ ➔ >:+⦷ =:-⑮ <:-㉒\n" - ] - } - ], - "source": [ - "do(Puzzle(120, 5, '+-0'))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "That works.\n", - "\n", - "Or, I could solve a puzzle with 243 possibilites (the maximum possible with 5 weighings): **242 balls**, lighter-only, plus the possibility that no ball is odd. \n", - "\n", - "This would have printed output with lines twice as long as the previous example, so I won't print the tree, just verify `solve` finds a solution:" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "puzzle242 = Puzzle(242, 5, '-0')\n", - "\n", - "is_solution(solve(puzzle242), puzzle242)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Puzzles with 6 Weighings\n", - "\n", - "It would be too long and ugly to show the trees for 6 weighings, but I can figure out which puzzles are solvable, and which I fail to solve. 36 = 729, and half that is 364.5, so can I solve a 364-ball puzzle?" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 246 ms, sys: 1.53 ms, total: 247 ms\n", - "Wall time: 246 ms\n" + "CPU times: user 5.39 s, sys: 17.4 ms, total: 5.41 s\n", + "Wall time: 5.41 s\n" ] }, { "data": { + "text/markdown": [ + "|*w*|3*w*|odd: \"+-\"|odd: \"+-=\"|odd: \"+\"|odd: \"+=\"|\n", + "|---:|---:|---:|---:|---:|---:|\n", + "|1|3|None|None|(3, 3)|(2, 3)|\n", + "|2|9|(3, 6)|(3, 7)|(9, 9)|(8, 9)|\n", + "|3|27|(12, 24)|(12, 25)|(27, 27)|(26, 27)|\n", + "|4|81|(39, 78)|(39, 79)|(81, 81)|(80, 81)|\n", + "|5|243|(120, 240)|(120, 241)|(243, 243)|(242, 243)|\n" + ], "text/plain": [ - "False" + "" ] }, - "execution_count": 42, + "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "puzzle364 = Puzzle(N=364, weighings=6, odd='+-')\n", - "\n", - "%time is_solution(solve(puzzle364), puzzle364)" + "%time report(range(1, 6))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "**No**, and the fact that it was so fast suggests that there is no good first partition. We can check the partition sizes, which must be no more than 25 = 243:" + "# What's Next?\n", + "\n", + "- What other puzzles can you solve?\n", + "- Can you *prove* the unsolved puzzles are unsolvable? \n", + "- Can you find trees that minimize the *mean* number of weighings, rather than minimizing the *maximum* number of weighings?\n", + "- Can you minimize the number of balls in each weighing? The solutions above sometimes weigh 3 or 4 balls on each side of the scale when only 1 or 2 were necessary.\n", + "- Currently, when `solve` returns `None`, it means \"no solution was found, but there's no proof that a solution doesn't exist.\" Can you modify `solve` to return a result that indicates there is no possible solution? (Maybe you can only do this in a reasonable amount of time on smaller puzzles, not all.)\n", + "- What about puzzles where your task is to identify *which* ball is odd, but not *how* it is odd? That is, if you get the possible oddballs down to `{-3, +3}` then you're done; you know ball 3 is the odd one, and you don't care if it is heavy or light.\n", + "- More generally, can you solve puzzles when it is a possibility (or a requirement) that *two* balls are odd? Or more than two?\n", + "- What if you had two or more balance scales that you could use in parallel, and the goal was to minimize the number of weighing time periods, not the total number of weighings?\n", + "- What else can you discover?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Better Partitions\n", + "\n", + "I defined `good_partitions` to randomly guess at a good partition; that worked fine for small puzzles. But for larger puzzles, I want to do a more systematic job. Here's what I'm thinking:\n", + "\n", + "- I should be focusing on **oddballs**, not balls.\n", + "- Balls with the same information should be treated the same. For example, at the start of a puzzle where all balls might be lighter or heavier, it matters how many balls I put on each side of the scale, but it doesn't matter which balls; `①②③④` is equivalent to `③⑥⑧⑪`.\n", + "- Balls with different information should be treated differently. If the set of oddballs has the subset {+1, -1, +2} then I get more information from putting ball 1 on the scale (it might turn out to be heavy or light) than ball 2 (which we already know can not be light)." + ] + }, + { + "cell_type": "code", + "execution_count": 152, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'+-': {1, 2}, '+': {3, 5}, '-': {4, 6}, '': {7, 8}}" + ] + }, + "execution_count": 152, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def divide(puzzle) -> Dict[str, Set[Ball]]:\n", + " oddballs, balls = puzzle.oddballs, puzzle.balls\n", + " return {'+-': {b for b in balls if b in oddballs and -b in oddballs},\n", + " '+': {b for b in balls if b in oddballs and -b not in oddballs},\n", + " '-': {b for b in balls if -b in oddballs and b not in oddballs},\n", + " '': {b for b in balls if b not in oddballs and -b not in oddballs}}\n", + "\n", + "puz = Puzzle(8, 3, balls=range(1, 9), oddballs={0, 1, -1, 2, -2, 3, -4, 5, -6})\n", + "divide(puz)" ] }, { @@ -1471,12 +1380,7 @@ { "data": { "text/plain": [ - "{118: [236, 256, 236],\n", - " 119: [238, 252, 238],\n", - " 120: [240, 248, 240],\n", - " 121: [242, 244, 242],\n", - " 122: [244, 240, 244],\n", - " 123: [246, 236, 246]}" + "[[1, 2, 3]]" ] }, "execution_count": 43, @@ -1485,110 +1389,50 @@ } ], "source": [ - "{B: partition_sizes(puzzle364, B) for B in range(118, 124)}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The best partitions are with 121 or 122 balls on each side, but they leave a 244-oddball branch; one too many.\n", + "from collections import defaultdict\n", "\n", - "How about if we drop down to 363 balls, but allow anything for the oddballs (so 2 x 363 + 1 = 727 possible outcomes):" + "def divide(oddballs):\n", + " dic = defaultdict(list)\n", + " for ball in set(map(abs, oddballs)) - {0}:\n", + " dic[ball in oddballs, -ball in oddballs].append(ball)\n", + " return [(sum(x), dic[x]) for x in dic]\n", + "\n", + "def pick_L(division, points_needed: int) -> Iterator[List[Ball]]:\n", + " #print('call pick_L', division, points_needed)\n", + " if points_needed == 0:\n", + " yield []\n", + " elif points_needed > 0 and division:\n", + " [(points, balls), *rest] = division\n", + " for p in range(0, points_needed // points + 1):\n", + " #print(' working on', balls[:p])\n", + " for remainder in pick_L(rest, points_needed - p * points):\n", + " yield balls[:p] + remainder\n", + "\n", + "def good_partitionsXXX(puzzle) -> Iterable[Weighing]:\n", + " \"Yield good partitions.\"\n", + " oddballs, weighings, balls = puzzle.oddballs, puzzle.weighings, list(puzzle.balls)\n", + " if isinstance(puzzle.odd, str):\n", + " tries = 1 # First weighing, undifferentiated balls: only need to try once.\n", + " for _ in range(tries): \n", + " for B in range(1, 1 + len(balls) // 2):\n", + " L, R = balls[:B], balls[-B:]\n", + " partition = weigh(L, R, oddballs)\n", + " if is_good_partition(partition, weighings - 1):\n", + " yield partition\n", + " random.shuffle(balls)\n", + "\n", + "list(pick_L(divide(puzzle12.oddballs), 6))" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 5.92 s, sys: 3.51 ms, total: 5.92 s\n", - "Wall time: 5.92 s\n" - ] - }, - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "puzzle363 = Puzzle(N=363, weighings=6, odd='+-0')\n", - "\n", - "%time is_solution(solve(puzzle363), puzzle363)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Yes**, there is a solution, and it took 6 seconds to find it. \n", - "\n", - "One last puzzle: 728 possibly heavy balls and 729 possible outcomes (the maximum for 6 weighings):" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 21 s, sys: 13.2 ms, total: 21 s\n", - "Wall time: 21 s\n" - ] - }, - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "puzzle728 = Puzzle(N=728, weighings=6, odd='+0')\n", - "\n", - "%time is_solution(solve(puzzle728), puzzle728)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Yes**, there is a solution, but it took half a minute to solve; I think that's enough." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# What's Next?\n", - "\n", - "- What other puzzles can you solve?\n", - "- Can you make a table summarizing the space of solved and unsolved puzzles?\n", - "- Can you *prove* the unsolved puzzles are unsolvable? \n", - "- Can you find trees that minimize the *mean* number of weighings, rather than minimizing the *maximum* number of weighings?\n", - "- Can you minimize the number of balls in each weighing? The solutions above sometimes weigh 3 or 4 balls on each side of the scale when only 1 or 2 were necessary.\n", - "- Currently, when `solve` returns `None`, it means \"no solution was found, but there's no proof that a solution doesn't exist.\" Can you modify `solve` to return a result that indicates there is no possible solution? (Maybe you can only do this in a reasonable amount of time on smaller puzzles, not all.)\n", - "- What about puzzles where your task is to identify *which* ball is odd, but not *how* it is odd? That is, if you get the possible oddballs down to `{-3, +3}` then you're done; you know ball 3 is the odd one, and you don't care if it is heavy or light.\n", - "- More generally, can you solve puzzles when it is a possibility (or a requirement) that *two* balls are odd? Or more than two?\n", - "- What if you had two or more balance scales that you could use in parallel, and the goal was to minimize the number of weighing time periods, not the total number of weighings?\n", - "- What else can you discover?" + "# sorted(range(1, N // 2 + 1), key=distance_to(N / 3)):\n", + "def distance_to(target): return lambda x: abs(x - target) \n", + "\n" ] } ], @@ -1608,7 +1452,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.15" + "version": "3.9.12" } }, "nbformat": 4,