{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "##########################################################\n", "# Counting utility functions. #\n", "# Don't worry about the implementation of anything here. #\n", "##########################################################\n", "\n", "import matplotlib.pyplot as plt\n", "plt.rcParams[\"figure.figsize\"] = (12,5)\n", "def count(f):\n", " \"\"\"Return a counted version of f with a call_count attribute.\n", "\n", " >>> def fib(n):\n", " ... if n == 0 or n == 1:\n", " ... return n\n", " ... else:\n", " ... return fib(n-2) + fib(n-1)\n", " >>> fib = count(fib)\n", " >>> fib(20)\n", " 6765\n", " >>> fib.call_count\n", " 21891\n", " \"\"\"\n", " def counted(n):\n", " counted.call_count += 1\n", " return f(n)\n", " counted.call_count = 0\n", " return counted\n", "\n", "def call_on_values(f, seq):\n", " \"\"\"\n", " Calls the one-argument function f on each value in lst,\n", " printing out how many calls are made for each input.\n", " \"\"\"\n", " for n in seq:\n", " f.call_count = 0\n", " f(n)\n", " call_count = f.call_count\n", " print(\"Number of calls for n={0}: {1}\".format(n, call_count))\n", "\n", "def create_graph(f, seq, name, other_xs=None, other_ys = None, scale=1):\n", " \"\"\" Creates a plot of each value n in seq versus the number of calls in f(n).\n", " \"\"\"\n", " counts = []\n", " for n in seq:\n", " f.call_count = 0\n", " f(n)\n", " call_count = f.call_count\n", " counts.append(call_count)\n", " plt.plot(seq, [c * scale for c in counts], 'bo')\n", " plt.ylabel('Number of calls')\n", " plt.xlabel('Input value')\n", " plt.title('Calls to ' + name)\n", " if other_xs and other_ys:\n", " plt.plot(other_xs, other_ys, '-r')\n", " plt.show()\n", " \n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "###########################################\n", "# Plotting time to run functions. #\n", "# Don't worry about any of the code here. #\n", "###########################################\n", "%matplotlib inline\n", "import matplotlib.pyplot as plots\n", "plots.style.use('ggplot')\n", "\n", "from timeit import repeat\n", "from numpy import median, percentile\n", "\n", "def plot_times(name, xs, order=None, n=7, pct=0.1):\n", " f = lambda x: name + '(' + str(x) + ')'\n", " g = globals()\n", " \n", " samples = []\n", " for _ in range(n):\n", " times = lambda x: repeat(f(x), globals=g, number=1, repeat=n)\n", " samples.append([median(times(x)) for x in xs])\n", " ys = [10e6 * median(sample) for sample in zip(*samples)]\n", " \n", " plots.figure(figsize=(8, 8))\n", " plt.ylabel('Median time to execute')\n", " plt.xlabel('Input value')\n", " plt.title('Time to run ' + name)\n", " plots.plot(xs, ys)\n", " \n", " if order:\n", " slopes = [y / order(x) for (x, y) in zip(xs, ys)]\n", " for slope in (percentile(slopes, pct), percentile(slopes, 100-pct)):\n", " plots.plot(xs, [slope * order(x) for x in xs], linewidth=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Linear Growth" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of calls for n=100: 100\n", "Number of calls for n=200: 200\n", "Number of calls for n=300: 300\n", "Number of calls for n=500: 500\n", "Number of calls for n=1000: 1000\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "@count\n", "def fact(n):\n", " if n <= 1:\n", " return 1\n", " else:\n", " return n * fact(n - 1)\n", " \n", "call_on_values(fact, [100, 200, 300, 500, 1000])\n", "create_graph(fact, range(0, 1000, 30), 'fact')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exponential Growth" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of calls for n=10: 177\n", "Number of calls for n=11: 287\n", "Number of calls for n=12: 465\n", "Number of calls for n=13: 753\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "@count\n", "def fib(n):\n", " if n <= 1:\n", " return n\n", " else:\n", " return fib(n - 2) * fib(n - 1)\n", " \n", "call_on_values(fib, [10, 11, 12, 13])\n", "create_graph(fib, range(0, 30), 'fib')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Constant Growth" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of calls for n=10: 1\n", "Number of calls for n=20: 1\n", "Number of calls for n=30: 1\n", "Number of calls for n=500: 1\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "@count\n", "def square(x):\n", " return x * x\n", " \n", "call_on_values(square, [10, 20, 30, 500])\n", "create_graph(square, range(0, 1000, 10), 'square')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Logarithmic Growth" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of calls for n=10: 2\n", "Number of calls for n=15: 2\n", "Number of calls for n=20: 2\n", "Number of calls for n=25: 2\n", "Number of calls for n=100: 3\n", "Number of calls for n=200: 3\n", "Number of calls for n=1000: 4\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAEaCAYAAAD3+OukAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3de1hUdf4H8PfAoIDIndEg1EBdIvKCgIoKlLTm6mMupWZh66Utwx5FLWU1b6WJFOqqGGVmsbYtVOTT2gVDS5BoYUXX1FTw0ipoylWU6zDn94fL/ByZAweYC8x5v56n53HOzDnfz3dMPpzv93y+X4UgCAKIiEiWrMwdABERmQ+TABGRjDEJEBHJGJMAEZGMMQkQEckYkwARkYwxCVCXMWDAAKxfv177OiIiAs8//7wZI+qePvzwQyiVStHXUly6dAkKhQJHjhwxdHjUxTAJUKeVlZVh2bJl+N3vfgdbW1uoVCqEhYUhJSUFarXabHGtX78eAwYMMFv7XcWMGTNQXFzcrnO8vb1x9epVjBw5EgBw5coVKBQK/PDDD0aIkMypfb8eEN3jypUrGDNmDJRKJV5//XUMHz4cNjY2+PHHH/H2229jyJAhGDZsmLnDlDU7OzvY2dm16xxra2v07dvXSBFRV8I7AeqUl156CfX19SgoKMCzzz4Lf39/DBo0CH/6059w9OhRDBo0CADw3XffISIiAq6urnByckJ4eDjy8vLa1daRI0cwZswY9O7dG71798bQoUORkZGh97MffvghVq1ahV9//RUKhQIKhQJr164FAFRXV+PFF1+Eh4cHbG1tERQUhAMHDrTa9pUrV/Dkk0/C3d0ddnZ28PHxwVtvvaV9/96hLAB4/vnnERERoX0dERGBefPm4bXXXoNKpYKzszNWrlwJjUaD119/HX369IGHhwdWrlwp+TsRBAGrVq2CSqWCg4MDnn76aVRUVLT4Lu4dDvrkk0/g6+sLW1tbhIaGYv/+/TrDP/cOB3l7ewMAHnnkESgUCu0dVlvfC3V9vBOgDisvL8fXX3+NdevWwcnJqcX7NjY2sLGxAQDcunULCxYswNChQ9HY2IgtW7bg8ccfR2FhIdzc3Npsq6mpCVOmTMHs2bPx4YcfAgBOnjwJe3t7vZ+fMWMGzpw5g48//hj5+fkAAAcHBwDA3LlzkZ+fj71796Jfv35ITk7G5MmTceLECfj5+em9XkxMDGpqapCZmQlnZ2dcvHgR165dazPue3322WeYP38+jhw5giNHjmDevHk4duwYAgICkJ2djdzcXMyePRtjx47FxIkT27zetm3bsHnzZuzcuROjR4/Gvn37sG7dulbPOXr0KJ599lmsWLECs2bNwi+//ILY2NhWzykoKEBgYCA+//xzhIaGwtraGoDhvhcyI4Gog/71r38JAITPP/+83ec2NTUJzs7Owt69e7XH+vfvL7zxxhva1+Hh4cK8efMEQRCE8vJyAYDw/fffS27jjTfeEPr3769zrLCwUAAgfPXVVzrHhw8fLsyZM0f0WkOGDBHWrFkj+v69sQuCIMybN08IDw/Xvg4PDxeGDh2q8xl/f38hICCgRVtLly4VbetuXl5ewooVK3SOPfnkk4K1tbX29Z49e3ReP/PMM8LYsWN1znnnnXcEAEJ2drYgCIJw8eJFndeXL1/W+/239b1Q18fhIOow4X9rDyoUijY/e/HiRcyaNQsDBw6Eo6MjHB0dUVVVhV9//VVSWy4uLnj++ecxYcIETJw4EfHx8Th79my7Yz59+jQAICwsTOd4WFgYTp06JXpebGws3nzzTYwcORLLly9HVlZWu9sGgKFDh+q87tu3L4YMGdLi2PXr19u81s2bN1FcXIzQ0FCd42PHjm31vNOnT2PUqFE6x0aPHt1me/oY6nsh82ESoA4bNGgQrKysWv3h2Wzy5Mn473//i6SkJPz00084fvw4VCoVGhoaJLe3a9cuHD16FI899hgOHz6MgIAAvPvuu53pgpYgCK0mszlz5uDXX3/F/PnzcfXqVUycOBHR0dHa962srLRJsVljY2OL6zQPjzVTKBR6j2k0GkkxN3++vTpyjj5tfS/U9TEJUIe5urpi4sSJ2LFjB6qqqlq839jYiNu3b6OsrAynT59GXFwcJkyYAH9/f9ja2kr6bfdeAQEBWLJkCb755hvMmzcP7733nuhne/TogaamJp1jDz30EAC0+I01Oztb+56Y++67D3PmzEFKSgp2796Njz/+GDdv3gQAqFQqlJSU6Hz+2LFjkvvVEU5OTvDy8kJOTo7O8Xtf38vf3x+5ubk6x3766adWz+nRowcAtPg+gda/F+r6mASoU3bu3AkbGxuMGDECf//733H69GkUFRVh7969CAoKQmFh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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "@count\n", "def sum_digits(n):\n", " if n < 10:\n", " return n\n", " else:\n", " return n % 10 * sum_digits(n // 10)\n", " \n", "call_on_values(sum_digits, [10, 15, 20, 25, 100, 200, 1000])\n", "create_graph(sum_digits, [10 ** x for x in range(25)], 'sum_digits')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exponentiation" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of calls for n=10: 11\n", "Number of calls for n=15: 16\n", "Number of calls for n=20: 21\n", "Number of calls for n=25: 26\n", "Number of calls for n=100: 101\n", "Number of calls for n=200: 201\n", "Number of calls for n=1000: 1001\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEaCAYAAAACBmAUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3de1xVZboH8N+GLTcRhL1BA68ojII6qaB4CQho+pieGfOUUxOdk+lYYZrSGMxkqanFoAajUjrH1DSnchp1Sk86IQJe8oiClThyEXVUNNxsRG4K7P2ePxhWErdF7vv+fT8fPrHXXnutZz+BD2u9z35fhRBCgIiIqAsO5g6AiIisAwsGERHJwoJBRESysGAQEZEsLBhERCQLCwYREcnCgkFWb9CgQVi5cqX0OCoqCnPmzDFjRPJZU6xELBhkNhUVFXjttdfws5/9DC4uLvD19UVERAS2b9+OpqYms8W1cuVKDBo0yGznJ7JUSnMHQPbp6tWrmDRpEpRKJd566y2MHj0aPXr0wPHjx7FmzRqMGjUKDz74oLnDJKJ78AqDzOKll17C3bt3kZeXh2eeeQbBwcEIDAzEf//3f+P06dMIDAwEAHz11VeIioqCt7c3PD09ERkZiZMnT3brXEePHsWkSZPQq1cv9OrVCz//+c9x8ODBdvfdtm0b3njjDVy+fBkKhQIKhQLLli0DAFRXV+OFF16Aj48PXFxcEBoain/84x+dnvvq1av4z//8T6jVari6uiIgIACrV6/ucP/GxkYkJSXB398fTk5OCA4Oxl/+8hfp+SVLlmDy5MnS48OHD0OhUGDJkiXStqVLl2LcuHGdxvXJJ5/gwQcfhIuLCwYNGoSEhATU1tYCaL7y69+/P1555RVp//LycjzwwANITEwEAGRlZUGhUOCLL77AuHHj4OLigpCQEHz11VednpesnCAysYqKCuHg4CBWrFjR5b67d+8Wu3btEoWFheLs2bNi9uzZwsvLS2g0GmmfgQMHtjpWZGSkmD17thBCiKamJuHl5SUWLVokioqKRFFRkdi9e7fIyclp93x1dXUiMTFR9OvXT1y/fl1cv35dVFdXCyGEeOKJJ8TAgQPFgQMHxLlz58SCBQtEjx49xD//+c8O4/+P//gPERMTI/Lz88XFixdFZmam+Mtf/tJurEII8bvf/U54e3tL73nVqlVCoVCIjIwMIYQQhw4dEkqlUoppyZIlwsfHR4SHh0vHmDx5skhMTOwwpq1bt4revXuL7du3iwsXLojs7GwxcuRIERcXJ+2TnZ0tlEql+Pzzz4Verxe/+MUvxPjx40VDQ4MQQojDhw8LAGLo0KHiiy++EOfOnRPPP/+8cHFxEVevXu3w3GTdWDDI5P7v//5PABB/+9vfuv1anU4nevfuLT766CNpW2cFQ6vVCgDi8OHDss+xYsUKMXDgwFbbiouLBQCxf//+VttHjx4tZs2a1eGxRo0aJZYuXdrh8/fGWltbK5ycnER6enqrfaZPny4efvhhIYQQ9fX1wsXFRYpj4sSJYs2aNUKpVIqqqirpGAcPHuzwnAMHDhTvv/9+q23Z2dkCgNBqtdK2ZcuWCZVKJRISEoSnp6coLS2VnmspGJs3b5a2NTY2igEDBojXX3+9w3OTdeMtKTI58e/5LhUKRZf7Xrx4Ec8++yyGDh0KDw8PeHh4oKqqCpcvX5Z1Li8vL8yZMwePPvoopkyZguTkZBQWFnY75nPnzgEAIiIiWm2PiIhAQUFBh69buHAh3n77bYwfPx6JiYnIycnpcN+SkhI0NDS0OUdkZKR0DhcXF0yYMAGZmZmoqalBbm4unnrqKQQFBSEnJwdHjhwBgFa3re518+ZNXL58GQkJCXB3d5e+pkyZIsXQ4o033kBQUBDeffddbNq0CYMHD25zvAkTJkjfK5VKjBs3TsoV2R4WDDK5wMBAODg4dPoPbYtp06bhX//6F9LT03HixAmcOXMGvr6+aGhokH2+//mf/8Hp06fxyCOPIDs7GyNGjMCmTZvu5y1IhBCdFr5Zs2bh8uXLePHFF3H9+nVMmTIFcXFxnR7zx8f78Tmio6Nx6NAhHDlyBAEBAfD395e2ZWZmYvz48XBzc2v32Hq9HgDwpz/9CWfOnJG+vvnmGxQXF2PkyJHSvtevX0dRUREcHR1RVFTUZS5aYiXbxYJBJuft7Y0pU6Zgw4YNqKqqavN8Y2MjamtrUVFRgXPnziEpKQmPPvoogoOD4eLigvLy8m6fc8SIEUhISMCXX36J2bNn489//nOH+zo5OUGn07XaFhISAgBtrhCOHDkiPdeRBx54ALNmzcL27dvxwQcfYOfOnbh9+3ab/YYOHQpnZ2dkZ2e32p6Tk9PqHNHR0fjmm2/w17/+FTExMdK2zMxMZGZmIjo6usNY+vTpg/79+6OwsBBDhw5t8+Xi4gKgubDExcUhJCQEn332Gd566y0cPXq0zfFOnDghfd/U1ITc3FwMHz6803yQFTPvHTGyV5cvXxb9+vUTQ4YMETt37hQFBQWiuLhY7NixQ4waNUrk5+cLnU4nfHx8xOOPPy4KCwvF8ePHxeTJk4Wbm1urcYHOxjCKi4vFa6+9Jo4cOSIuXbokjh8/LoKDg1sN8P7Yrl27hFKpFMePHxc3b94UtbW1QgghnnzySWnQ+5///KesQe958+aJ/fv3i5KSEnH27Fnx5JNPiv79+wu9Xt8mViGEWLx4sTToXVRU1GbQW4jmsQJ3d3ehVCrFZ599JoRoHqtxdHQUDg4OIjs7u9Pcb9++XfTo0UOsWLFCfPfdd+L8+fNiz549Yu7cudI+b731llCpVOLKlStCCCFefvllMWDAAGmMo2UMIzAwUOzfv1+cO3dOzJkzRzg7O0uvIdvDgkFmU15eLhISEkRgYKBwdnYWPj4+IiIiQuzYsUM0NjYKIYTIysoSo0aNEs7OziIoKEh89tlnYsiQIbILRllZmXj88ceFv7+/cHJyEg888ICYM2eOuHXrVodxNTQ0iKefflp4eXkJANK5qqqqxNy5c4VarRZOTk5i7NixnQ4uCyFEfHy8CAwMFC4uLsLb21s89thj4uzZs+3G2nLuxMRE4efnJ3r06CGGDx8udu7c2ea4jz32mFAoFK26xcaMGSNcXV3F3bt3O41JCCH27NkjwsPDhaurq+jVq5f4+c9/LpYvXy6EEOLYsWNCqVSKv//979L+d+7cEaNGjRIzZswQQvxQMP7+97+LMWPGCCcnJzF8+HBx4MCBLs9N1kshBG86ElH3ZGVl4eGHH8aVK1fQr18/c4dDJsIxDCIikoUFg4iIZOEtKSIikoVXGEREJAsLBhERyWKy6c3nzZsHFxcXODg4wNHREcnJyaipqUFqaipu3rwJHx8fLFq0CO7u7hBCYOvWrcjPz4ezszPi4+MREBDQ5TnKysqgVquh0WhM8I4sG/PAHLRgHpgDoOMc+Pn5yT6GSdfDWLp0KTw8PKTHe/fuxciRIzF9+nTs3bsXe/fuRVxcHPLz83Hjxg2sW7cOxcXF2Lx5M95++21ThkpERD9i1ltSubm5iIyMBNA8wVpubi4A4NSpU4iIiIBCoUBQUBBqa2tRWVlpzlCJiOyeSa8wVq1aBQB45JFHEBsbi6qqKnh5eQFonlW0ZX4drVYLtVotvU6lUkGr1Ur7tsjIyEBGRgYAIDk5GWq1GkqlstVr7RXzwBy0YB6YA8AwOTBZwVixYgW8vb1RVVWFlStXdnrfrL1O3/ZmBI2NjUVsbKz0WKPR8F7lvzEPzEEL5oE5AAwzhmGyW1Le3t4AAE9PT4SFhaGkpASenp7SrabKykppfEOlUrV6YxUVFW2uLoiIyLRMUjDu3LmD+vp66ftvv/0WAwYMQGhoqDSVc3Z2NsLCwgAAoaGhyMnJgRACRUVFcHNzY8EgIvqR3btdMW6cL/r1ewDjxvli925Xo57PJLekqqqqsGbNGgCATqfD5MmT8eCDD2LIkCFITU1FZmYm1Go1EhISAACjR49GXl4eFixYACcnJ8THx5siTCIiq7F7tytee80T9fXNf/dfu6bEa695AgBmzKg3yjltamoQfg7jB8wDc9CCebDNHIwb54tr19r+ze/v34STJ9suMmZVYxhERGQ4ZWWO3dpuCCwYRERWyM9P163thsCCQURkhZKSquHqqm+1zdVVj6SkaqOd06Qf3CMiIsNoGdhOTu6FsjJH+PnpkJRUbbQBb4AFg4jI4uze7SqrEMyYUW/UAvFjLBhERBbEHO2ycnEMg4jIgiQn95KKRYv6egckJ/cyU0Q/YMEgIrIg5miXlYsFg4jIgpijXVYuFgwiIgtijnZZuVgwiIhMRM5kgTNm1CMlpQr+/k1QKAT8/ZuQklJl9gFvgF1SREQm0Z3uJ1O3y8rFKwwiIhOw5O4nuVgwiIhMwJK7n+RiwSAiMgFL7n6SiwWDiMgELLn7SS4WDCKi+2Tt3U9ysUuKiOg+2EL3k1y8wiAiug+20P0kFwsGEdF9sIXuJ7lYMIiI7oMtdD/JxYJBRHQfbKH7SS4OehMR3QdzLJVqLiwYREQdsNSlUs2FBYOIqB2WvFSquXAMg4ioHfbULisXCwYRUTvsqV1WLhYMIqJ22FO7rFwsGERE7bCndlm5WDCIyC51NWGgLUwWaGjskiIiuyO3A8pe2mXl4hUGEdkddkD9NCwYRGR32AH107BgEJHdYQfUT2PSMQy9Xo+kpCR4e3sjKSkJ5eXlSEtLQ01NDQYPHoz58+dDqVSisbERGzZsQGlpKXr16oWFCxfC19fXlKESkQ1LSqpuNYYBsANKDpNeYfzv//4v/P39pccfffQRpk6dinXr1qFnz57IzMwEAGRmZqJnz55Yv349pk6dip07d5oyTCKyceyA+mlMVjAqKiqQl5eHmJgYAIAQAgUFBQgPDwcAREVFITc3FwBw6tQpREVFAQDCw8Nx9uxZCCFMFSoRWTE562sDzUXj5MlyXL16HSdPlrNYyGCyW1Lbtm1DXFwc6uub/6dUV1fDzc0Njo7Ng0ze3t7QarUAAK1WC5VKBQBwdHSEm5sbqqur4eHh0eqYGRkZyMjIAAAkJydDrVZDqVRCrVab6m1ZLOaBOWhhT3n4+GMHJCY6oq5OAaC5XTYxsTd69xaYOdM+ctARQ/wcmKRgnD59Gp6enggICEBBQUGX+7d3NaFQKNpsi42NRWxsrPRYo9FArVZDo9HcX8A2gHlgDlrYUx5ef91XKhYt6uoUeP11IDraPnLQkY5+Dvz8/GQfwyQFo7CwEKdOnUJ+fj4aGhpQX1+Pbdu2oa6uDjqdDo6OjtBqtfD29gYAqFQqVFRUQKVSQafToa6uDu7u7qYIlYisWEdtsVeumDgQG2WSMYzf/OY32LhxI9LT07Fw4UKMGDECCxYsQEhICE6cOAEAyMrKQmhoKABg7NixyMrKAgCcOHECISEh7V5hEBHdq6O22P79TRyIjTLr5zCeeeYZ7Nu3D/Pnz0dNTQ2io6MBANHR0aipqcH8+fOxb98+PPPMM+YMk4isREcTBr71Fj9fYQgKYUPtR2VlZXZ1v7YzzANz0MJW8iB3udT29ps7t6dN5OB+WM0YBhHR/ejOcqntTxjY0xRh2jxODUJEFo+TBVoGFgwisnicLNAysGAQkcXjZIGWgQWDiCwel0u1DCwYRGRWcuZ+4mSBloFdUkRkNvff/USmxCsMIjIbdj9ZFxYMIjIbdj9ZFxYMIjIbdj9ZFxYMIjIbdj9ZF1kFY9++fbh06RIAoKioCC+99BJefvllFBUVGTM2IrJx7H6yLrIKxv79++Hr6wsA+PjjjzFt2jTMmDED27ZtM2ZsRGTFuFSq7ZFVMOrq6uDm5ob6+npcunQJU6ZMQXR0NMrKyowdHxFZoZZ22WvXlBBCIbXLdlQ0yDrIKhgqlQqFhYU4duwYhg8fDgcHB9TV1cHBgUMgRNQW22Vtk6wP7sXFxeHdd9+FUqnEq6++CgDIy8vD0KFDjRocEVkntsvaJlkFY8yYMdi0aVOrbeHh4QgPDzdKUERk3fz8dLh2re0/L2yXtW4dFozvv/9e1gH69OljsGCIyDYkJVW3mvIDYLusLeiwYCxYsEDWAT799FODBUNElk/OUqktj+UsqUrWo8OCwUJARD/GyQLtG9uciEg2dj/Ztw6vMN58800oFIouD7B8+XKDBkRElovdT/atw4IRHR1tyjiIyAqw+8m+dVgwoqKiTBgGEVkDdj/ZN9kr7t26dQslJSWorq6GEELazisRItvRVQcUu5/sm6yCcfLkSaxfvx4PPPAArly5gv79++PKlSsYNmwYCwaRjZDbAcXuJ/slq0vq008/RXx8PFJSUuDi4oKUlBTMnTsXgwcPNnZ8RGQi7ICirsgqGBqNBhMmTGi1LTIyEjk5OUYJiohMjx1Q1BVZBcPDwwO3bt0CAPj4+KCoqAjff/899Hp9F68kImvB5VKpK7IKRkxMDM6fPw8AmDp1KpYvX47FixfjF7/4hVGDIyLT4XKp1BVZg97Tp0+Xvo+MjERISAju3LmDfv36GS0wIjItdkBRV2RdYVy6dAkajUZ6rFar4eLiIq3zTUSWjculkiHIKhjr16+HTtf6PmZTUxM2bNhglKCIyHA+/tiBy6WSQci6JaXRaNqse9G3b1/cvHlT1kkaGhqwdOlSNDU1QafTITw8HDNnzkR5eTnS0tJQU1ODwYMHY/78+VAqlWhsbMSGDRtQWlqKXr16YeHChfD19e3+uyMivPmmI+rrW88L19IuyysI6g5ZVxje3t4oLS1tta20tBReXl6yTtKjRw8sXboUq1evRkpKCs6cOYOioiJ89NFHmDp1KtatW4eePXsiMzMTAJCZmYmePXti/fr1mDp1Knbu3NnNt0VELa5caX8722Wpu2QVjKlTp2L16tX48ssvkZeXhy+//BJr1qzBtGnTZJ1EoVDAxcUFAKDT6aDT6aBQKFBQUCAt8xoVFYXc3FwAwKlTp6S5rMLDw3H27NlW05EQkXz9+7e/ne2y1F2ybknFxsZKVwAVFRVQqVT4r//6r26t6a3X65GYmIgbN27g0UcfRZ8+feDm5gZHx+a/cry9vaHVagEAWq0WKpUKAODo6Ag3NzdUV1fDw8Oj1TEzMjKQkZEBAEhOToZarYZSqYRarZYdl61iHpiDFqtWCbzwAlBX98NtKTc3gVWrYDf54c+CYXIge/LBCRMmtPm0d3c4ODhg9erVqK2txZo1a3Dt2rUO923vaqK9tTliY2MRGxsrPdZoNFCr1a06uuwV82AfOZCzXOrMmWrculXbZr9HHqmHjadHYg8/C13pKAd+fn6yjyG7YBhKz549ERwcjOLiYtTV1UGn08HR0RFarRbe3t4AAJVKJV3J6HQ61NXVwd3d3dShElk0LpdKpmaSJVpv376N2tpaAM0dU9999x38/f0REhKCEydOAACysrIQGhoKABg7diyysrIAACdOnEBISIis1f+I7AknCyRTM8kVRmVlJdLT06HX6yGEwIQJEzB27Fj069cPaWlp+OSTTzB48GBpqvTo6Ghs2LAB8+fPh7u7OxYuXGiKMImsCicLJFNTiA7aj15//XWsWrUKAPDXv/4VTz75pEkD+ynKysp4r/LfmAfbz8G4cb7tLpfq79+EkyfLpce2ngc5mAPDjGF0eEuqrKwMDQ0NAIB9+/b9hPCIyJg4WSCZWoe3pMLCwvDKK6/A19dX+qR2e5YvX2604IioY5wskEytw4IRHx+P8+fPo7y8HCUlJXj44YdNGReRXZPTLguw+4lMq9NB72HDhmHYsGFoamqSPnlNRMbVnXZZIlOS1SUVHR2Ns2fPIicnB5WVlfDy8kJERARGjBhh7PiI7E5n7bIsGGROsj6HcejQIaSlpaF3794YN24cvLy88Kc//UmaloOIDIftsmSpZF1hfP7551iyZAkGDRokbZs4cSLWrl3bamoOIrp/fn66dttlOVkgmZusK4zq6uo2y7H6+fmhpqbGKEER2TO2y5KlklUwhg0bhu3bt+Pu3bsAgDt37mDHjh0ICgoyanBEtkbOUqkzZtQjJaUK/v5NUCgE/P2bkJJSxfELMjtZt6R++9vfIi0tDc899xzc3d1RU1ODoKAgvPLKK8aOj8hmcLJAsnayCoaXlxeWL1+OiooKqUuqZb0KIpKH3U9k7bo1+aBKpWKhIPqJ2P1E1s4k05sTUcddTux+ImvBgkFkIux+ImvXZcHQ6/U4e/YsmpqaTBEPkdXqqgOK3U9k7bocw3BwcEBKSgq2b99uiniIrJLcDih2P5E1k3VLavjw4SgqKjJ2LERWi8ulkj2Q1SXl4+ODd955B6GhoVCpVK3W1/71r39ttOCIrAU7oMgeyCoYDQ0NCAsLAwBotVqjBkRkjTj/E9kDWQUjPj7e2HEQWbWkpOpWYxgAO6DI9sj+4N7Vq1dx4sQJVFVVYfbs2SgrK0NjYyMGDhxozPiIrAKXSyV7IGvQ++uvv8bSpUuh1WqRk5MDAKivr2fnFNkFORMGAs1F4+TJcly9eh0nT5azWJDNkXWFsWvXLrzxxhsYNGgQvv76awDAwIEDcenSJWPGRmR2XC6V6AeyrjCqqqra3HpSKBStuqWIbBHbZYl+IKtgBAQESLeiWhw7dgxDhw41SlBEloLtskQ/kHVLatasWVi5ciUyMzNx9+5drFq1CmVlZViyZImx4yMyK7bLEv1AVsHw9/dHWloaTp8+jbFjx0KlUmHs2LFwcXExdnxEZsV2WaIfyJ6t1tnZGcOGDUNwcDCGDx/OYkFWj8ulEnWPrCsMjUaDdevWobi4GD179kRtbS2GDh2KBQsWwMfHx9gxEhkcl0sl6j5ZVxjp6ekICAjA1q1bsXnzZmzduhVDhgxBenq6seMjMgp2PxF1n6yCUVpairi4OOk2lIuLC+Li4lBaWmrU4IiMhd1PRN0nq2AEBgaipKSk1bYLFy4gKCjIKEERGRuXSyXqvg7HMD799FPp+z59+uCdd97BmDFjoFKpUFFRgfz8fEyePNkkQRIZGrufiLqvwyuMiooK6auxsRHjx49Hjx49cPv2bfTo0QPjxo1DQ0ODKWMlkqWl+8nFpQe7n4gMqMMrDENOaa7RaJCeno5bt25BoVAgNjYWjz32GGpqapCamoqbN2/Cx8cHixYtgru7O4QQ2Lp1K/Lz8+Hs7Iz4+HgEBAQYLB6yXex+IjIe2dOb3717Fzdu3MCdO3dabf/Zz37W5WsdHR3x7LPPIiAgAPX19UhKSsKoUaOQlZWFkSNHYvr06di7dy/27t2LuLg45Ofn48aNG1Ir7+bNm/H22293/92R3ems+4nFgej+yCoY2dnZ2LJlC5RKJZycnFo99/7773f5ei8vL3h5eQEAXF1d4e/vD61Wi9zcXCxbtgwAEBkZiWXLliEuLg6nTp1CREQEFAoFgoKCUFtbi8rKSukYRB1h9xOR8cgqGB999BFeffVVjBo16r5PWF5ejosXL2Lo0KGoqqqSioCXlxdu374NoHkZWLVaLb1GpVJBq9W2KRgZGRnIyMgAACQnJ0OtVkOpVLZ6rb2y1zz07w/861/tb7fHfAD2+7NwL+bAMDmQVTCUSiWCg4Pv60QAcOfOHaxduxbPPfcc3NzcOtxPCNFmW3tTqcfGxiI2NlZ6rNFooFarodFo7jtWa2eveVi82LXd7qfFi6ug0djnLSl7/Vm4F3PQcQ78/PxkH0PW5zB+/etfY/v27dIVwE/R1NSEtWvX4qGHHsL48eMBAJ6enqisrAQAVFZWwsPDA0DzFcW9b6yiooK3o0gWdj8RGY+sKww/Pz/s2rULBw8ebPPcvZ/X6IgQAhs3boS/vz+mTZsmbQ8NDUV2djamT5+O7OxshIWFSdsPHDiASZMmobi4GG5ubiwYhN27XWWtmd3S/cS/KokMS1bBWL9+PSIiIjBx4sQ2g95yFBYWIicnBwMGDMDixYsBAE8//TSmT5+O1NRUZGZmQq1WIyEhAQAwevRo5OXlYcGCBXBycjJoiy9ZJy6VSmR+CtHegMGPzJo1C1u2bLH4JVnLysr4V+W/2Voexo3zbXchI3//Jpw8Wd7ua2wtBz8V88AcACYcw4iKimqzRCuRKbFdlsj8ZN2SKikpwYEDB7B792707t271XPLly83SmBE9+JSqUTmJ6tgxMTEICYmxtixEHWIkwUSmZ+sghEVFWXkMMieyel+anksp0uKiIxDVsHIzMzs8Lno6GiDBUP2h5MFElkPWQXjyJEjrR7funULN27cwLBhw1gw6L5wskAi6yGrYCxdurTNtszMTFy7ds3gAZF9YfcTkfWQ1VbbnqioqE5vVRHJwaVSiayHrIKh1+tbfd25cwcZGRno2bOnseMjG5eUVA1XV32rbex+IrJMsm5JPf300222eXt744UXXjB4QGRf2P1EZD1kFYwNGza0euzs7CzNLEvUGbktsywQRJZPVsHw8fExdhxkgzhhIJFt6bRgdDXth0KhwJtvvmnQgMh2sGWWyLZ0WjAeeuihdrdrtVp8+eWXuHv3rlGCItvAllki29Jpwfjxh/Kqq6uxZ88eHDp0CBMnTsQTTzxh1ODIunHCQCLbImsMo66uDp9//jkOHjyIMWPG4I9//CP69u1r7NjIynHCQCLb0mnBaGhowP79+7Fv3z4EBwfjrbfeQv/+/U0VG1kwThhIZH86LRjz5s2DXq/HL3/5SwwZMgRVVVWoqqpqtc+IESOMGiBZHk4YSGSfOi0YLet3/+Mf/2j3eYVC0eYzGmT72P1EZJ86LRjp6emmioOsCLufiOzTT558kOwXJwwksk8sGNRtnDCQyD6xYFAru3e7Ytw4X/Tr9wDGjfPF7t2ubfaZMaMeKSlV8PdvgkIh4O/fhJSUKo5fENk4WZ/DIPvA7ici6gyvMEjSWfcTERELBknY/UREnWHBIAm7n4ioMywYJGH3ExF1hoPeJOHcT0TUGRYMOyFnskCA3U9E1DEWDDvApVKJyBA4hmEH2C5LRIbAgmEH2C5LRIZgkltS7733HvLy8uDp6Ym1a9cCAGpqapCamoqbN2/Cx8cHixYtgru7O4QQ2Lp1K/Lz8+Hs7Iz4+HgEBASYIkybxRZgSF8AAA3DSURBVKVSicgQTHKFERUVhT/84Q+ttu3duxcjR47EunXrMHLkSOzduxcAkJ+fjxs3bmDdunWYO3cuNm/ebIoQbRrbZYnIEExSMIKDg+Hu7t5qW25uLiIjIwEAkZGRyM3NBQCcOnUKERERUCgUCAoKQm1tLSorK00RplXiZIFEZCpm65KqqqqCl5cXAMDLywu3b98GAGi1WqjVamk/lUoFrVYr7XuvjIwMZGRkAACSk5OhVquhVCpbvd6WffyxAxITHVFXpwDQ3P2UmNgbvXr1wrPPOrTKw9y5wNy5egAtVxo9//1lu+zpZ6EzzANzABgmBxbXViuEaLNNoVC0u29sbCxiY2OlxxqNBmq1GhqNxmjxWZLXX/eVikWLujoFXn8dePrpJrvJQ0fs6WehM8wDcwB0nAM/Pz/ZxzBbl5Snp6d0q6myshIeHh4Amq8o7n1TFRUV7V5dELufiMi0zFYwQkNDkZ2dDQDIzs5GWFiYtD0nJwdCCBQVFcHNzY0FowOcLJCITMkkt6TS0tJw7tw5VFdX48UXX8TMmTMxffp0pKamIjMzE2q1GgkJCQCA0aNHIy8vDwsWLICTkxPi4+NNEaJVSkqqbvUJbuDe7ifbHp8gItNTiPYGDaxUWVmZTd2rlDP/U0f72FIefirmoBnzwBwAhhnDsLhBb2omd/4nThZIRKbCqUEsFOd/IiJLw4JhodgBRUSWhgXDQrEDiogsDQuGheL8T0RkaTjobaG4XCoRWRoWDDPgcqlEZI1YMEyMy6USkbXiGIaJsV2WiKwVC4aJsV2WiKwVC4aJsV2WiKwVC4aJsV2WiKwVC4YBcblUIrJl7JIykO50P7FdloisEa8wDITdT0Rk61gwDITdT0Rk61gwDITdT0Rk61gwDITdT0Rk6zjobSCcLJCIbB0LhgycLJCIiAWjS5wskIioGccwusB2WSKiZiwYXWC7LBFRMxaMLrBdloioGQtGF9guS0TUzK4LBicLJCKSz267pDhZIBFR99jtFQa7n4iIusduCwa7n4iIusduCwa7n4iIusduCwa7n4iIusduB705WSARUffYbcEA2P1ERNQddntLioiIusdirzDOnDmDrVu3Qq/XIyYmBtOnTzd3SEREds0irzD0ej0++OAD/OEPf0BqaiqOHTuGq1evmjssIiK7ZpEFo6SkBH379kWfPn2gVCoxceJE5ObmmjssIiK7ZpG3pLRaLVQqlfRYpVKhuLi4zX4ZGRnIyMgAACQnJ0OtVkOpVEKtVpssVkvFPDAHLZgH5gAwTA4ssmAIIdpsUygUbbbFxsYiNjZWeuzk5NTqv/aOeWAOWjAPzAFw/zmwyFtSKpUKFRUV0uOKigp4eXnJem1SUpKxwrIqzANz0IJ5YA4Aw+TAIgvGkCFDcP36dZSXl6OpqQnHjx9HaGioucMiIrJrFnlLytHREc8//zxWrVoFvV6Phx9+GP379zd3WEREds0iCwYAjBkzBmPGjOn26+4d07BnzANz0IJ5YA4Aw+RAIdobYSYiIvoRixzDICIiy8OCQUREsljsGMZPYS/zT7333nvIy8uDp6cn1q5dCwCoqalBamoqbt68CR8fHyxatAju7u4QQmDr1q3Iz8+Hs7Mz4uPjERAQYOZ3cP80Gg3S09Nx69YtKBQKxMbG4rHHHrO7PDQ0NGDp0qVoamqCTqdDeHg4Zs6cifLycqSlpaGmpgaDBw/G/PnzoVQq0djYiA0bNqC0tBS9evXCwoUL4evra+63YRB6vR5JSUnw9vZGUlKSXeZg3rx5cHFxgYODAxwdHZGcnGzY3wlhI3Q6nXj55ZfFjRs3RGNjo/jd734nrly5Yu6wjKKgoEBcuHBBJCQkSNt27Ngh9uzZI4QQYs+ePWLHjh1CCCFOnz4tVq1aJfR6vSgsLBS///3vzRKzoWm1WnHhwgUhhBB1dXViwYIF4sqVK3aXB71eL+rr64UQQjQ2Norf//73orCwUKxdu1YcPXpUCCHEpk2bxMGDB4UQQhw4cEBs2rRJCCHE0aNHxbvvvmuewI3giy++EGlpaeKdd94RQgi7zEF8fLyoqqpqtc2QvxM2c0vKnuafCg4Ohru7e6ttubm5iIyMBABERkZK7/3UqVOIiIiAQqFAUFAQamtrUVlZafKYDc3Ly0v6a8jV1RX+/v7QarV2lweFQgEXFxcAgE6ng06ng0KhQEFBAcLDwwEAUVFRrfIQFRUFAAgPD8fZs2fbnVnB2lRUVCAvLw8xMTEAmmeLsLccdMSQvxM2UzDam39Kq9WaMSLTqqqqkj4N7+Xlhdu3bwNozsu988fYYl7Ky8tx8eJFDB061C7zoNfrsXjxYsyZMwcjR45Enz594ObmBkdHRwCAt7e39F7v/T1xdHSEm5sbqqutf1nibdu2IS4uTppCqLq62u5y0GLVqlVITEyU5tkz5O+EzYxhtPcXQnvzT9kbW8/LnTt3sHbtWjz33HNwc3PrcD9bzoODgwNWr16N2tparFmzBteuXetwX1vMw+nTp+Hp6YmAgAAUFBR0ub8t5qDFihUr4O3tjaqqKqxcuRJ+fn4d7vtT8mAzBeN+5p+yBZ6enqisrISXlxcqKyvh4eEBoDkvGo1G2s+W8tLU1IS1a9fioYcewvjx4wHYZx5a9OzZE8HBwSguLkZdXR10Oh0cHR2h1Wrh7e0N4IffE5VKBZ1Oh7q6uja3N61NYWEhTp06hfz8fDQ0NKC+vh7btm2zqxy0aHmPnp6eCAsLQ0lJiUF/J2zmlpS9zz8VGhqK7OxsAEB2djbCwsKk7Tk5ORBCoKioCG5ubjbxD6UQAhs3boS/vz+mTZsmbbe3PNy+fRu1tbUAmjumvvvuO/j7+yMkJAQnTpwAAGRlZUm/C2PHjkVWVhYA4MSJEwgJCbH6v65/85vfYOPGjUhPT8fChQsxYsQILFiwwK5yADRfbdfX10vff/vttxgwYIBBfyds6pPeeXl5+PDDD6X5p2bMmGHukIwiLS0N586dQ3V1NTw9PTFz5kyEhYUhNTUVGo0GarUaCQkJUuvcBx98gG+++QZOTk6Ij4/HkCFDzP0W7tv58+fx5ptvYsCAAdIv+9NPP43AwEC7ysPly5eRnp4OvV4PIQQmTJiAJ554At9//32bltIePXqgoaEBGzZswMWLF+Hu7o6FCxeiT58+5n4bBlNQUIAvvvgCSUlJdpeD77//HmvWrAHQ3AAxefJkzJgxA9XV1Qb7nbCpgkFERMZjM7ekiIjIuFgwiIhIFhYMIiKShQWDiIhkYcEgIiJZWDCILFxBQQFefPFFc4dBxIJBtm3evHn49ttvjX6eXbt2Yd26dUY/D5E5sWAQEZEsNjOXFFFXsrKycOjQIQQGBuLw4cNwc3PDnDlzMHr0aADAsmXLEBQUhO+++w5lZWUICQlBfHw83N3dUVBQgPXr12Pjxo3S8ebNm4cXXngBer0ee/bsAdA8lXTfvn2xevXqVufeu3cvLly4gFdffVXatnXrVggh8Pzzz+Pw4cP4/PPPUVFRAQ8PD/zqV7/CI4880u77mDlzJtatW4e+ffsCANLT06FSqfDUU08BaJ6M75NPPsHNmzfRr18//Pa3v8XAgQMNl0iyW7zCILtSUlICPz8/fPDBB/jVr36FjRs3tpq1Mzs7Gy+99BI2bdoEBwcHbNmypctjPvjgg3j88ccxYcIE7Nixo02xAIBJkyYhPz8fdXV1AJqnJP/6668xefJkAM2TxSUmJuLDDz9EfHw8PvzwQ5SWlnb7/ZWWluL999/H3LlzsWXLFsTGxiIlJQWNjY3dPhbRj7FgkF1Rq9WIjY2Fg4MDIiMjUVlZiaqqKun5iIgIDBgwAC4uLnjqqafw9ddfQ6/X3/d5fXx8MHjwYGnxmrNnz8LZ2RlBQUEAgDFjxqBv375QKBQIDg7GqFGjcP78+W6f59ChQ4iNjUVgYCAcHBwQFRUFpVKJ4uLi+34PRLwlRXald+/e0vfOzs4Ammf2bHHvIlxqtRo6nU5acOZ+TZ48GceOHUNkZCSOHj2KSZMmSc/l5+fjs88+Q1lZGYQQuHv3LgYMGNDtc2g0GmRnZ+PAgQPStqamJptZLIrMiwWD6B73rqmi0Wjg6OgIDw8PaDQa3L17V3pOr9e3KiRypseeMGECtm/fjoqKCpw8eRIrV64EADQ2NmLt2rV4+eWXERoaCqVSiZSUlA6P4+zs3CqWW7duSYVOpVJhxowZNjtTM5kXb0kR3ePIkSO4evUq7t69i127diE8PBwODg7w8/NDY2Mj8vLy0NTUhL/97W+txgU8PT1x8+bNTm9feXh4ICQkBO+99x58fX3Rr18/AM1XAI2NjfDw8ICjoyPy8/M7bQUeNGgQjh49Cr1ejzNnzuDcuXPSczExMfjqq69QXFwMIQTu3LmDvLw8aZ0EovvBKwyie0RERCA9PR1lZWUYPnw44uPjAUDqqNq4cSP0ej1++ctftrp9NWHCBBw5cgSzZ8+Gr68v/vjHP7Z7/MmTJ2PDhg2Ii4uTtrm6umLWrFlITU1FY2Mjxo4d2+niX8899xzS09Nx8OBBhIWFSQviAM0Lib3wwgvYsmULrl+/DicnJwwbNgzDhw+/39QQcT0MohbLli3DQw89hJiYGHOHQmSReEuKiIhkYcEgIiJZeEuKiIhk4RUGERHJwoJBRESysGAQEZEsLBhERCQLCwYREcny//gLetZxDjE+AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "@count\n", "def slow_exp(n):\n", " \"\"\"Return 2 to the n.\n", "\n", " >>> slow_exp(10)\n", " 1024\n", " \"\"\"\n", " if n == 0:\n", " return 1\n", " else:\n", " return 2 * slow_exp(n-1)\n", " \n", "call_on_values(slow_exp, [10, 15, 20, 25, 100, 200, 1000])\n", "create_graph(slow_exp, range(20, 500, 15), 'slow exp')" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of calls for n=10: 6\n", "Number of calls for n=15: 8\n", "Number of calls for n=20: 7\n", "Number of calls for n=25: 8\n", "Number of calls for n=100: 10\n", "Number of calls for n=200: 11\n", "Number of calls for n=1000: 16\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sq = lambda x: x * x\n", "\n", "@count\n", "def fast_exp(n):\n", " \"\"\"Return 2 to the n.\n", "\n", " >>> fast_exp(10)\n", " 1024\n", " \"\"\"\n", " if n == 0:\n", " return 1\n", " elif n % 2 == 0:\n", " return sq(fast_exp(n // 2))\n", " else:\n", " return 2 * fast_exp(n - 1)\n", " \n", "call_on_values(fast_exp, [10, 15, 20, 25, 100, 200, 1000])\n", "create_graph(fast_exp, range(20, 10000), 'fast exp')" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAEaCAYAAAD3+OukAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deXxU5bnA8d9MJhvZV0LCJhB2UFkEFVnjctVS5VoQpV5Qr0soqFg1dQOtVKSmUFlErYLgrUJttC5VNCxBFAUJWAFZwg4BQlYSsmfe+8eQIcNMkpnJ7PN8P598ksyZc973mUnOM+c9z3mPRimlEEII4Ze07u6AEEII95EkIIQQfkySgBBC+DFJAkII4cckCQghhB+TJCCEEH5MkoDwOl27duWll14y/j569Gjuv/9+N/bI1D/+8Q+6d+9OQEAAU6dOdXd3hGiRJAHhMkVFRTz55JP06tWLkJAQEhMTGTlyJCtXrqS+vt5t/XrppZfo2rWrQ7bV0NDAvffey8SJEzl27Bh//etfHbJdnU7HihUrHLItIZrSubsDwj+cOHGCa6+9Fp1Ox4svvsiVV15JYGAg3333Ha+++ioDBw7kiiuucHc32+zUqVNUVFRw8803k5KS4u7uCNEqORIQLvHwww9TU1NDbm4ud999N3379iU1NZX/+Z//Yfv27aSmpgLw9ddfM3r0aGJjY4mKimLUqFFs3brVprY2b97MtddeS0REBBEREVx++eWsXbvW4nNXrFjBc889x9GjR9FoNGg0GubMmQNAeXk5Dz74IAkJCYSEhDBkyBC++uqrZttdsWIFnTp1AmDkyJFoNBo2btxISUkJU6ZMoXPnzoSGhtKrVy8yMzNperH+7t27ufHGG4mOjiYsLIw+ffqwatUqwDD81dDQwLRp04x9bMmiRYvo3bs3ISEhpKamMnfuXOORVl5eHpGRkSxYsMD4/F9++YWwsDBef/11Yxw6nY7s7Gz69etHSEgIV111Fbm5ua288sIrKSGcrKioSGm1WvXHP/6x1edmZWWpNWvWqH379qldu3ap++67T8XExKjCwkLjc7p06WKyrVGjRqn77rtPKaVUfX29iomJUY899pjav3+/2r9/v8rKylKbNm2y2F5lZaV66qmnVMeOHdWpU6fUqVOnVHl5uVJKqTvuuEN16dJFffnll2rPnj1q5syZKjAwUP3yyy/Nbmvr1q0KUP/617/UqVOnVE1NjTp16pSaN2+e2r59uzp06JBatWqVCgsLU++8845x3QEDBqjJkyer3bt3q4MHD6p///vf6tNPP1VKKVVQUKACAgLUwoULjX1szuzZs1Xnzp1VVlaWOnTokPr8889Vp06d1LPPPmt8znvvvaeCgoLU9u3bVVVVlRowYICaMGGCcfny5cuVRqNRV155pdq4caP66aef1C233KKSkpLU+fPnm21beCdJAsLpfvjhBwWof/7znzav29DQoKKjo9V7771nfKylJFBcXKwAtWHDBqvb+OMf/6i6dOli8tiBAwcUoD7//HOTx6+88ko1bdq0Zrd1+PBhBahvvvmmxTZnzpyp0tLSjL9HRkaq5cuXN/v8gICAFpcrpdT58+dVaGio+uKLL0wef/fdd1VUVJTJY1OnTlWpqalq6tSpqkuXLqqkpMS4bPny5QpQ2dnZxseKi4tVWFiYeuutt1rsg/A+ck5AOJ26MOzR2jAGwOHDh3n++efZsmULBQUF6PV6KisrOXr0qFVtxcTEcP/993PjjTcyduxYRo0axe23306vXr1s6vOePXsAw7BOUyNHjmTLli02bUuv1zN//nw++OADTpw4QXV1NXV1dXTp0sX4nN///vfcf//9rFixgtGjRzN+/HgGDRpkUzu7d++mqqqK//7v/zZ5rRsaGqiurubs2bMkJCQAsHjxYgYMGMDKlSvZvHkz0dHRZtu7+uqrjT/HxMTQp08f4+sifIecExBOl5qailarZffu3a0+99Zbb+XYsWMsWbKE77//np07d5KYmEhtba3V7b311lts376d66+/npycHPr3788bb7zRlhCMlFJWJbOmMjMzefnll5kxYwZff/01O3fu5P777zeJ6bnnnmP//v1MnDiRXbt2MXz4cJ599lmb2tHr9YChRHXnzp3Gr59//pkDBw4QGxtrfG5eXh75+floNBry8vKs2r6SCYd9kiQB4XSxsbH813/9F4sXL6asrMxseV1dHefPn6eoqIg9e/aQkZHBjTfeSN++fQkJCaGgoMDmNvv378+sWbP44osvuO+++3jzzTebfW5QUBANDQ0mj/Xr1w+ATZs2mTz+zTffGJdZa9OmTdx0003cd999XHnllfTo0YMDBw6YPa9bt26kp6fz4Ycf8uKLLxpP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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import math\n", "create_graph(fast_exp, range(20, 10000), 'fast exp', range(1, 11000), [math.log(x, 1.55) for x in range(1, 11000)])" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAf0AAAH0CAYAAAA3w/RAAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdeXxU1f3/8deZrCRhyUrYCZsKyCJBWaxgRP0qfiultrbVtq7fChYVaxXbr1o3xIqCirUugK22X63+FG2tWjGyg4Issm8h7JBlQkISSDKZ8/vjJhMi20BmMlnez8eDx9x77p25n7mgnznLPcdYay0iIiLS5LlCHYCIiIjUDyV9ERGRZkJJX0REpJlQ0hcREWkmlPRFRESaCSV9ERGRZkJJXyTARo4cyW233RbqMJqkrl278sQTT4Q6DJFGS0lfxE/GmFP+6dq1KwDvv/8+zz33XEhifOuttzDGhOTaItLwhYc6AJHGYv/+/b7tr7/+mmuvvZavv/6aTp06ARAWFgZAQkJCSOILNmstHo+HiIiIUIciImdJNX0RP6Wmpvr+VCf25ORkX1lycjJwfPP+yJEjufXWW/nf//1fUlJSaNOmDb///e/xer089thjtG3bluTkZH7/+9/Xup7H4+EPf/gDaWlpREdH06dPH1555ZWTxjdv3jx+/vOfAzWtEjfddBMAFRUVTJo0iQ4dOhAZGUnv3r35+9//fsrv+8YbbxAeHs6XX37JwIEDiYqK4rPPPuMPf/gDPXr0qHXuokWLMMaQnZ1d672LFy/mggsuICYmhsGDB/PNN9+c8prr16/nyiuvpE2bNsTGxnLeeefx5ptvnvT8w4cP86tf/Yrk5GSio6NJT0/nP//5j+/4jTfeyI033ujbnz17NsYYXn/9dV/ZL3/5S3784x+fMq5qBw8e5KabbiI5OZmWLVsyfPhwFixY4Dv+9NNP06ZNG999AHj00UdJTExkz549gPPv4ZZbbmHSpEkkJSXRqlUrbrvtNo4cOeJXDCJ1oaQvUg/ee+89KioqWLRoEc899xyTJ0/mmmuuobi4mIULFzJ16lQmT57MJ5984nvPbbfdxvvvv88rr7zCxo0befjhh3nggQeYOXPmCa8xbNgwZsyYATitEvv37+f5558H4He/+x2vvfYa06dPZ926db5k+MUXX5wybq/Xy/3338+zzz7Lpk2buOiii/z+zl6vlwcffJDnn3+elStXEh8fz49//GM8Hs9J3/PTn/6UxMRElixZwtq1a3nuueeIj48/6fm33HILn332GW+99RarVq1i+PDhXHPNNWzatAmAjIwMMjMzfednZmaSnJxc63t/+eWXZGRknPb7HDlyhEsvvZTDhw/zySefsGrVKq6++mouv/xyNm7cCMD999/PRRddxE9/+lM8Hg8LFy7kiSeeYPbs2XTs2NH3We+99x75+fksXLiQv/3tb3z00Uc88MADp41BpM6siJyxhQsXWsDu2LHjuGMjRoywt956a639/v371zqnd+/etm/fvrXK+vXrZ3/zm99Ya63Nysqyxhi7cePGWuc8+uijx33Wsd5880373f+sS0pKbGRkpH3ppZdqlY8ZM8ZeeumlJ/2s2bNnW8AuWLCgVvkjjzxiu3fvXqvsu/ej+r3ffPON75ylS5dawG7atOmk12zVqpWdPXv2SY936dLFPv7449Zaa7du3WoB+/HHH9c6Z+DAgfbmm2+21lqbnZ1tAbt+/XprrbUdOnSwU6dOtSkpKdZaa7ds2WIBu3nz5pNes9rs2bNthw4dbEVFRa3ySy+91N59992+/YMHD9rU1FQ7btw427FjR3vXXXfVOn/EiBG2S5cu1uPx+MpeeeUVGxkZaYuLi08bh0hdqE9fpB7079+/1n51l8B3y3JycgBYsWIF1lrS09NrnePxeHxjB/y1bds2ysvLueSSS2qVjxgxgqeeeuq07x88ePAZXa+aMabW9+7QoQPgNJGfc845J3zPfffdx2233cYbb7zByJEj+f73v88FF1xwwnM3bNgAcNz3uuSSS1i6dCkAXbp0IS0tjczMTMLCwjh06BDjx4/nscceY926dSxevJgOHTrQq1ev036f5cuXc+DAAdq0aVOrvKysjBYtWvj2U1JSmDVrFldffTX9+/fnj3/843GfdeGFF9b6exw+fDjl5eVs376dfv36nTYWkbOlpC9SD747+M0Yc8Iyr9cL4HtdsmQJMTExx513Nr77PmvtaT8rLCyM6OjoWmUulwv7ncU5Kyoqjnuvy+Wqldiqr1X93U7koYce4oYbbuDTTz8lMzOTyZMnc//995/RY3rf/V4ZGRl88cUXhIWFcfHFF9OiRQsuueQSvvjiC5YsWeJX03513Oeddx4ffPDBcce++3c0f/58wsLCOHjwIIWFhaSkpJw2ZpH6oD59kQZo0KBBAOzatYsePXrU+tO9e/eTvi8yMhKAyspKX1mPHj2Iiopi/vz5tc5dsGABffr0OePYUlJSyMnJqXWNlStXnvHnnEy3bt0YP3487733Ho899hgvv/zyCc+rjv3YgXQACxcurPW9MjIymD9/PnPnzuWyyy7zlX3xxRfMmzfP76Sfnp5OVlYWrVq1Ou7vpH379r7z5s6dy9SpU/noo4/o0qULv/zlL49L6suXL691/5YuXUpkZOQp/25FAkFJX6QB6tGjB7fccgu33347b775Jtu2bWPNmjXMmjWLp59++qTvS0tLA+Cjjz4iNzeX4uJiYmJiuOuuu3jooYd499132bp1K5MnT+bDDz/kd7/73RnHdumll1JaWspDDz3E9u3beffdd3nppZfO+rtWKy4u5s477yQzM5MdO3awatUqPv30U3r37n3C87t3786PfvQjxo8fz2effcamTZu4++67WbduHb/97W9952VkZFBQUMBHH33kS/AZGRl88skn5OTk+J30b7jhBtLS0hg9ejT/+c9/yM7O5quvvuKpp55izpw5AOTm5vLzn/+c++67j6uvvpr/+7//Y8mSJcfN25Cfn8+dd97Jxo0b+fjjj3nooYe4/fbbiY2NPZtbJ+I3JX2RBurVV19l4sSJPPnkk/Tu3ZvLLruMv/zlL3Tr1u2k7xk8eDB33303d9xxB23btuXXv/41AE8++SS3334799xzD3369OGtt97irbfe8tV8z8Q555zDa6+9xttvv03fvn2ZNWsWkydPPuvvWS08PJyCggJuvfVWzjvvPK688kratm17ykcLX3/9da688kpuvPFG+vfvz+LFi/nXv/7Fueee6zsnNTWV3r1707JlSwYOHAhAv379aNOmDd27d6dz585+xRcdHc38+fNJT0/n5ptvplevXowdO5avv/6aLl26YK3lpptuokuXLjz++OOA8yPsz3/+M7/73e9YsWKF77Ouu+46WrZsycUXX8xPfvITrr766hP2/YsEmrHqTBIRqTcjR46kR48eteYKEKkvqumLiIg0E0r6IiLAVVddRVxc3An/XHXVVaEOTyQg1LwvIgLs3bv3pFPhtmjRwjfPgEhjpqQvIiLSTKh5X0REpJlQ0hcREWkmmsU0vPv27fNtJyUl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NtxpJgW+iIi0VQp9ERGRKKHQFxERiRIKfRERkSih0BcREYkSCn0REZEoodAXERGJEgp9ERGRKKHQFxERiRJtckW+vLw8FixYgOM4TJw4kUmTJkW6JBERkVavzfX0HcfhxRdf5LHHHmP27Nl88skn7N69O9JliYiItHptLvS3bdtGjx496N69O7GxsVxyySXk5OREuiwREZFWr82Fvt/vJzU1Nfg4NTUVv98fwYpERETahjZ3Tt9ae9Sxb26Cs2TJEpYsWQLAzJkzSUtLCz4XGxvb6LGcPrVpaKk9Q09tGnpq09ALR5u2udBPTU2luLg4+Li4uBifr/G+9pmZmWRmZgYfFxUVBe+npaU1eiynT20aWmrP0FObhp7aNPRC2aa9evU65vE2N7w/YMAA9u7dy/79+6mpqWHFihVkZGREuiwREZFWr8319GNiYrjjjjt48skncRyHyy67jL59+0a6LBERkVavzYU+wIgRIxgxYkSkyxAREWlTjD3WzDgRERFpd9rcOf3TNX369EiX0O6oTUNL7Rl6atPQU5uGXjjaNOpCX0REJFop9EVERKJEzIwZM2ZEuohw69+/f6RLaHfUpqGl9gw9tWnoqU1Dr6XbVBP5REREooSG90VERKJEm7xO/1Tk5eWxYMECHMdh4sSJTJo0KdIltQnPPfcca9euJTk5mVmzZgEQCASYPXs2hYWFdO3alQceeACv14u1lgULFpCbm0t8fDxZWVka/juGoqIi5s2bR2lpKcYYMjMzueqqq9Sup+Hw4cP8/Oc/p6amhtraWkaNGsXNN9/M/v37efbZZwkEAvTr148f//jHxMbGUl1dzdy5c9mxYwedO3fm/vvvp1u3bpH+GK2O4zhMnz6dlJQUpk+frvYMgXvvvZeEhAQ8Hg8xMTHMnDkzvP/3bRSora219913n923b5+trq62P/3pT+2uXbsiXVabUFBQYLdv324ffPDB4LFXXnnFvvHGG9Zaa9944w37yiuvWGutXbNmjX3yySet4zh28+bN9tFHH41Iza2d3++327dvt9ZaW1VVZadNm2Z37dqldj0NjuPYAwcOWGutra6uto8++qjdvHmznTVrll2+fLm11trnn3/evvvuu9Zaa9955x37/PPPW2utXb58uf3d734XmcJbubfffts+++yz9te//rW11qo9QyArK8uWlZU1OhbO//tRMby/bds2evToQffu3YmNjeWSSy4hJycn0mW1CYMHD8br9TY6lpOTw/jx4wEYP358sC1Xr17NuHHjMMYwaNAgKisrKSkpCXvNrZ3P5wt+W+/YsSO9e/fG7/erXU+DMYaEhAQAamtrqa2txRhDQUEBo0aNAmDChAmN2nTChAkAjBo1ig0bNhxzB89oVlxczNq1a5k4cSLg7nCq9mwZ4fy/HxWh7/f7SU1NDT5OTU3F7/dHsKK2raysLLizoc/no7y8HHDb+chtIdXOJ7d//3527tzJWWedpXY9TY7j8PDDD3PnnXcydOhQunfvTmJiIjExMQCkpKQE2+3IvwkxMTEkJiZSUVERsdpbo5dffpkpU6YEty6vqKhQe4bIk08+ySOPPBLcAj6c//ej4pz+sb5x1v9DltBROzfPwYMHmTVrFlOnTiUxMfG4r1O7No3H4+GZZ56hsrKS3/72t3z11VfHfa3a9MTWrFlDcnIy/fv3p6Cg4KSvV3s23a9+9StSUlIoKyvjiSeeOO4WuNAy7RoVoZ+amkpxcXHwcXFxcfBblTRfcnIyJSUl+Hw+SkpKSEpKAtx2PnIvaLXz8dXU1DBr1izGjh3LxRdfDKhdQ6VTp04MHjyYrVu3UlVVRW1tLTExMfj9flJSUoCGvwmpqanU1tZSVVV11GmsaLZ582ZWr15Nbm4uhw8f5sCBA7z88stqzxCob7Pk5GRGjhzJtm3bwvp/PyqG9wcMGMDevXvZv38/NTU1rFixgoyMjEiX1WZlZGSQnZ0NQHZ2NiNHjgwe/+ijj7DWsmXLFhITExVOx2CtZf78+fTu3ZtrrrkmeFzteurKy8uprKwE3Jn869evp3fv3gwZMoSVK1cCsGzZsuD/+wsvvJBly5YBsHLlSoYMGaKe6RFuu+025s+fz7x587j//vs577zzmDZtmtrzNB08eJADBw4E769bt4709PSw/t+PmsV51q5dy8KFC3Ech8suu4zJkydHuqQ24dlnn2Xjxo1UVFSQnJzMzTffzMiRI5k9ezZFRUWkpaXx4IMPBi8vefHFF8nPzycuLo6srCwGDBgQ6Y/Q6mzatInHH3+c9PT04B/GW2+9lYEDB6pdT9EXX3zBvHnzcBwHay2jR4/mxhtv5Ouvvz7qErMOHTpw+PBh5s6dy86dO/F6vdx///1079490h+jVSooKODtt99m+vTpas/T9PXXX/Pb3/4WcCecjhkzhsmTJ1NRURG2//tRE/oiIiLRLiqG90VEREShLyIiEjUU+iIiIlFCoS8iIhIlFPoiIiJRQqEvIq1WQUEB99xzT6TLEGk3FPoi7dS9997LunXrWvz3vP7668yZM6fFf4+InD6FvoiISJSIirX3RaLdsmXLWLp0KQMHDuTDDz8kMTGRO++8kwsuuACAGTNmMGjQINavX8+ePXsYMmQIWVlZeL1eCgoK+I//+A/mz58ffL97772Xu+++G8dxeOONNwB3e9AePXrwzDPPNPrdixcvZvv27Tz00EPBYwsWLMBayx133MGHH37IW2+9RXFxMUlJSVx33XVcccUVx/wcN998M3PmzKFHjx4AzJs3j9TUVG655RbA3Sjmtddeo7CwkD59+vDDH/6QM844I3QNKdLGqacvEiW2bdtGr169ePHFF7nuuuuYP39+o128srOz+dGPfsTzzz+Px+PhpZdeOul7Dh8+nOuvv57Ro0fzyiuvHBX4AJdeeim5ublUVVUB7ha4n376KWPGjAHcjUceeeQRFi5cSFZWFgsXLmTHjh3N/nw7duzgP//zP7nrrrt46aWXyMzM5De/+Q3V1dXNfi+R9kqhLxIl0tLSyMzMxOPxMH78eEpKSigrKws+P27cONLT00lISOCWW27h008/xXGc0/69Xbt2pV+/fuTk5ACwYcMG4uPjGTRoEAAjRoygR48eGGMYPHgww4YNY9OmTc3+PUuXLiUzM5OBAwfi8XiYMGECsbGxbN269bQ/g0h7oeF9kSjRpUuX4P34+HjA3emrXmpqavB+WloatbW1lJeXh+R3jxkzhk8++YTx48ezfPlyLr300uBzubm5LFq0iD179mCt5dChQ6Snpzf7dxQVFZGdnc0777wTPFZTU4Pf7w/JZxBpDxT6IgK4e3XXKyoqIiYmhqSkJIqKijh06FDwOcdxGn0ZaMoWqqNHj+b3v/89xcXFrFq1iieeeAKA6upqZs2axX333UdGRgaxsbH85je/Oe77xMfHN6qltLQ0+GUlNTWVyZMnawdNkRPQ8L6IAPDxxx+ze/duDh06xOuvv86oUaPweDz06tWL6upq1q5dS01NDX/+858bnSdPTk6msLDwhKcCkpKSGDJkCM899xzdunWjT58+gNsTr66uJikpiZiYGHJzc094meGZZ57J8uXLcRyHvLw8Nm7cGHxu4sSJvP/++2zduhVrLQcPHmTt2rXB/ctFRD19Eakzbtw45s2bx549ezj33HPJysoCCM70nz9/Po7jcO211zY6FTB69Gg+/vhjfvCDH9CtWzeefvrpY77/mDFjmDt3LlOmTAke69ixI//8z//M7Nmzqa6u5sILLyQjI+O4NU6dOpV58+bx7rvvMnLkSEaOHBl8bsCAAdx999289NJL7N27l7i4OM455xzOPffc020akXbD2COn74pIVJoxYwZjx45l4sSJkS5FRFqQhvdFRESihEJfREQkSmh4X0REJEqopy8iIhIlFPoiIiJRQqEvIiISJRT6IiIiUUKhLyIiEiUU+iIiIlHi/wN2wTyJsZxA9wAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_times('slow_exp', range(20, 500, 2))" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfcAAAH0CAYAAAAg4WSJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOydeZwUxdnHf9Wzu8ByLiyHIB5I1KCCRtSoMYpiEjXxQBM1iUciEiR4Xxg14o1RJBrwQjSKMVHj/SYGgxoQ0QgqiAFBBESUa1mu5dhlp+v9Y6Z7qrurq6t6eg7W5/v5wM50d1U93TPTTz9PPc9TjHPOQRAEQRBEi8EqtQAEQRAEQSQLKXeCIAiCaGGQcicIgiCIFgYpd4IgCIJoYZByJwiCIIgWBil3giAIgmhhkHIniDw55phjMHTo0FKLsdPypz/9Cbvuuissy8Lo0aNLLQ5BtAgY5bkThBzGmHL/7rvvjmXLlqG+vh4VFRXo0KFDkSTL8dRTT+Gcc87Bzvoz/vrrr9G7d2/cf//9GDJkCNq3b4927drl1eeKFSvQu3dvvPXWWzjmmGOSEZQgdjIqSi0AQZQrK1eudF+///77OOWUU/D++++jd+/eAIBUKgUA6Ny5c0nkKzScczQ3N6OysrJgYyxZsgS2bePkk0/GLrvsUrBxCOKbBrnlCSKEHj16uP8cBd61a1d3W9euXQEE3fLHHHMMLrjgAtxwww3o1q0bOnXqhOuvvx62beOWW25B9+7d0bVrV1x//fWe8ZqbmzF69GjsueeeaN26Nfbbbz88/PDDofL95z//wTnnnAMg42VgjOH8888HAOzYsQOjRo1Cr169UFVVhX79+uHpp59Wnu+f//xnVFRU4K233sJBBx2EVq1aYcqUKRg9ejT69u3rOXbGjBlgjGHZsmWetu+88w6+853voLq6Gocccgg++OCD0PFGjx6No446CgCw2267uf0tXboUQ4YMQc+ePVFdXY0DDjgAkydPDox/5JFHon379mjfvj0GDBiAKVOmAID78DVo0CAwxrDHHnsoz9th8eLFOP3009GpUyfU1NTgBz/4AebNm+fuv+iii7DHHntgw4YN7rZf/epX+Na3voXNmzcDAPbYYw9cf/31GDp0KDp06IDa2lpce+21sG1bSwaCSAxOEEQkb7/9NgfAly5dGth39NFH8wsuuMDzvkOHDvyaa67hCxcu5JMmTeIA+AknnMCvvvpqvnDhQv7nP/+ZA+D//Oc/3XbnnXceP+CAA/iUKVP4kiVL+N/+9jfesWNH/uijj0plamxs5OPHj+cA+MqVK/nKlSv5hg0bOOecX3XVVbxz58782Wef5QsXLuS33347Z4zxqVOnhp7j448/zhljfODAgfyNN97gn3/+OV+zZg2/6aab+F577aW8Hk7bo446ik+fPp0vWLCAH3/88bxPnz58x44d0vE2b97Mn3/+eQ6Af/jhh3zlypW8ubmZf/zxx3z8+PF87ty5fPHixfz+++/nqVSKv/nmm5xzzpubm3lNTQ2//PLL+aJFi/iiRYv4Cy+8wKdPn8455/zDDz/kAPjzzz/PV65cydesWRN6zg6rVq3i3bt358OHD+cff/wx//TTT/nIkSN5586d3fbbtm3jBxxwAD/jjDM455z/5S9/4VVVVXz27NluP7vvvjtv3749v/HGG/mnn37Kn3zySV5dXc3Hjh0bKQNBJAkpd4LQwFS5DxgwwHNMv379+P777+/Z1r9/f37llVdyzjlfsmQJZ4zxBQsWeI65+eabA32JTJ48mfuf0bds2cKrqqr4hAkTPNtPPfVUPmjQoNC+Hn/8cQ7AVZIOusodAP/ggw/cY959910OgH/66aehY7711lscAP/yyy9Dj+Gc85NPPpkPHTqUc855fX09B8Dfeust6bFffvmlcr+Mm266iR922GGebbZt8z59+vBx48a52+bPn8+rq6v5qFGjePv27fm9997rabP77rvz733ve55t1113He/Vq5e2LASRBDTnThAFYMCAAZ73jivfv23NmjUAgNmzZ4NzjoEDB3qOaW5uduf2dVm8eDGamprw/e9/37P96KOPxp133hnZ/pBDDjEaz4Ex5jnvXr16AQBWr16NffbZR7ufrVu34pZbbsGrr76KlStXoqmpCY2NjRg0aBAAoKamBkOHDsUPf/hDHHvssTj66KNx2mmnGY3hZ9asWfjggw8CwXzbtm3DZ5995r7/9re/jXvuuQcjRozACSecgMsuuyzQ1+GHH+55f+SRR+LOO+/Epk2bShJ0SXwzIeVOEAXAH4TGGJNuc+Zinb8zZ85EdXV14Lg4+NtxziP7SqVSaN26tWebZVmBaPwdO3YE2lqW5XkQccYynW+++uqr8fLLL2Ps2LHYd9990bZtW1x55ZXYuHGje8zEiRNx6aWX4vXXX8e///1v3HjjjRg/fjx+85vfGI3lYNs2jjvuOIwfPz6wr2PHjp7306dPRyqVwvLly7F9+3a0adNG2bf/2hFEMaCAOoIoAw4++GAAwPLly9G3b1/Pv7322iu0XVVVFQAgnU672/r27YtWrVph2rRpnmOnT5+O/fbbz1i2bt26Yc2aNZ4xPvzwQ+N+dJk+fTp+8Ytf4Mwzz8SAAQPQp08fLFq0KHDc/vvvjyuuuAKvvfYaLrjgAjzyyCMA5NckioEDB+J///sfevXqFbj+TuAkAEyaNAkvvfQSpk2bhq1bt+Lyyy8P9PXee+953r/77rvo2bMnWe1EUSHlThBlQN++ffHrX/8aF154ISZPnozFixdj7ty5eOyxx3DXXXeFtttzzz0BAK+88grWrl2LhoYGVFdX45JLLsGNN96I5557Dp999hnuuOMOvPzyy/jd735nLNugQYOwdetW3Hjjjfj888/x3HPPYcKECbHPNYp99tkHL7/8Mt5//33Mnz8fw4YNw9dff+3uX7x4Ma699lrMmDEDX3zxBd599128/fbb6NevHwCgtrYW7dq1w+uvv45Vq1Zh/fr1kWOOHDkS6XQap556Kt5++20sW7YMM2bMwPXXX4+ZM2cCABYuXIhLL70U48aNw5FHHom//vWvmDRpEp5//nlPX3PmzMHo0aOxaNEiPP3007jvvvukDwEEUUhIuRNEmfDII4/g8ssvx+23345+/frhuOOOwxNPPIE+ffqEtjnkkENw6aWXYvjw4ejevTtGjhwJALj99ttx4YUX4rLLLsN+++2Hp556Ck899RSOO+44Y7n22WcfTJw4EX/729+w//7747HHHsMdd9wR+zyjGDduHHbffXcMGjQIxx13HHr16oUzzjjD3d+2bVt89tlnOOuss7D33nvj9NNPxxFHHOG61C3LwoQJE/Dss8+id+/eOOiggyLH7N69O959913U1tZiyJAh2GefffCLX/wCX3zxBXbZZRc0NjbirLPOwg9/+EMMHz4cAHDYYYfhlltuwdChQ/HFF1+4fV188cX44osvMHDgQIwcORIXXXQRKXei6FCFOoIgiITYY489MHToUNxwww2lFoX4hkOWO0EQBEG0MEi5EwTR4tlvv/3Qrl076T/HzU4QLQlyyxME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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_times('fast_exp', range(20, 1000))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }