Skip to content

Instantly share code, notes, and snippets.

@jtpio
Last active February 21, 2016 15:22
Show Gist options
  • Save jtpio/3f222251a25aa0b7898e to your computer and use it in GitHub Desktop.
Save jtpio/3f222251a25aa0b7898e to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Triangle Fraction\n",
"\n",
"A puzzle addressed during a MathsJam session (January 2016).\n",
"\n",
"![Triangle Fraction Problem](https://gist.githubusercontent.com/jtpio/3f222251a25aa0b7898e/raw/8afe6d2a0d5d0fdc8665a621786db1647997490c/triangles.png)\n",
"\n",
"> Three equilateral triangles. Which fraction is shaded?\n",
"\n",
"Found on Twitter, posted by [@math8_teacher](https://twitter.com/math8_teacher/status/687639479457153025)\n",
"\n",
"Well, time for some geometry then. Hmm what about being lazy instead and let Python do the calculations? :)"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from sympy.geometry import Point, Segment, Triangle, intersection\n",
"from sympy import sqrt\n",
"\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline \n",
"import seaborn as sns"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def ratio(side):\n",
"\n",
" # Height of an equilateral triangle\n",
" height = side * sqrt(3) / 2\n",
"\n",
" # Points of the triangles on the base line\n",
" p0 = Point(0, 0)\n",
" p1 = Point(side, 0)\n",
" p2 = Point(2 * side, 0)\n",
" p3 = Point(3 * side, 0)\n",
"\n",
" # Points of the triangles on the \"top\" line\n",
" p4 = Point(0.5 * (p1.x + p0.x), height)\n",
" p5 = Point(0.5 * (p2.x + p1.x), height)\n",
" p6 = Point(0.5 * (p3.x + p2.x), height)\n",
" \n",
" # The 3 segments we are only interested in\n",
" # (that will intersect the last one)\n",
" s1 = Segment(p1, p4)\n",
" s2 = Segment(p1, p5)\n",
" s3 = Segment(p2, p5)\n",
"\n",
" # The \"big\" segment that intersects everything\n",
" s4 = Segment(p0, p6)\n",
"\n",
" # Intersections of the \"big\" segment with the others\n",
" i1 = intersection(s1, s4)[0]\n",
" i2 = intersection(s2, s4)[0]\n",
" i3 = intersection(s3, s4)[0]\n",
"\n",
" # The normal triangles\n",
" tri1 = Triangle(p0, p1, p4)\n",
" tri2 = Triangle(p1, p2, p5)\n",
" tri3 = Triangle(p2, p3, p6)\n",
"\n",
" # The triangles constructed with the intersection points\n",
" tri4 = Triangle(p0, i1, p4)\n",
" tri5 = Triangle(i2, i3, p5)\n",
"\n",
" res = (tri4.area + tri5.area) / (tri1.area + tri2.area + tri3.area)\n",
" return res"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Ratio: 5/18\n"
]
}
],
"source": [
"# Calculate for 3 triangles of side 1\n",
"print('Ratio:', ratio(1))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"All good!\n"
]
}
],
"source": [
"# The ratio should not depend on the side of the triangles\n",
"for i in range(2, 10):\n",
" assert ratio(i) == ratio(1)\n",
" \n",
"print('All good!')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Extension for 4, 5, and more triangles\n",
"\n",
"The figure only shows 3 triangles. And for now the code does the calculation in a very manual way, defining the points, segments, triangles one by one.\n",
"\n",
"Is it possible to rewrite the `ratio` function to be generic and handle the case for more triangles?"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def ratio_n(n, side):\n",
"\n",
" # Height of an equilateral triangle\n",
" height = side * sqrt(3) / 2\n",
"\n",
" ps = []\n",
" # Points of the triangles on the base line\n",
" for k in range(n + 1):\n",
" ps.append(Point(side * k, 0))\n",
" \n",
" # Points of the triangles on the \"top\" line\n",
" for k in range(n):\n",
" ps.append(Point(0.5 * (ps[k+1].x + ps[k].x), height))\n",
" \n",
" # The segments we are only interested in\n",
" segs = []\n",
" for k in range(1, n):\n",
" segs.append(Segment(ps[k], ps[k+n]))\n",
" segs.append(Segment(ps[k], ps[k+n+1]))\n",
" \n",
" # The \"big\" segment that intersects everything\n",
" big = Segment(ps[0], ps[-1])\n",
" \n",
" # The normal triangles\n",
" tris = []\n",
" for k in range(n):\n",
" tris.append(Triangle(ps[k], ps[k+1], ps[k+1+n]))\n",
"\n",
" # The triangles constructed with the intersection points\n",
" shaded = []\n",
" for k in range(n-1):\n",
" if k == 0:\n",
" it = intersection(segs[0], big)[0]\n",
" shaded.append(Triangle(ps[k], it, ps[k+1+n]))\n",
" else:\n",
" kk = 2 * k\n",
" it1 = intersection(segs[kk], big)[0]\n",
" it2 = intersection(segs[kk-1], big)[0]\n",
" shaded.append(Triangle(it1, it2, ps[k+1+n]))\n",
" \n",
" area_shaded = sum([abs(tri.area) for tri in shaded])\n",
" area_total = sum([abs(tri.area) for tri in tris])\n",
" res = area_shaded / area_total \n",
" return res"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's first verify the function calcultes the same result found above for 3 triangles."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Ratio for 3 triangles with the generic function: 5/18\n"
]
}
],
"source": [
"print('Ratio for 3 triangles with the generic function:', ratio_n(3, 1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Good. Now what happens when there are more triangles?"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Ratio for 3 triangles: 5/18 ~= 0.277777777777778\n",
"Ratio for 4 triangles: 7/24 ~= 0.291666666666667\n",
"Ratio for 5 triangles: 3/10 ~= 0.300000000000000\n",
"Ratio for 6 triangles: 11/36 ~= 0.305555555555556\n",
"Ratio for 7 triangles: 13/42 ~= 0.309523809523810\n",
"Ratio for 8 triangles: 5/16 ~= 0.312500000000000\n",
"Ratio for 9 triangles: 17/54 ~= 0.314814814814815\n",
"Ratio for 10 triangles: 19/60 ~= 0.316666666666667\n",
"Ratio for 11 triangles: 7/22 ~= 0.318181818181818\n",
"Ratio for 12 triangles: 23/72 ~= 0.319444444444444\n",
"Ratio for 13 triangles: 25/78 ~= 0.320512820512820\n",
"Ratio for 14 triangles: 9/28 ~= 0.321428571428571\n",
"Ratio for 15 triangles: 29/90 ~= 0.322222222222222\n",
"Ratio for 16 triangles: 31/96 ~= 0.322916666666667\n",
"Ratio for 17 triangles: 11/34 ~= 0.323529411764706\n",
"Ratio for 18 triangles: 35/108 ~= 0.324074074074074\n",
"Ratio for 19 triangles: 37/114 ~= 0.324561403508772\n",
"Ratio for 20 triangles: 13/40 ~= 0.325000000000000\n",
"Ratio for 21 triangles: 41/126 ~= 0.325396825396825\n",
"Ratio for 22 triangles: 43/132 ~= 0.325757575757576\n",
"Ratio for 23 triangles: 15/46 ~= 0.326086956521739\n",
"Ratio for 24 triangles: 47/144 ~= 0.326388888888889\n",
"Ratio for 25 triangles: 49/150 ~= 0.326666666666667\n",
"Ratio for 26 triangles: 17/52 ~= 0.326923076923077\n",
"Ratio for 27 triangles: 53/162 ~= 0.327160493827161\n",
"Ratio for 28 triangles: 55/168 ~= 0.327380952380952\n",
"Ratio for 29 triangles: 19/58 ~= 0.327586206896552\n",
"Ratio for 30 triangles: 59/180 ~= 0.327777777777778\n"
]
}
],
"source": [
"SIDE = 10\n",
"LIMIT = 31 # Up to 30 triangles\n",
"ratios = []\n",
"xs = list(range(3, LIMIT))\n",
"for i in xs:\n",
" ratio_i = ratio_n(i, SIDE)\n",
" ratios.append(ratio_i)\n",
" print('Ratio for', i, 'triangles:', ratio_i, '~=', ratio_i.evalf())"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x7f577bb172e8>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABJ0AAASZCAYAAABxIW9RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8lOW9///3TPZMErKHJEBAZAuoECAhsomgWOOCCy61\nLrWtS2sVtVq1tfbokS6/Yt0O/dLWql3OaRWloCioVEErDWLLLvuSjez7JJnJzFy/P0JGhkzCYva8\nno8HDzJzL/O5Z+4ZJm+u+3NZjDFGAAAAAAAAQCey9nQBAAAAAAAA6H8InQAAAAAAANDpCJ0AAAAA\nAADQ6QidAAAAAAAA0OkInQAAAAAAANDpCJ0AAAAAAADQ6QidAADoJx599FFlZmbquuuuO63txo4d\nq/z8/E6r4bnnnuv2bXFqNm3apNmzZ/fY47///vu64IILlJGRod27d3fb47711lv61re+5b3dmef8\nV/Xiiy/qoYce+kr7WLZsmR5//PFOqqh9K1as0Ne//vUufxwAQP8R2NMFAADQ6sILL1RFRYUCAgIU\nHh6umTNn6ic/+YnCwsJ6ujSvCy+8UE8//bSys7N7uhQfmzdv1saNG/Xxxx8rJCTktLa1WCxdVBV6\no558vX/5y1/qiSee0Jw5c7r1cS+//HJdfvnl3tun+hwUFhZq7ty52rVrl6zWrvu/2vbq2bRpkx56\n6CGtX7++w+3vvPPOrijLLz4vAACng5FOAIBeZdmyZfr3v/+tN998Uzt27NBvfvOb096H2+3ugsp6\nt8LCQqWmpp524CRJxpguqKjn9ObXvzfXdrrO5FiKiop09tlnd0E1p+dUz3ljjCwWyxm/R77q6936\n+F35GAAAdCVCJwBAr9L6y11iYqJmzpypvXv3SpLq6+v1ox/9SDNmzNDs2bP17LPPetddsWKFbrzx\nRv3sZz9TVlaWXnzxRUnSa6+9pksvvVQZGRm67LLL9MUXX0iSSktLde+99yo7O1vz5s3Tn/70J+/j\nv/jii1q0aJF++MMfKiMjQ5dffrl27twpSXr44Yd19OhR3X333crIyNBLL70kSbrvvvs0Y8YMTZ06\nVTfffLP279/v3V91dbXuuusuTZ48WQsXLtSzzz7rc3nKgQMHdPvttysrK0tf+9rX9O6777b73JSW\nluruu+9WVlaW5s+fr9dff12StHz5cj3++OPasmWLMjIyvMd/vLy8PN18882aMmWKsrOz9cADD/gs\n/+c//6n58+crMzNTTz75pPf+/Px83XrrrcrKylJ2drZ+8IMfqL6+3rt8165duvrqqzV58mTdf//9\ncjgcPvv98MMPtWDBAk2dOlU33nij9uzZc8rbHu9kdVx44YX63e9+pyuuuEKTJk2Sx+Pp8HXetm2b\nbrjhBk2dOlUzZ87UU089JZfL5fexCwsLNXbsWL322muaOXOmZs6cqT/84Q/e5cYY/fa3v9VFF12k\nadOm6f7771dtba3PtsuXL9ecOXN02223tdl/6yVvL7/8ss4//3zNnDlTb775pnf5zTffrOXLl3tv\nn3iJ09ixY/W///u/mj9/viZPnqznnntO+fn5uuGGGzRlyhTdf//9PsdmjNGyZcs0bdo0zZ07V2+9\n9ZZ3mdPp1C9+8QvNmTNHM2bM0E9/+lM5nU6fOn/3u99pxowZeuyxx9ocizFGS5cu1YUXXqjp06fr\nkUceUX19vZxOp/d1ueKKK3TxxRf7fa47ej8c/1667rrr9Nxzz3mfh9bn2ePx+H3eOrosbP369brq\nqqs0efJkzZkzx+f9c/PNN0uSpkyZooyMDG3dulVSy3vu0ksvVVZWlr797W+rqKjI5/X4y1/+ovnz\n52v+/PmSpKeffloXXHCBJk+erGuuuUabN2/2W8vxGhsbdccdd6i0tFSTJk1SRkaGysrK9OKLL+re\ne+/VQw89pClTpmjFihVtLtHr6DPp0Ucf1ZNPPqk777xTGRkZuv76630uNfzkk090ySWXaOrUqfqv\n//qvNuff8Tp6vdavX6+cnBxlZGR4z28AwABkAADoJebMmWM+/fRTY4wxRUVFJicnxzz//PPGGGO+\n+93vmieeeMI0NTWZiooKs3DhQvO3v/3NGGPMm2++adLT082f//xn43a7jcPhMO+8846ZNWuW2bFj\nhzHGmLy8PFNUVGQ8Ho+56qqrzNKlS43L5TL5+flm3rx55pNPPjHGGPPCCy+Yc88912zYsMF4PB6z\nZMkSc9111/nUuHHjRp+633jjDdPQ0GCcTqdZvHixufLKK73LFi1aZB544AHjcDjM/v37zezZs83X\nv/51Y4wxDQ0NZvbs2WbFihXG4/GYL774wkybNs3s37/f7/Pz9a9/3Tz55JPG6XR61/3Xv/7lfQ5a\n9+vPAw88YP7f//t/xhhjHA6H+fzzz73LxowZY+68805TV1dnioqKzLRp08zHH39sjDHmyJEj5tNP\nPzXNzc2msrLSfOMb3zCLFy82xhjjdDrNnDlzzKuvvmpcLpdZs2aNGT9+vHn22WeNMcbs3LnTZGdn\nm23bthmPx2NWrFhh5syZY5xO50m3PVFHdbS+LgsWLDDFxcXG4XCc9HXesWOH2bp1q/F4PKawsNBc\neuml5tVXX/X72AUFBWbMmDHmgQceME1NTWbPnj1m2rRp3nP1lVdeMddff70pKSkxTqfT/OQnPzEP\nPPCAz7Y//OEPTWNjo3E4HG32n5uba9LT080LL7xgXC6X+eijj8x5551namtrjTHGfOMb3zCvv/66\nd/0TX+sxY8aY7373u8Zut5v9+/ebCRMmmNtuu80UFBSYuro6c+mll5oVK1b4PNbPf/5z43Q6zaZN\nm8zEiRPNoUOHjDHGPP300+buu+82tbW1xm63m7vuuss888wzPtsuWbLEOJ1Ov8fy+uuvm4svvtgU\nFBSYhoYGc88995iHHnrIp9a8vDy/z7O/90NWVpb3/bBo0SKzaNEi09TUZPbu3WtmzpzpfR4KCgrM\n2LFjjdvt9u7v+OfN33PWWsemTZvM3r17jTHG7Nmzx0yfPt188MEHPvv1eDzebd9//31z8cUXm4MH\nDxq3221+85vfmOuvv95n37fffrupra31PkerVq0yNTU1xu12m5dfftlMnz7du+yFF17weY6Ol5ub\na2bPnu1z3wsvvGDGjx9v1q1bZ4wxpqmpqc0+OvpMeuSRR0xWVpbZvn27cbvd5sEHH/Ser5WVlSYj\nI8O8//77xu12m1dffdWMHz/e7/N4stdr+vTp3s+Z2tpas2vXLr/HCADo3xjpBADoVb73ve8pMzNT\nN910k7KysnTnnXeqoqJCGzZs0GOPPaaQkBDFxsbq1ltv1dtvv+3dLikpSTfddJOsVquCg4O1fPly\nffvb39b48eMlSUOHDlVycrK2b9+u6upq3X333QoICNCQIUO0cOFCrV692ruvyZMna+bMmbJYLLry\nyit9RudIbS/NufrqqxUWFqagoCB973vf0+7du1VfXy+Px6P3339f9957r4KDgzVy5EgtWLDAu92H\nH36oIUOGaMGCBbJYLBo7dqwuuugirVmzps3zUlxcrC1btugHP/iBgoKCNHbsWC1cuFB///vfT+l5\nDQwMVGFhoUpKShQcHKyMjAyf5XfeeaciIiKUnJysrKws76iwYcOGKTs7W4GBgYqJidGtt96qzz77\nTJK0ZcsWuVwu3XLLLQoICND8+fM1YcIE7z5fe+013XDDDTrnnHNksVi0YMECBQcHa+vWrdq6dWuH\n256oozpa3XLLLUpKSlJwcPBJX+fx48fr3HPPlcViUUpKiq677ro2+zvR97//fYWEhGj06NG6+uqr\nvfv629/+pkWLFikxMdF7Dqxdu9Y76sZisej73/++QkNDFRwc7HffQUFB+u53v6uAgADNnj1b4eHh\nOnToUIf1HO873/mOwsPDNXLkSI0aNUrTp09XamqqIiIiNGvWLO/r2VrPokWLFBQUpKlTp2r27Nne\nESqvv/66Hn30UUVGRio8PFx33HGHz/vMarXq+9//voKCgvwey9tvv63bbrtNqampCgsL0wMPPKB3\n3nnHZwRSe/y9Hy6++GKtWbPG+1667777FBISolGjRumqq6465eenI1OnTtWoUaMkSaNHj9all17a\n5lw4/j3/t7/9TXfccYdGjBghq9WqO+64Q7t379bRo0e969x5552KjIz0PkeXX365oqKiZLVaddtt\nt8npdJ7W63uiSZMm6cILL5Qkv5fUtveZ1Oqiiy7ShAkTZLVadfnll3vPj/Xr12vUqFGaN2+erFar\nbrnlFsXHx/utoaPXS5KCg4O1f/9+1dfXKzIyUuPGjTvj4wUA9F00EgcA9CpLly7VtGnTfO4rLCyU\ny+XSjBkzJLX8AmiMUXJysnedwYMH+2xTXFysYcOGtdl/a/CSmZnp3ZfH49HUqVO96xz/S1ZoaKgc\nDoc8Ho/fRsIej0fPPPOM1q5dq6qqKlksFlksFlVVVampqUlut9untuNrLioq0pYtW3xqcbvduvLK\nK9s8TmlpqQYNGuTTVD0lJcV76d/JPPzww3r22Wd17bXXKjo6WrfddpuuueYav8ccFhamhoYGSVJF\nRYWefvppbd68WQ0NDXK73YqOjpYklZWVKSkpyedxUlNTfY5v5cqV+vOf/+w9PpfLpdLSUknqcNsT\ndVRHq+Of55O9zocPH9bPf/5z7dixw/s6tQaU/lgsFp/9p6SkaN++fd7jvOeee7znhzFGgYGBKi8v\n91ubP9HR0T7nV2hoqOx2e4fbHC8uLs5n2+Nfz5CQEFVUVHhvR0VF+QQVKSkpKi0tVWVlpRobG33O\nC4/H4xO4xMbGKigoqN06SktLlZKS4r2dmpoql8ul8vJyJSYmdngM7b0fFixYoMrKSrlcrjavQWfY\nunWrlixZon379qm5uVnNzc265JJLOqzz6aef1i9+8QtvnRaLRSUlJd7394mv90svvaQ33nhDZWVl\nkiS73a6qqqozrrmj86mjz6SIiAhJ7b/fS0tLfT6jOnqsjl4vSXr++ee1dOlS/epXv9KYMWP04IMP\nauLEiWd8zACAvonQCQDQq5w4ikhqCWpCQkKUm5vbblPdE+8fPHiw8vLy/O5ryJAhWrt27RnVd+Lj\nvPXWW/rwww/16quvKiUlRXV1dd5gIzY2VgEBASouLlZaWpok+YyGaB1V1NobqiOJiYmqqalRQ0OD\nwsPDvfs62S/yreLi4vTUU09Jkj7//HN985vfVGZmpoYOHdrhds8884wsFotWr16tyMhIffDBB/rv\n//5vSVJCQoJKSkp81i8qKvKGfYMHD9Zdd93ld2atzz77rMNtT6cOf072Ov/0pz9Venq6fv3rXyss\nLEyvvvqq3nvvvXb3Z4zR0aNHNWLECEm+z31ycrIWL16sSZMmtdmusLBQ0leb8Ss8PFxNTU3e263B\nxZmqra1VU1OTQkNDJbUcy+jRoxUTE6OwsDC9/fbb7Z5XJzuOxMREn/5GhYWFCgwMbHe0zPE6ej94\nPB4FBgb6vAbHP05rGNvY2CibzSZJPqFfR37wgx/o5ptv1ksvvaSgoCAtXrxY1dXVkvwfb3Jysu6+\n+25ddtll7e7z+O02b96sl156SX/84x+9TdQzMzNPqTn5qX7eHW/VqlXtfiadTGJiov7xj3/43Fdc\nXOx33ZN9fk2YMEFLly6V2+3Wn/70Jy1atEgfffTRKdUBAOg/uLwOANDrJSQkaPr06Vq8eLHq6+tl\njFF+fn6Hl0MtXLhQf/jDH7wjgfLy8nT06FGde+65stls+t3vfieHwyG32619+/Zp+/bt7e7r+F8O\nExISVFBQ4L1tt9sVHBysqKgoNTQ0aMmSJd5fCK1Wqy6++GK98MILampq0oEDB7Ry5UrvthdccIEO\nHTqklStXyuVyqbm5Wdu3b9eBAwfa1DB48GBNmjRJzzzzjJxOp3bv3q3ly5f7HRXlz5o1a7whT+tl\nPqcShNjtdtlsNtlsNpWUlPj8gjlx4kQFBgbqT3/6k1wul9577z2f5/G6667TX//6V23btk2S1NDQ\noPXr16uhoeGk255OHf6c7HW22+2KiIhQWFiYDhw4oP/7v/876XOxdOlSNTU1ad++fXrzzTeVk5Mj\n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\nY7Uelzpz4ODRmKhUozjPPicAAABoJDWNTpVKJT772c/Gl770pXjsscdi8+bNsXPnzpe8ZunSpfHA\nAw/Eo48+Gh/60Ifitttui4iIJEniK1/5SmzcuDE2bdoUExMT8fjjj9dyXOpQMji5z8lJJwAAAGgo\nNY1OzzzzTCxfvjwWL14c7e3tsXbt2tiyZctLXnPppZdGd3f31K+TJJn6WqVSiXK5HOPj43H06NEo\nFou1HJc6lJQm71w330knAAAAaCQ1jU5JksSiRYumHvf398fAwMBpX/+Nb3wj1qxZM/Xa97///fH2\nt7891qxZE93d3fHWt761luNShwacdAIAAICGVDeLxJ988snYuHFjbNiwISIiDh48GFu2bIl//ud/\njh/84AcxMjISmzZtynhKZpqTTgAAANCY2mr5m/f398fevXunHidJcsqPyG3bti1uu+22uOeee6Kn\npyciIp544olYunRpzJs3LyIirrjiiviP//iPWLdu3bTft6+vO6U/AVnbf/BozJvTEcuWzM96lLrj\nOqcZuM5pBq5zmoHrnGbgOoeXq2l0uvjii+P555+PPXv2RF9fX2zevDnuuOOOl7xm7969cfPNN8ft\nt98ey5Ytm3r+wgsvjP/8z/+M0dHRmDVrVjz55JNx8cUXn9H33bfvUKp/DrIxPlGJZHAkVizu8f/p\nSfr6uv1vQu65zmkGrnOageucZuA6pxmcS1itaXRqbW2NW2+9NT7wgQ9EtVqNa6+9NlasWBEPPvhg\nFAqFuO666+Kuu+6K4eHh+MxnPhPVajXa2tri4YcfjksuuSSuvPLKuOqqq6KtrS1e//rXx3ve855a\njkud2T98NKrViP559jkBAABAoylUq9Vq1kOkTWHOh//8yf74Xw8/E1ev+aVY99ZXZz1OXfFfUmgG\nrnOageucZuA6pxm4zmkG53LSqW4WicPJktLknevmO+kEAAAAjUZ0om65cx0AAAA0LtGJujUweDw6\nFZ10AgAAgIYjOlG3klI5erpmRWdHTffdAwAAADUgOlGXxsYrceDgUfucAAAAoEGJTtSl/cPlqFYj\nivY5AQAAQEMSnahLyeDknet6nXQCAACARiQ6UZfcuQ4AAAAam+hEXUpKx086uXMdAAAANCbRibqU\nDDrpBAAAAI1MdKIuDZRGYt6cWdExqzXrUQAAAIBzIDpRd8bGJ2Lw4KhTTgAAANDARCfqzsDQ0aiG\n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\nyAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f57ad656cc0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(20,20), dpi=80)\n",
"plt.plot(xs, ratios, 'o-')\n",
"plt.xlabel('Number of equilateral triangles')\n",
"plt.ylabel('Percentage of the shaded area')\n",
"plt.title('Percentage of shaded area per number of equilateral triangles')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Observations\n",
"\n",
"That's quite interesting! With some optimizations in the `ratio_n` function, we could calculate the ratio for more triangles.\n",
"\n",
"But looking at the graph, we can ask at least two questions:\n",
"\n",
"- Does the ratio converge to 1/3? (0.333333...)\n",
"- If yes, how to prove it?\n",
"\n",
"I will let these two questions as an open challenge :)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment