438 lines
97 KiB
Plaintext
Executable File
438 lines
97 KiB
Plaintext
Executable File
{
|
|
"nbformat": 4,
|
|
"nbformat_minor": 0,
|
|
"metadata": {
|
|
"colab": {
|
|
"provenance": []
|
|
},
|
|
"kernelspec": {
|
|
"name": "python3",
|
|
"display_name": "Python 3"
|
|
},
|
|
"language_info": {
|
|
"name": "python"
|
|
}
|
|
},
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"from numba import njit\n",
|
|
"import time"
|
|
],
|
|
"metadata": {
|
|
"id": "Qaq--qm2_Qfm"
|
|
},
|
|
"execution_count": 19,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## The Hofstadter-Conway sequence $a(n)$: \n",
|
|
"\n",
|
|
"$a(1) = 1, a(2) = 1, ... , a(n) = a(a(n-1)) + a(n - a(n - 1))$"
|
|
],
|
|
"metadata": {
|
|
"id": "9A0VfT5yePm5"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"n = int(1e3)\n",
|
|
"a = np.ones(n, dtype = int)"
|
|
],
|
|
"metadata": {
|
|
"id": "l_UpCyuqQBwt"
|
|
},
|
|
"execution_count": 20,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## **First implemination:** pre-allocating `numpy` array and filling it using `for` loop."
|
|
],
|
|
"metadata": {
|
|
"id": "GkeqAQzceyOD"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"def HC_func1(array, n):\n",
|
|
" if n < 1:\n",
|
|
" raise Exception(\"n must be positive\")\n",
|
|
" elif n == 1:\n",
|
|
" array[0] = 1\n",
|
|
" else:\n",
|
|
" array[0], array[1] = 1, 1\n",
|
|
"\n",
|
|
" for idx in range(2, n):\n",
|
|
" array[idx] = array[array[idx - 1] - 1] + array[idx - array[idx - 1]]"
|
|
],
|
|
"metadata": {
|
|
"id": "i1B9t7PwPrB-"
|
|
},
|
|
"execution_count": 21,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"%time HC_func1(a, n)\n",
|
|
"%time HC_func1(a, n)\n",
|
|
"%time HC_func1(a, n)"
|
|
],
|
|
"metadata": {
|
|
"id": "MlymyYQDPscK",
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"outputId": "c7f93f12-16f3-4b18-af01-b7c85ebcc5c9"
|
|
},
|
|
"execution_count": 22,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"CPU times: user 1.73 ms, sys: 0 ns, total: 1.73 ms\n",
|
|
"Wall time: 1.74 ms\n",
|
|
"CPU times: user 1.62 ms, sys: 104 µs, total: 1.73 ms\n",
|
|
"Wall time: 1.73 ms\n",
|
|
"CPU times: user 1.72 ms, sys: 0 ns, total: 1.72 ms\n",
|
|
"Wall time: 1.73 ms\n"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## **Second implemination:** cumulatively appending `python` list and converting it to `numpy` array."
|
|
],
|
|
"metadata": {
|
|
"id": "mtt236qrfDnI"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"def HC_func2(n):\n",
|
|
" if n < 1:\n",
|
|
" raise Exception(\"n must be positive\")\n",
|
|
" elif n == 1:\n",
|
|
" result = [1]\n",
|
|
" else:\n",
|
|
" result = [1, 1]\n",
|
|
" for idx in range(2, n):\n",
|
|
" elem = result[result[idx - 1] - 1] + result[idx - result[idx - 1]]\n",
|
|
" result.append(elem)\n",
|
|
" return np.array(result)"
|
|
],
|
|
"metadata": {
|
|
"id": "LY9YUjFFNIs2"
|
|
},
|
|
"execution_count": 23,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"%time HC_func2(n)\n",
|
|
"%time HC_func2(n)\n",
|
|
"%time HC_func2(n)\n",
|
|
"\"\""
|
|
],
|
|
"metadata": {
|
|
"id": "9X9tMCeYVYhm",
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 140
|
|
},
|
|
"outputId": "957c3a66-7e73-4997-8f7c-aead3217beab"
|
|
},
|
|
"execution_count": 24,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"CPU times: user 779 µs, sys: 0 ns, total: 779 µs\n",
|
|
"Wall time: 785 µs\n",
|
|
"CPU times: user 720 µs, sys: 13 µs, total: 733 µs\n",
|
|
"Wall time: 737 µs\n",
|
|
"CPU times: user 736 µs, sys: 0 ns, total: 736 µs\n",
|
|
"Wall time: 740 µs\n"
|
|
]
|
|
},
|
|
{
|
|
"output_type": "execute_result",
|
|
"data": {
|
|
"text/plain": [
|
|
"''"
|
|
],
|
|
"application/vnd.google.colaboratory.intrinsic+json": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"metadata": {},
|
|
"execution_count": 24
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## **Second implemination:** compiled (`jit`) version."
|
|
],
|
|
"metadata": {
|
|
"id": "tKz26-9RfUex"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 25,
|
|
"metadata": {
|
|
"id": "7h5Woys4-Z3S"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"@njit\n",
|
|
"def HC_func3(array, n):\n",
|
|
" if n < 1:\n",
|
|
" raise Exception(\"n must be positive\")\n",
|
|
" elif n == 1:\n",
|
|
" array[0] = 1\n",
|
|
" else:\n",
|
|
" array[0], array[1] = 1, 1\n",
|
|
"\n",
|
|
" for idx in range(2, n):\n",
|
|
" array[idx] = array[array[idx - 1] - 1] + array[idx - array[idx - 1]]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"%time HC_func3(a, n)\n",
|
|
"%time HC_func3(a, n)\n",
|
|
"%time HC_func3(a, n)"
|
|
],
|
|
"metadata": {
|
|
"id": "6rhqO950CzUg",
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"outputId": "06e1ac2d-11f2-49a2-e3a9-7b8b165e42b0"
|
|
},
|
|
"execution_count": 26,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"CPU times: user 235 ms, sys: 19.7 ms, total: 255 ms\n",
|
|
"Wall time: 298 ms\n",
|
|
"CPU times: user 23 µs, sys: 0 ns, total: 23 µs\n",
|
|
"Wall time: 26.7 µs\n",
|
|
"CPU times: user 19 µs, sys: 0 ns, total: 19 µs\n",
|
|
"Wall time: 22.6 µs\n"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## Let's compare execution time"
|
|
],
|
|
"metadata": {
|
|
"id": "6WubSLEUfcLW"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"def comp_time_res():\n",
|
|
" res1, res2, res3 = np.array([]), np.array([]), np.array([])\n",
|
|
" for k in list(map(int, [1e1, 1e2, 1e3, 1e4, 1e5])):\n",
|
|
" data = np.ones(k, dtype = int)\n",
|
|
"\n",
|
|
" start_time = time.time()\n",
|
|
" HC_func1(data, k)\n",
|
|
" end_time = time.time()\n",
|
|
" res1 = np.append(res1, end_time - start_time)\n",
|
|
"\n",
|
|
" start_time = time.time()\n",
|
|
" HC_func2(k)\n",
|
|
" end_time = time.time()\n",
|
|
" res2 = np.append(res2, end_time - start_time)\n",
|
|
"\n",
|
|
" start_time = time.time()\n",
|
|
" HC_func3(data, k)\n",
|
|
" end_time = time.time()\n",
|
|
" res3 = np.append(res3, end_time - start_time)\n",
|
|
" return (res1, res2, res3)"
|
|
],
|
|
"metadata": {
|
|
"id": "LELxb0HRoWvh"
|
|
},
|
|
"execution_count": 27,
|
|
"outputs": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"import matplotlib.pyplot as plt\n",
|
|
"first_func, second_func, third_func = comp_time_res()\n",
|
|
"x = np.array([1e1, 1e2, 1e3, 1e4, 1e5], dtype=int)\n",
|
|
"\n",
|
|
"plt.plot(x, first_func)\n",
|
|
"plt.plot(x, second_func)\n",
|
|
"plt.plot(x, third_func)\n",
|
|
"\n",
|
|
"plt.xlabel(\"n\", fontsize=14)\n",
|
|
"plt.ylabel(\"comp time\", fontsize=14)\n",
|
|
"plt.legend([\"HC_func_1\", \"HC_func_2\", \"HC_func_3\"]);"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 455
|
|
},
|
|
"id": "4MPOWTsXtZhU",
|
|
"outputId": "7299eddf-166f-4e26-9058-716eaefe6168"
|
|
},
|
|
"execution_count": 28,
|
|
"outputs": [
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
],
|
|
"image/png": "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Y1/OmofW4OtxdWvvLFq0qMxisxaLxfb9nj17aNeuncM5XeizBBASEnLV+995550888wzAIwZM4aPPvqI5cuX065dO2bOnElmZibr1q2jQYMGwNUve9K8eXMyMzMpKipi4sSJ/PGPf7zqHEVEHFFksTL95318vGwPhRaDBn6evB3fmTu6NHV2anWey7Ugffjhh/zpT39i+PDhdOzYkenTp+Pr68s//vGPcuN79uzJBx98wIMPPoiXl1elHLOu6devH0lJSXZf/+///T/b81XRKnU1unbtavveZDIREhLCsWPHgOJFcrt162Yrjhzxyy+/sH79eqZPn87UqVP58ssvrzlnEZEr2XvsLPf/bTWTf9hNocXgto7B/PDCTSqOXIRLtSAVFBSwYcMGxo4da9tmNpvp378/iYmJ1XrM/Px88vPzbY+zs7Ov6nV93H1Y89CV+8FUNh93n6vex8/Pr0yry+HDh23ft23blp07d15zbqWZzeYyxVdhYWGZOA8PD7vHJpPJdgvNx+fqz7e0Fi1aANClSxcyMjKYOHEiQ4cOvebjioiUx2o1+MeqA3zw/S7yi6z4e7vzxsBOxEeHuswgFnGxFqTjx49jsVgIDg622x4cHEx6enq1HnPSpEkEBgbavsLCwq7qdU0mE74evtX+VRW/XA899BC7d+9m4cKFZZ4zDIOsrCyHjtu4cWO7/kgWi4WtW7de1TG6du1KUlISJ0+edCiH0qxWq11hLCJSmQ6dzOXBv//GW4t3kF9k5aa2jfnhhZu4t1tzFUcuxqUKJFcyduxYsrKybF+HDh1ydkpOM3jwYIYMGcLQoUN55513WL9+PSkpKSxatIj+/fuzfPlyh457yy23sHjxYhYvXszOnTt5+umnbfMuVdTQoUMJCQkhPj6eVatWsX//fubNm1ehFsdp06bx7bffsmfPHvbs2cP//d//MXnyZH7/+987dD4iIpdiGAYz16QSN3Ulaw+cxNfTjXfu7cK/hvekaeC1t4RL5XOpW2yNGjXCzc2NjIwMu+0ZGRkOde69lmN6eXldsk9TXWMymZg5cyYzZszgH//4B2+//Tbu7u60adOGYcOGERcX59BxH3/8cZKTkxk2bBju7u688MILV5wyoDRPT09++OEHRo0axZ133klRUREdO3Zk2rRpV9zXarUyduxYDhw4gLu7O61ateK9997jySef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adMmY9OmTQZgfPjhh8amTZuMlJQUwzBc67pWJJcrUYHkZJ988okRHh5ueHp6Gr169TJ+++03Z6fkMoByv/75z3/aYs6dO2c888wzRv369Q1fX1/j3nvvNdLS0uyOc/DgQeOOO+4wfHx8jEaNGhmjRo0yCgsL7WKWL19uREdHG56enkbLli3tXuOCuvRelS6QdJ0rx7fffmt07tzZ8PLyMtq3b2/MmDHD7nmr1Wq8+uqrRnBwsOHl5WX87ne/M3bt2mUXc+LECWPo0KFGvXr1jICAAGP48OHGmTNn7GKSk5ONG264wfDy8jJCQ0ONd999t0wus2fPNtq2bWt4enoanTp1MhYvXlz5J+wE2dnZxogRI4zw8HDD29vbaNmypfHKK6/YDRvXdXbM8uXLy/2b/OijjxqG4VrXtSK5XInJMC6aXlRERERE1AdJREREpDQVSCIiIiKlqEASERERKUUFkoiIiEgpKpBERERESlGBJCIiIlKKCiQRERGRUlQgiYiIiJSiAklERESkFBVIIiIiIqWoQBIREREpRQWSiNRJK1aswGQyMXHiRNavX8+tt96Kv78/gYGB3HvvvRw8eNDZKYqIE6lAEpE6bd26ddx00014enry5JNP0qNHDxYsWED//v3Jy8tzdnoi4iTuzk5ARMSZlixZwqxZsxgyZIht27Bhw/jPf/7DggULePDBB52YnYg4i1qQRKROu+mmm+yKI4DHH38cKG5dEpG6SQWSiNRp3bt3L7OtefPmAJw+fbqasxERV6ECSUTqtICAgDLb3N2Lex9YLJbqTkdEXIQKJBEREZFSVCCJiIiIlKICSURERKQUFUgiIiIipahAEhERESnFZBiG4ewkRERERFyJWpBERERESlGBJCIiIlKKCiQRERGRUlQgiYiIiJSiAklERESkFBVIIiIiIqWoQBIREREpRQWSiIiISCkqkERERERKUYEkIiIiUooKJBEREZFSVCCJiIiIlKICSURERKSU/w9MutJvr44b7gAAAABJRU5ErkJggg==\n"
|
|
},
|
|
"metadata": {}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## The option with a `jit` compiler turned out to be the fastest. Let's use it to calculate $a(10^8)$:"
|
|
],
|
|
"metadata": {
|
|
"id": "KDEaQcaifhfn"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"n = int(1e8)\n",
|
|
"a = np.ones(n, dtype = int)\n",
|
|
"\n",
|
|
"%time HC_func3(a, n)\n",
|
|
"%time HC_func3(a, n)\n",
|
|
"%time HC_func3(a, n)"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/"
|
|
},
|
|
"id": "dhgtJB8X0fkO",
|
|
"outputId": "e01fe169-8137-4a64-88f9-e08d57600fcd"
|
|
},
|
|
"execution_count": 29,
|
|
"outputs": [
|
|
{
|
|
"output_type": "stream",
|
|
"name": "stdout",
|
|
"text": [
|
|
"CPU times: user 586 ms, sys: 4.05 ms, total: 590 ms\n",
|
|
"Wall time: 588 ms\n",
|
|
"CPU times: user 586 ms, sys: 4.75 ms, total: 590 ms\n",
|
|
"Wall time: 586 ms\n",
|
|
"CPU times: user 587 ms, sys: 2.11 ms, total: 589 ms\n",
|
|
"Wall time: 584 ms\n"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"x = np.arange(1, n + 1, 1, dtype=int)\n",
|
|
"plt.plot(x, a);\n",
|
|
"plt.title(\"$a(10^8)$\", fontsize=14);"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 476
|
|
},
|
|
"id": "fggJi6PlgQOv",
|
|
"outputId": "7a4d3f18-b3d8-4002-d4b5-38cae766af9f"
|
|
},
|
|
"execution_count": 30,
|
|
"outputs": [
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
],
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAHLCAYAAACUD9G/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABEbklEQVR4nO3dZ3gU5cLG8XvTSYXQA6ETkBKqQCiiggIiAiogICBix4oNREUUQbEcPYoeBQWUJqCgR6qggCgdAqGFAIHQEnp6NsnuvB845BUBIckms7v5/65rP2R2dufeMWRvZ555xmIYhiEAAAAH8DA7AAAAcB8UCwAA4DAUCwAA4DAUCwAA4DAUCwAA4DAUCwAA4DAUCwAA4DAUCwAA4DAUCwAA4DAUCwAA4DAUCwAA4DAUCwBOIzU1VY899pjCwsIUEBCgZs2aaf78+WbHApAPFAsATuO5557TqlWrNHfuXMXExKhv37667777tGPHDrOjAbhOFAsAlzAMQy1atNDtt99e7Ntev369HnjgAbVv3161atXSqFGjFBISoq1bt+atExsbKy8vL3322WfFng/AtVEsAFzim2++0datW/Xmm29e9tyMGTP06KOPqmXLlvL19ZXFYtG0adP+8f02bdqkO+64Q6VLl1ZAQIDatGmjuXPnXnHdtm3b6scff1RiYqIMw9C8efNktVrVsWPHvHXq1aun/v37a+zYsUpNTS3UZwXgeBbDMAyzQwBwDna7XbVr11Z4eLjWrFlz2fM1atTQ4cOHVa5cOQUEBOjw4cOaOnWqHnjggSu+32+//aYuXbrIz89P9913n4KCgvT999/r8OHDev/99/X8889fsn5WVpYefPBBzZ49W15eXvL399e8efMuO3oSExOjyMhIjRs3TqNHj3bY5wdQeByxAJBnyZIlOnTokAYPHnzF56dMmaJDhw7p1KlTeuyxx/7xvXJzc/Xwww/Lw8NDa9as0ZdffqkPPvhA27dvV0REhF555RUdPnz4ktd8/PHH2r59u5YsWaLNmzfrxRdfVL9+/bR79+5L1mvcuLEiIyM1efJk2e32wn1oAA5FsQBKgMmTJ+vuu+9W7dq15e/vr4oVK+q2227T77//fsl6U6dOlcVi0T333HPF9+ncubOqV69+Xdv89ddfdeDAAQ0YMEBNmzbNWx4SEqJXXnlF2dnZmj59et7yzMxMvfbaa/rwww/VtWtXNWnSRK+++qpatmx5xfEUffv21eHDh/Xbb79dVx4AxYNiAbi5I0eO6IknntC5c+fUuXNnPfPMM7rlllu0du1a3XbbbYqOjpZ0YdDmb7/9pnr16qlMmTKF3u6qVask6YqDQLt06SJJWr16dd6ynJwc5eTkyNPT85J1PT09r3hUIioqSpK0cuXKQmcF4DheZgcAULSCg4OVmJiosmXLXrJ8xYoVuu222zRr1iw1bdpUe/bs0dmzZ9WtWzeHbDcuLk6SVLdu3cueq1SpkgIDA/PWuZizQ4cOeuGFF/Tpp58qLCxMP/30k3755RctXrz4svdo2bKlJOmPP/5wSF4AjkGxANxcSEjIFZc3b95cknT8+HFJ0tGjRyVJFStWdMh2k5OT/3H7wcHBeetcNGfOHL388svq06ePkpOTVadOHU2bNi3vCMffX+/n55eXG4BzoFgAbu7kyZP66KOPtHTpUu3fv19paWn668Vg1apVkySdOXNGklS6dGkzYkqSwsLC9O233173+qGhoTp9+nQRJgKQX6aNsVizZo169OihsLAwWSwWLVy4MF+vf+ONN2SxWC57BAQEFE1gwAVt3LhR9evX17vvvqugoCANGTJEo0eP1pgxY9SpUydJUmRkpCSpVKlSki5c8ukIF49U/P2oxEUpKSlXPZpxvTIzM+Xv71+o9wDgWKYdsUhPT1eTJk304IMP6u67787361944YXLLnfr1KmTbrzxRkdFBFyaYRi6//77lZubq02bNuWd+rjo4liKZs2aSZLKly8vSTp79qxDtn9xbEVcXJxatGhxyXOJiYlKS0tTq1atCvz+drtdycnJatiwYaFyAnAs045YdOvWTePGjVPv3r2v+LzVatULL7ygKlWqKCAgQK1bt84bZS5JgYGBqlSpUt4jKSlJu3fv1rBhw4rpEwDObf/+/YqLi9Mdd9xxWanYtWuXVqxYocDAQEVEREiSGjZsKA8PD8XGxjpk+xdny1y+fPllzy1btuySdQoiLi5OdrtdjRs3LvB7AHA8p73c9Mknn9S6des0Z84c7dixQ3369FHXrl0vGUX+V1OmTFFERIQ6dOhQzEkB5+Tr6yvpQsH465iK/fv365577lFubq6aNm0qi8Ui6cLYisjISG3evNkhk0516tRJtWrV0qxZs/IuaZUunBoZP368fHx8rjoR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\n"
|
|
},
|
|
"metadata": {}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"## Finally we display the graph $f(n) = a(n)/n$ for $n = 1, 2, ..., 2000$"
|
|
],
|
|
"metadata": {
|
|
"id": "pH6dsdzmhBmv"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"n = int(2000)\n",
|
|
"a = np.ones(n, dtype = int)\n",
|
|
"HC_func3(a, n)\n",
|
|
"\n",
|
|
"x = np.arange(1, n + 1, 1, dtype=int)\n",
|
|
"y = a * np.array([1 / (i + 1) for i in range(n)])\n",
|
|
"plt.plot(x, y);\n",
|
|
"plt.title(\"a(n)/n\", fontsize=14);"
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"base_uri": "https://localhost:8080/",
|
|
"height": 453
|
|
},
|
|
"id": "tm9UvLrD9wfW",
|
|
"outputId": "e0b72afe-3cd1-444b-8849-744c827a7f75"
|
|
},
|
|
"execution_count": 31,
|
|
"outputs": [
|
|
{
|
|
"output_type": "display_data",
|
|
"data": {
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
],
|
|
"image/png": "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U4pJREREDUid9qZZtmwZOnbsiB49elS63fTp05GVlSW9UlJSaqU8Ko4HT0REpDhLUzZ2dXWFWq1GWlqabHlaWho8PT0r3Tc3NxcrV67EnDlzqjyPVquFVqs1pWhERETUQJlUM6LRaBASEoLo6GhpmU6nQ3R0NMLCwird95dffkF+fj6ee+65+yspERERNUom1YwAQGRkJMaOHYtu3bqhR48eWLx4MXJzczFu3DgAwJgxY+Dj44OoqCjZfsuWLcPIkSPRtGnTmik5ERERNQomh5FRo0bh+vXrmDVrFlJTU9G5c2ds2rRJatSanJwMCwt5hcvZs2exe/du/PXXXzVTaiIiImo0TA4jAPD666/j9ddfN7guJiZGb1lQUFC9HnK9HheNiIio0TPruWnYl4aIiEh5Zh1GiIiISHkMI0RERKQohhEiIiJSFMMIERERKYphBIAAu9MQEREpxbzDCLvTEBERKc68wwgREREpjmGEiIiIFMUwQkRERIpiGCEiIiJFMYyAc9MQEREpyazDiIrdaYiIiBRn1mGEiIiIlGfWYaRIpwMARG08g9t5hQqXhoiIyDyZdRhZF3dV+nrOH6cVLAkREZH5MuswUl7shRtKF4GIiMgsMYwQERGRohhGiIiISFEMI0RERKQohhEiIiJSFMMIERERKYphhIiIiBTFMEJERESKYhghIiIiRTGMEBERkaIYRoiIiEhRDCNERESkKIYRIiIiUhTDyD0qldIlICIiMk8MI0RERKQohhEiIiJSFMMIERERKYph5B4hlC4BERGReWIYuSf9dj4EEwkREVGdYxi5p6BIh0+jzytdDCIiIrPDMFLO4q0MI0RERHWNYYSIiIgUxTBCREREimIYISIiIkUxjBAREZGiGEaIiIhIUQwjREREpCiGESIiIlIUwwgREREpimGEiIiIFMUwQkRERIpiGCEiIiJFMYwQERGRohhGKhBCKF0EIiIis8IwUkFBsU7pIhAREZkVhpEKWDFCRERUtxhGiIiISFEMIxUcSLqJJdsTUKxjFQkREVFdsFS6APXNmOUHAABu9lo81d1X4dIQERE1fqwZMSLxeo7SRSAiIjIL9xVGlixZgoCAAFhbWyM0NBQHDhyodPvMzExMmjQJXl5e0Gq1aN26NTZs2HBfBa4zKqULQEREZB5MfkyzatUqREZGYunSpQgNDcXixYsRERGBs2fPwt3dXW/7goICPPLII3B3d8fq1avh4+ODS5cuwcnJqSbKX2ssVEwjREREdcHkMLJw4UJMmDAB48aNAwAsXboU69evx/LlyzFt2jS97ZcvX46bN29i7969sLKyAgAEBAQ8WKnrAKMIERFR3TDpMU1BQQEOHz6M8PDwsgNYWCA8PByxsbEG9/n9998RFhaGSZMmwcPDAx06dMC8efNQXFxs9Dz5+fnIzs6Wvera7oSMOj8nERGROTIpjGRkZKC4uBgeHh6y5R4eHkhNTTW4z4ULF7B69WoUFxdjw4YNeO+99/DJJ59g7ty5Rs8TFRUFR0dH6eXrW/e9Wo5fzqrzcxIREZmjWu9No9Pp4O7ujq+//hohISEYNWoU3n33XSxdutToPtOnT0dWVpb0SklJqe1iEhERkUJMajPi6uoKtVqNtLQ02fK0tDR4enoa3MfLywtWVlZQq9XSsrZt2yI1NRUFBQXQaDR6+2i1Wmi1WlOKRkRERA2USTUjGo0GISEhiI6OlpbpdDpER0cjLCzM4D69e/dGQkICdLqyCejOnTsHLy8vg0GEiIiIzIvJj2kiIyPxn//8B9999x3i4+Px6quvIjc3V+pdM2bMGEyfPl3a/tVXX8XNmzcxefJknDt3DuvXr8e8efMwadKkmrsKIiIiarBM7to7atQoXL9+HbNmzUJqaio6d+6MTZs2SY1ak5OTYWFRlnF8fX2xefNmvPXWW+jUqRN8fHwwefJkTJ06teauopZ9t/cibDRqPNWNw8MTERHVNJUQot7PCJednQ1HR0dkZWXBwcGhxo4bMG19pesvzh+G1Kw89IwqeSyVOG8o1BYcgYSIiKg6qvv5zblpqnA7r1D6urBYV8mWREREdD8YRqpQXK7iaH/STQVLQkRE1DgxjFTh+9hL0tcTvj+kYEmIiIgaJ4aRKvy0P1n6uqCIj2mIiIhqGsMIERERKYphxAitpeEfTQPofERERNSgMIwYYatRG1z++7GrdVwSIiKixo1hxIgineEakP+Wa0NCRERED45hxIhiI2HkQCXde4uKdZjzx2lsOZ1mdBsiIiKSYxgxwljNSGV+PXIZy/ckYcL3h1DEAdKIiIiqhWHECGM1I4Yk37iDt1bFYeqvJ6Rlvxy+XBvFIiIianQYRowo1gnZUPCVefmHQ/jt6BXZsjl/nK6NYhERETU6DCOVmPtnfLW2O5N6W2/Z3cJi/HwopaaLRERE1OgwjFRix7nrVW6TeD3H6Lp3Vh+vyeIQERE1SgwjlUjNzjO4vPzAZ4cv3aq183+1IxGB09cj3Ug5iIiIGgOGkftQWFwWRnT30eumKr8dvYxlu5MQtfEMhAB6zItGbn5RjZ+HiIioPmAYuQ93CsqCQXENDw9/4nIW3lp1DB/+KW8A2372Zg5FT0REjRLDyH1YsPms9HVRceUBITXLtEcsw/+92+i6jJwCk45FRETUEDCM3IfyQ8LnVPH45N/bz9fYeeNSMnH6arasZoaIiKihYxippk+f7qy3TAghqyUpFflIa+nrOwXF1T5HXmHl2074/hCGfrYL7WZtrndtSHLyixC1IR4J6cZ7FxERERnCMFJNIzr76C1LvJ6rt8zSQoWJ/VpI3+cXVX9Y+BdXHNRb9nxPf4Pbtp+9GfHXsqt97AeVdbcQT38di5UH5BMFrj58GQHT1qPD7M34aucFhC/cgYBp66sMVkRERKUYRh5AgYGgMaq7LzSWZT9Wb0frah9vb+INvWUfjuyAJ0OaGdx+yKe7qn3s+7X1dBoCpq1H8Ad/Yd+Fm5i25gQCppV0N956Og3/+OWYwf1eXHEQhy7exH/3X2LDWyIiqpSl0gVoyPKLyv77f7F3IIJ9HTGonScA4K3w1li09Rz+sysJjwX7oGMzR6PHOXE5S6/h6rKx3eDnYgsAeP+x9kbnuhFCQKVSPeilGHTyShbGf3/I4Loe86Ir3Xdv4g3sTYwFALz720nMHNYW4/s2r/EyNgYHkm7i18OXMb5vIFq42cPConbuJxFRfcUwch+au9oBkDdebWqvkT3KcbQp+9EO//duXJw/zOjxKgaRZ0P9MLCth/S9ndb4bdp1PgMPtXarfuFN8Ojnxnv2GPLKQ83xw75LBtvJzF0fj8e7+KCpvbamilevCSGwP+kmtpxOw/8OJEs/kzfDW+HN8Nb48/hVvP7TUdk+q+5NH/D7672x+VQqPBysMaSDF9yamMfPjIjMF8OIAU908cGaChPfAcCCv3fC26uPw8fZBgCQk1cWRiwq1E442FhV61yGhpP/cESHSvdRqYDSJx8nrmTVeBi5kZOPrfFpest7t2yKuORM5FYIG/8dH4pLN+7gmR6+mD60LQKmrTd43JC5W3Fs1iA42lbvZ9NQFesEhn22y+CcRYu3nsfirZX3sHrs33ukr2etO4VAVztsm9Kv1mrAiIiUxjYjBlSsiRjSwVO2PL+wpK1I+ZqRkV28Zfs4WMs/cIuKDTdkPX45U2+ZoWr60rYnbwxshYSPhkrLF2w+i6gN1ZvQrzrOpd1GyNytmPrrCWnZzGFt8WRIM3wzpjtOzRkMHycbad2nT3dG75auGB3qJ31YzhzWFgDgYqfB2xFBsuMHz/mr2rMhNzSHL91CwLT1aDFjg8EgUpkxYYYbKgNAUkYuAqdv0BsIr1TW3UJcy7pr0vmI7pcQAoXFOpy+mo2c/KJaGYWazA9rRgzQWsoz2rv3PlxLl+fdaytSGkYGBLnBy9FGtk/FmpFbdwoNVreXBpuqrHolDNvPpuOpbr5QW6gw5ZHW+GTLOQDAVzsvYPrQttU6TlUGLdop+z7Q1U6vrcfYXv6Yt+EMAGB4J3kIA4BxvQNhq7FEvyA3+DjZ4PEuPug1f5u0fvDiXdgz7eEaKW998fuxq3jjf0f1lof4O6OjjyMmDWiJ45cz8dJ3ZW1wNr/5ELycrKFRW8DaSo05IzpgweYzWLI9EeFtPVCk0yHmbNlkjct2J8HVXotX+7fAjnPXMXb5Ab3zNbXTYPfUh7H6cAq6B7qghZs9rNT8n6OhSsvOQ25+EbacTsO+CzfQu6UrhnXygpejDfZduIHnl+1HsU6gfB7o19oNs4a3wx/HrqK9tyP8m9qitUeTKs+VeacAs38/hXVxV/XWLXwqGNvOpOPP49cM7uvjZIMrmWWB+LX+LTBlUBDUbP9E1cQwYoC1lVr2vebem3np8tJuq6WPaTwc9HvMNLGW/2hn/HYC/xnTTW+7aWtO6C0zxNfFFmPCAqTvvZzk4SchPQct3e2rdSxjjiTrT/q3/IXuesue6+mPY5ez8HCQu8FaHLWFCqND/aTvvZ1s0CPQBQeSbgIArmTeRWGxrsF9SBYV65By6y6e/joW/i52eC7MH4929ML59ByDQeTE+4PQpFwN2cC2Hlg7qTf+tekMpg9piyBP/Q+IfwwKwiv9Wkg1a7dyCxAyd4v0YfPPTWew/sRVnLxiuFv3jdwCtJ21SbbsjYdbInJQkMHtqX7JzivEnvMZKCjWYfLKOL31289ex9z1ldeE7jh3HQM/2aG3vIWbHRaN6oxOzZwAlPQGXLY7Cf/cdKbKckX+bLjXXKnyQQQAvohJxBcxiQBKak9HdPZBdl4hPt58Fsk37+DyrbvSmETDg70x7/EOOJKcCXutJdybaOF7r/E+mQ+GEQMq1oxYSWHkXs1Ihcc09gYamFYMNFtO67fBqPgHDABjK6muL8+pQs3L2OUHHri24Ykv9uotC2iq/6Zgq7HEktFdTTr2srHdEH/tNp76qqSHzYsrDuLN8NbIzivEgCD3+ytwHckrLEab9+Qf8GnZ+Thw8aZeCHnv0Xa4k1+EkV18ZEGkVGdfJ/w0oafRc6lUKtkjPmc7DS5EDUP67Tz0+KikB5OxIGLMZ9sS8Nm2BIzvE4iZj7YzaV+qecU6gfhr2fB1toWdVg1LtQXyCosx4ftD2HU+o9bOm3g9F4/9ew86NXPEcz398c7q4yYfw0qtQmhgU7TzdsCIzt6Iv3YbS3ckVjrY4eSVcQaDVak/jl3FH8f0a2PstZZ4M7wVXuwdyB5mZoBhxACtlTyMlI4borWU14zcLg0j1vo/xoCmthgd6oef9ifrrSuVcTtf+vqFXgEIDXTBgDbV+2DuH+SGRzt5SdWmhoKNKSo+9/311V5oaqepsUaTTayt0CPQRfp+1/kM2Rtvfez6q9MJFBTr9IKIMV89H4KI9p61Uhb3Jtb44/U+sp5XWyP74dadArTzcoCd1hLFOoG/fbkXcSmZGNzeEyeuZMl+L77ZnQS1WoXpQ2rmkR5VjxACvxy+bPTD39VeY3TeqbkjO8DVXoM2ng7wdLRGfqEOU389jos3cjEmLADP9PAFANnfafy1bJy6mo1HO3nhauZd/HU6DfM3ltV+HL+cZbAsY8P8MSUiSK+9W7FOYNuZdLTzdpC1FwOA9t6O+HtIMxTrhOyRzLGUTHyzO8lgyKiunPwizF0fj7nr4/HO4CD8d18ybDVqdPVzRuSg1gZrpKnhYhgxoDR0lLKq8Jjm7r0wsut8yfN8QzUjKpUK8x7vWGkYSc0um0SvhZsdhnT0qnYZLdUW+PforrDXHsfKgylwfcAus/PKNYLd+fYA+BmoEakJf/5fH4Ndhueuj0dEe896Uz17LCUTI5bsMbhuWCcvCCGw4USqtOz5nv61FkRKdWzmiPeHt8Mfx6/h06c7o5mz/GeltlBh9cQwFBTrYKsp+Z28dCMX/T+OkXpffbXjAr7acUG23+6pA/SORQ8mN78IU34+hk2nUqvctnwQ6eLnhM+f6YKUm3fRPcAZlhUeZVpbqbH0+ZBKj9fWywFtvRwAAM3d7DGxnz0m9muBomId3lh5VPZ7uzWyX5WPd9UWKjzSzqPKbcoL9i25js+f6YJ1cVfwn10X0NHHCe8OawsrtQoatYUUoK5l3cXW+HT0b+2Gu4XFOJ+Wg7dWxaGgXKP/f20qm3bjfHqO1A2+tYc9fngplMGkEWAYMUD/MU3JH03pY5rbeUX49fBlpNws+a+zYvuQ8qKe6Ijpa04YfNyRVi6MPNnN977KOq53IFYeTEFGTj72XbiBns2b3tdxvtmdJH1dW0EEADr4GB/8re+/tkvjcCjpTGq2wSBy/P1BSM/OQ0v3krYeyTfuYMinOxHoZof3H2tfJ2V7oXcgXugdaHS9pdpC9gHm39QOSVHDcCMnHyFztxrcp88/twMAoqf0Qwu3B2t3ZO6EEPj1yBWjIxMDwMNt3DGudwCSMnLx0fp45Bfp0NzNDt+M6Ybm937+tREOLdUW+OLZEBxJvoXrt/MxqJ1HnXQXH9HZx+B0GqW8HG1k01609miCYZ1K/jHbk5CBZ7/Zb3Tfc2k5CL03AOPg9p7415Od9Gp2qGFgGDGg/GMaK7VK+oMtX2Mypdybjb3W+C9/Z18nAIZn903NKgkjY8P89dqYVJdfuZqEmWtPYmtkP5P2z7pbiJNXsqTvn+hq/E2jprw+oCX+vT0BD7dxx6OdvGSN4xZvPY8ufs7oV0sDuVUlr7AYgxfLh9l3tLHCnmkPw15rKXuj82tqi53vDICNRl3vew00tddi/4yB6PvP7bL/OMsb+MkO/PxKmOxxGlWtWCfw+Tbj48f4ONng7YggjOwi/9vq28oNY8ICkJ6dB1d7bZ21i+jq51wn56kJvVu6IuGjIUjNzpMCWm5+Eb7akYjPtiXItt10KhWbTqVi5rC2UjuTrLuFOHLpFqzUFvgs+jxsNGq083bAhL7NYatR4/KtO/BxsoXG0qLe/w03dgwjBpQPHeV7fFhbGe79YajNSCmnewN8ZeQUIK+wWAodRcU6qbW5hwnz11Rkoykrq6eJVZVFxToEf/CXbNn8Jzrdd1mq642BrdDKwx4D23rAXmuJAUHu6PLhFmn92OUHKh2xtjb97cuyRrwT+gZiXO9AqC1UBh/FAWhQI8p6OFhj9athyMkrQq+WrgCA7/ZexOzfT0nbPPVVLGYPb4e/hTTjf5jVkJB+G+ELdxpcV92aJnc+YqiUpdpCVlNkp7VE5KAgRA4Kwt2CYny04TR+3Ff2OHzu+nh8vi0BTawtcfmWflu6Heeu48t7773lWalVCGvhivlPdIR3hbYxVPsYRgwoHzrKT3pnrPbCTmO8VsPJRiN9PXf9acwd2REA8Fe53jWmhoiKPhzZAe+tPYndCRmIjk+TDSVfmQWbz8q+H9VNPslfbdFYWsiqbZ3tNNI1lFoXd6XSqt2aVFisQ1hUtOzZffcAZ7w7rPH1PCnt1llqbK8AjOrui13nMzDh3jxEH/xxGh/8cRqrJ4ahWwBrSbLzCpGenY8vtifAv6kdgjybIKK9B76ISdT7Gwpoaou/dW2G1wa05H/adcBGo8bckR0xd2RH3MotwBNf7kVSRi6y7hYi665pgysWFgvsPHcdveZvw0Ot3XAxIxfJN+9ApQKeDGmGmY+2g53Gkve1ljCMGGCsZsTYuBgVG5mVVz7Y/LgvWQojGTllPWkedO6RzuU+YF767hB2vTOgyoagQgh8tVPekNHQuBd15fme/ni+p780lPzklXEY2tGr1sci0ekEes3fptebYcW4HrV63vrE2kqNR9p54NsXumPcioPS8r8vjTXLQCKEgBDAZ5U8eqlo6XNdMbhD9RugU81zttNg+z/6Iy4lE5NXHsWlG3fwZngrjOsViNTsPLT2KKmlyi0oxk/7L0FrqUaPQBckZeTiy5hEnCj3uHrnubLBBoUAfj50GT8fKpmstI1nE3z3Yg82mq1hDCMGlP8A1FTjw9DY4xsARhuIFRaXdaV90Orwig1Ov4hJRNQTHSvdZ9XBFL1lYS3ur/FrTXp3aFt8dK9nT6t3N2LNa71q9Rn3yoMpuF6uizUAfP18SKWTEzZWA9q449sXuuPnQynYeLKkx8Xfl8ZWq8dFY1BUrMPc9fFYsfeiSfvtnzGQH0z1SGdfJ2yf0h8qVdn7b/n5sOy1lnj5oRbS9229HDD0Xk/GvMJiTPnlGNYbGWkWAM6k3pYazQb7OuGTJztJjdrp/pnfO241WKrLAoSVuuoquaBqDLUMlAzVXepGuZqRjpX0MKkOxwoDoP3vQHKVYWTR1nPS13/+Xx/cKSiWugMqacJDzaUwApQMxBY/Z7CsbUxNOXklCzN+KxsB98//64PrOfn1fhC22jSgjTsGtHGXDTcfvlA+mmdrD3usf6NvgxtBtzLx17Ix5NNdBte90CsAPk42GB3qh1t3CrAnIQNz18fjyRBfvPdoW05gWA/db2Ngays1lozuik9H6WQ13tdv52NvYgbWHLmCHeVqTY6lZCJ84U4MbOOOhU91xtGUW7DTWsJOY4m2Xk34u2EChhEDrCyMP5qZ0DcQ/9lV1g12fJ/AKn/hSttDBLjaScvSskvCyNsRQTXSir6jj6OsmrF8Y1lDSmcZdmuirbS7rRJKe9uU+mzbeUwd3KbGz1N+9NTqPNoyJ/1au+Gjxzvg3d9O6q07l5aDVu9uBNCwxyi5kZOPQYt24kau/oBjPk42eOuR1vh7SDPZcjutJUZ198Oo7n56+1DjUfHRu1sTrdRF+XZeIZbvvoifDlyS3sejz6QjeM5fhg6Ffq3dsGhUZ7iU+2eU9DWef21qkLxmRP4jCnSVV1fbVqM6v9W9Ku5bd8re9NJvl3TrdX/A9iKlfnwpFAufCpa+P345y+i2vx6+jGv3uhX/8kpYjZy/Jr0xsBXWvNZL+v7LmETcKdDvGv0gvohJwIWMXADAKw81ZxAx4NlQf0wfUnkI7PPP7bKu4Q3Fj/suIWTuVr0g8u247rg4fxj2THtYL4gQASWjSU8Ob4X9M8JxYd5QTOzXotLtd5y7jq4fbkHAtPUY8HEMzqeZNqO3uWDNiAHlH81U7F1io5F/X1lPmlLOtiWJ+Fa5N77Sdgo11a3P0dYKT3RtJo3Z8dRXsUa7x5YfI8W/Fgc4u18aSwt09XPGLxPD8OTSkrlstp1Jx6MGZgi+H3cLimUjOtbUjMeN0fi+zeHWRIvuAS7wdbGFEAJz/jyNb/dclLYpHVG3IYxRIoTAO6uP45fDl2XLW7rbY9XLPRtUV21SnoWFCtOGtMFzPf2wN+EG+ge5oaBYh8w7hfj4r7OyWbcBICkjF48s2gkfJxt8O657tWZTNhcMIwZYWhhvwGpT4dFHdWpGnO81nsq6WwidTsDCQoX00jBSQzUj98PHyaZeP9PsHuCCh9u4Y9uZdLz+01H0D3I3Ot5HdeQXFePpr/fhaHKmtOyXifWvZqg+UVuo8ETXshoClUqF2cPbY/bw9th08hom/nhEWvfUV7GYPqQNXqniP0UlFBXrcKewGP0XxODmvX8KbKzUiHm7Pxuf0gNr5myLp7rblvu+rEdeXmExvtieIBuk7UrmXQxaVDI+TXM3O/z7ma5o5618mz0l8TGNAeX7kVtZyj+sbTTyD8Pq1Iw43asZ0YmSMQv+OpUqvSHW9Bth+Yar2Xn6/ezL973/bVIvvfX1zbOhZc/md1T4L8MUQgg8/PEOWRB5OyII3c2s22pNGtzBC/8Z0022LGrjGfxsoKeWUgqKdJjw/SG0fHcjOr3/l/R392r/Fjg9J4JBhGqdtZUakYOCcHH+MCTOG4r3KsycfeF6LoZ+tguh87biwnXjsx83dgwjBlQ2tohezYim6v/Uyz/q+TImES//cFj63tm2Zke5fKaHnzTq64XruXrrl9xrGOrjZAP3JvX/jfjhNu5S7dSkn47g+WX7IYSoYi998zbE681s/GQ3tgl4UI+080DivKGyaQje+fU4Ys6m680EXdeOX85E65kbsaXcAIMAsGhUMKYOblOvawWpcVJbqPBSn0AkfDQEkY/I5+BKy87Hw5/swLRfjyPrTiH+OHYV0fFp2JuYofjfUl3gYxoDKmvAWjGM2GlN63JacaCx2nhDbOVuj4MXb2HOH6ew5rXe0nIhBL6+d/6rWfrDJNdHKpUK37/UA09/vQ8AsOt8Bl798UiVM5eWd/nWHVkPqDcGtkJLd/sGEcYaArWFCi3d7XHkvUfQ9d6w/i98WzJ42oS+gYqMZFvxERJQEpzGhgWgTyvXOi8PUXmWagu8MbAV3hjYCkIIbDyZitf+W/L7uvJgClYaqV0M9nXCrEfbIcS/4cwvVF0MIwaU79pbsddtxQas1akZqWtJGXcAAEeSMyGEkAJPernBvQa2qd6Q8fVBtwp/eJtOpSI9O6/ajX9LZ6UFgC1vPYRWbDRWK1zsNDgwYyB6/3ObNKjff3Yl4cL1XCx7oXudlWPjiWt49b9lQeS7F3soNvEiUVVUKhWGdvTCublDMOfPU7J5dio6lpIpmz9r1qPt8FxP/zqZxqO2NfwrqAXla0ZUkKeRimN3mFozAgCu91rsT6lQTVdTHmlXNmhXaT94ADh9NVv6+pNy3YDrO0u1Bb4d1x1DO3pKy8oHjMqcK9eN7rmefgwitczdwRr/m9BTNoBe9Jl0/O3Lvff1eM1Uc/88LQsi+2cMZBChBkFjaYG5Izti99QB+PTpzjj+/iAcee8R7J46AGPC/PVq5QFgzp+n0XrmRvx8MAU5+UV18jdWWxhGDJCFkYo1IxXDSDVrRubfa1hqr7VEbn7JmBmPda6ZrqoVTRtS1lU1Ib2sQdTpayVhZGRnb71RW+u7AUHu+OLZEPQPKvlgKSjWyeb3MSQ3v0hqse7hoMWcxzrUejkJ6Bbggo2T++LUBxHSssOXbuFfFSaVqyl3C4rx6dbzGLP8AL7ZXfI4roufE858OJgNVKnBaeZsixGdfeBgbQUXOw2aOdtizogOiP9wMJKihmLZ2G56QzK88+txdJi9GYHTN+DFFQdlw0g0FAwjBljKHtNU7E1TsQFr9WpG+t777yy3oAh3C4sBlNWQ1DRHGys80q7kMUxCelnNQGnNSEPuQrb0ubK2It3mbq102/UnyuaXeHdYuxoZ6Zaqz05rKQskX8Yk4pdDNdvTZtPJVLSdtQmLtp6TTW62bGz3SkcgJmqIVCoVBrb1wI63B+Di/GHYN30guvo5ybbZdiYdXT7cgqmrjzeoUMIwYkD5rr0Va0asLSs+pqlezUjpvDSltWg2VupanYytdGKzhHtdxTJy8qUP53Ze9Wv4d1NYW6kxolyN0jUjDXGFEPj13sBWjjZWeLQjZ1RVgp3WEmc+HCx9//bq4wiYth7/+OXYA1cpz/jtBCb+eFi2rKufE85/NIRDb5NZ8HS0xprXemNr5EP4dlx3DAgqeyS56lAKuny4BeELd+C1/x5G6r1Rt+srhpEqVOztYmGhkmbptVAB2mo2HLK2UstqUdxqebCzFm4lYeTHfcnIyMmXWmoDQFuvht1uovxYKp8ameJ9xm8nsT/pJgBgw+S+rBVRkLWVGmfnDkZAuarl1Ycvo9W7G1FQpDP5eEXFOoz/7iB+2l/W0O+zZ7pg9cQw/Dg+tFFN4EdUHS3dm2BAkDu+HdcD8XMGY0LfQGldQnoONpxIRc+oaPRbsB3HUjKVK2gl+FdbBUMfYaXtRuw0liZ1zS3/35qrfe3+51Z+yvdVB1Nw4N4HM4AGP+S1rcYSM4aWzJmy8mCK3lwPBUU6/O9A2QeVj5NNnZaP9Gkt1XrdsYt0Aq1nbkROvmnzDi3YfBZb49Ol74+89wgeC/ZGtwCXetm7jagu2WjUeHdYO5ydOxgv9g6Urbt04w5GLNmDUV/FIj27ftWUMIxUwVDWKA0jtib2pGkqCyO1XTNSNkNwdl4h/O5NBPd/D7es1fPWlaHlHrusrjDPSPm2A1veeqjOykSVa+PpII1CWT4sj/7PvmrVkOh0Ao/9e7c0Vo+Pkw0S+EiGyCCtpRqzhrfDxfnDkPDREMwc1haW92qI9yfdRI950Zj752nkFxUrXNISDCNVqNiAFQCsNWU1I6aQ1YzU8mOaJtZWeKKLDwAg/tptJN8sGXvkhV4BtXreutLM2VaqitwSnya1P9DphDQR4Et9AtmVtx5SW6iw5a2H0KtFUwAlM0y/9N3BKtuQLN+TJM1G/WyoH/ZMe1hvqnci0meptsD4vs1x/qMhmDuyrFfhN7uTEDRzEwKmrcc7q4/V+OzopuBfchUqe0xjas2Ii11ZAKntmhEAGHkvjOxNyABQ0k6loT+iKe//BrYCUDLs/ezfTwEAFkefl+bfefze9VP9o1Kp8NOEnni6uy+AkpF1n/hyL4qNDHsduSoOc9fHAwDaeTlg1vC6H9WVqKFTqVR4rqc/4ucMxnM9/WSdNX4+dBl/Hr9Wyd61i2GkCobahEhhxMSakabl2onUdgNWANL01EX33uDbeDauWgIHaytY3RsT5vvYSygo0uGz6LIGre0bcBdmcxH1REe8/FBzAMDR5Ez8Z9cFvW02nriGNUevAAD6B7lh/Rt9oLVkt12i+2WjUUsDrE15pDUGBLlhcHtPPBmi3HxdbO1VBYNtRqTHNKbWjJQLI7XcgBUoGeiribUlbueVVL0FNcJHFr9M7IWRS/YAAL7ZXfZBFj2lHydCawBUKhXejgjCij0XUVCsw/yNZ1BUrMPrD5fUei3ZnoAF9wZLa+PZBEufC+F9JaohXo42Ug2z0u6rZmTJkiUICAiAtbU1QkNDceDAAaPbrlixAiqVSvaytm44oyJW/pjmAdqM1MHjEpVKJdWOAEAbr8ZXU9DZ1wljwvwBAIu2nAMADG7vKXVtpvrPSm2Bs3MHS8O2f/zXOexJyMDxy5lSEGnr5YDfX+/DgcyIGimTw8iqVasQGRmJ2bNn48iRIwgODkZERATS09ON7uPg4IBr165Jr0uXLj1QoeuSoQas91szUpe9aUq19ij7UG5sj2lKPdqpZBC00snZamuYfao9KpUK//p7J+n7t385hrdWxUnfLxvbrVFMBkZEhpn8171w4UJMmDAB48aNQ7t27bB06VLY2tpi+fLlRvdRqVTw9PSUXh4elc8Ym5+fj+zsbNlLKZV27a3HvWlKtXIvCSAWKvnYI41JN39neDiU/DzttZZ4uI17FXtQfeThYI1TH0TAz8UWV7PykHg9F+5NtIib9Qi8OVYMUaNmUhgpKCjA4cOHER4eXnYACwuEh4cjNjbW6H45OTnw9/eHr68vRowYgVOnTlV6nqioKDg6OkovX19fU4pZbRUnGwIgja5aqkuFcf+BsoaopjZCLX1Ddba1MrlW5X51alYy9HsbT4dGW8VtYaHC8Hu1I4M7eDba6zQHdlpLfPJUsPRPwIIng+Fky3FEiBo7lTBhgoirV6/Cx8cHe/fuRVhYmLT8nXfewY4dO7B//369fWJjY3H+/Hl06tQJWVlZ+Pjjj7Fz506cOnUKzZoZbrmbn5+P/PyyGVmzs7Ph6+uLrKwsODjUXLuHW7kFeGPlUdhpLPFin0CcTbuN/q3d4Otii4T02zh48Rae6uYr6/4EADfuzfMyItgHjramzX674cQ1NLXTILR50xq7jqr8cewqgjybyNqPNDa5+UX45VAKHu/SzOR7QvXP9rPpKCzSYVB7T6WLQkQPIDs7G46OjlV+ftd6GKmosLAQbdu2xTPPPIMPP/ywWuet7sUQERFR/VHdz2+THtO4urpCrVYjLS1NtjwtLQ2entX7D8bKygpdunRBQkKCKacmIiKiRsqkMKLRaBASEoLo6GhpmU6nQ3R0tKympDLFxcU4ceIEvLw4pTsRERHdx6BnkZGRGDt2LLp164YePXpg8eLFyM3Nxbhx4wAAY8aMgY+PD6KiogAAc+bMQc+ePdGyZUtkZmZiwYIFuHTpEsaPH1+zV0JEREQNkslhZNSoUbh+/TpmzZqF1NRUdO7cGZs2bZK66yYnJ8PCoqzC5datW5gwYQJSU1Ph7OyMkJAQ7N27F+3acW4JIiIiMrEBq1LYgJWIiKjhqZUGrEREREQ1jWGEiIiIFMUwQkRERIpiGCEiIiJFMYwQERGRohhGiIiISFEMI0RERKQohhEiIiJSlMkjsCqhdFy27OxshUtCRERE1VX6uV3V+KoNIozcvn0bAODr66twSYiIiMhUt2/fhqOjo9H1DWI4eJ1Oh6tXr6JJkyZQqVQ1dtzs7Gz4+voiJSWlUQ4z39ivD2j819jYrw9o/NfI62v4Gvs11ub1CSFw+/ZteHt7y+atq6hB1IxYWFigWbNmtXZ8BweHRvkLVqqxXx/Q+K+xsV8f0PivkdfX8DX2a6yt66usRqQUG7ASERGRohhGiIiISFFmHUa0Wi1mz54NrVardFFqRWO/PqDxX2Njvz6g8V8jr6/ha+zXWB+ur0E0YCUiIqLGy6xrRoiIiEh5DCNERESkKIYRIiIiUhTDCBERESmKYYSIiIgUZdZhZMmSJQgICIC1tTVCQ0Nx4MABpYtUpaioKHTv3h1NmjSBu7s7Ro4cibNnz8q26d+/P1Qqlew1ceJE2TbJyckYNmwYbG1t4e7ujrfffhtFRUV1eSlGvf/++3rlb9OmjbQ+Ly8PkyZNQtOmTWFvb4+//e1vSEtLkx2jPl9fQECA3vWpVCpMmjQJQMO8fzt37sTw4cPh7e0NlUqFtWvXytYLITBr1ix4eXnBxsYG4eHhOH/+vGybmzdv4tlnn4WDgwOcnJzw0ksvIScnR7bN8ePH0bdvX1hbW8PX1xf/+te/avvSAFR+fYWFhZg6dSo6duwIOzs7eHt7Y8yYMbh69arsGIbu+/z582Xb1MfrA4AXXnhBr+yDBw+WbVOf7x9Q9TUa+ptUqVRYsGCBtE19vofV+WyoqffOmJgYdO3aFVqtFi1btsSKFSse/AKEmVq5cqXQaDRi+fLl4tSpU2LChAnCyclJpKWlKV20SkVERIhvv/1WnDx5UsTFxYmhQ4cKPz8/kZOTI23Tr18/MWHCBHHt2jXplZWVJa0vKioSHTp0EOHh4eLo0aNiw4YNwtXVVUyfPl2JS9Ize/Zs0b59e1n5r1+/Lq2fOHGi8PX1FdHR0eLQoUOiZ8+eolevXtL6+n596enpsmvbsmWLACC2b98uhGiY92/Dhg3i3XffFWvWrBEAxG+//SZbP3/+fOHo6CjWrl0rjh07Jh577DERGBgo7t69K20zePBgERwcLPbt2yd27dolWrZsKZ555hlpfVZWlvDw8BDPPvusOHnypPjf//4nbGxsxFdffaXo9WVmZorw8HCxatUqcebMGREbGyt69OghQkJCZMfw9/cXc+bMkd3X8n+39fX6hBBi7NixYvDgwbKy37x5U7ZNfb5/QlR9jeWv7dq1a2L58uVCpVKJxMREaZv6fA+r89lQE++dFy5cELa2tiIyMlKcPn1afP7550KtVotNmzY9UPnNNoz06NFDTJo0Sfq+uLhYeHt7i6ioKAVLZbr09HQBQOzYsUNa1q9fPzF58mSj+2zYsEFYWFiI1NRUadmXX34pHBwcRH5+fm0Wt1pmz54tgoODDa7LzMwUVlZW4pdffpGWxcfHCwAiNjZWCFH/r6+iyZMnixYtWgidTieEaPj3r+IbvU6nE56enmLBggXSsszMTKHVasX//vc/IYQQp0+fFgDEwYMHpW02btwoVCqVuHLlihBCiC+++EI4OzvLrnHq1KkiKCiolq9IztAHWUUHDhwQAMSlS5ekZf7+/mLRokVG96nP1zd27FgxYsQIo/s0pPsnRPXu4YgRI8TDDz8sW9ZQ7qEQ+p8NNfXe+c4774j27dvLzjVq1CgRERHxQOU1y8c0BQUFOHz4MMLDw6VlFhYWCA8PR2xsrIIlM11WVhYAwMXFRbb8v//9L1xdXdGhQwdMnz4dd+7ckdbFxsaiY8eO8PDwkJZFREQgOzsbp06dqpuCV+H8+fPw9vZG8+bN8eyzzyI5ORkAcPjwYRQWFsruXZs2beDn5yfdu4ZwfaUKCgrw448/4sUXX5TNSN3Q7195SUlJSE1Nld0zR0dHhIaGyu6Zk5MTunXrJm0THh4OCwsL7N+/X9rmoYcegkajkbaJiIjA2bNncevWrTq6murJysqCSqWCk5OTbPn8+fPRtGlTdOnSBQsWLJBVf9f364uJiYG7uzuCgoLw6quv4saNG9K6xnb/0tLSsH79erz00kt66xrKPaz42VBT752xsbGyY5Ru86CfnQ1i1t6alpGRgeLiYtkPHAA8PDxw5swZhUplOp1OhzfffBO9e/dGhw4dpOWjR4+Gv78/vL29cfz4cUydOhVnz57FmjVrAACpqakGr710ndJCQ0OxYsUKBAUF4dq1a/jggw/Qt29fnDx5EqmpqdBoNHpv8h4eHlLZ6/v1lbd27VpkZmbihRdekJY19PtXUWmZDJW5/D1zd3eXrbe0tISLi4tsm8DAQL1jlK5zdnaulfKbKi8vD1OnTsUzzzwjmwH1jTfeQNeuXeHi4oK9e/di+vTpuHbtGhYuXAigfl/f4MGD8cQTTyAwMBCJiYmYMWMGhgwZgtjYWKjV6kZ1/wDgu+++Q5MmTfDEE0/IljeUe2jos6Gm3juNbZOdnY27d+/CxsbmvspslmGksZg0aRJOnjyJ3bt3y5a//PLL0tcdO3aEl5cXBg4ciMTERLRo0aKui2myIUOGSF936tQJoaGh8Pf3x88//3zfv+j11bJlyzBkyBB4e3tLyxr6/TNnhYWFeOqppyCEwJdffilbFxkZKX3dqVMnaDQavPLKK4iKiqr3c548/fTT0tcdO3ZEp06d0KJFC8TExGDgwIEKlqx2LF++HM8++yysra1lyxvKPTT22VCfmeVjGldXV6jVar1WxGlpafD09FSoVKZ5/fXX8eeff2L79u1o1qxZpduGhoYCABISEgAAnp6eBq+9dF194+TkhNatWyMhIQGenp4oKChAZmambJvy966hXN+lS5ewdetWjB8/vtLtGvr9Ky1TZX9vnp6eSE9Pl60vKirCzZs3G8x9LQ0ily5dwpYtW2S1IoaEhoaiqKgIFy9eBFD/r6+85s2bw9XVVfY72dDvX6ldu3bh7NmzVf5dAvXzHhr7bKip905j2zg4ODzQP4tmGUY0Gg1CQkIQHR0tLdPpdIiOjkZYWJiCJauaEAKvv/46fvvtN2zbtk2vStCQuLg4AICXlxcAICwsDCdOnJC9eZS+ebZr165Wyv0gcnJykJiYCC8vL4SEhMDKykp2786ePYvk5GTp3jWU6/v222/h7u6OYcOGVbpdQ79/gYGB8PT0lN2z7Oxs7N+/X3bPMjMzcfjwYWmbbdu2QafTSWEsLCwMO3fuRGFhobTNli1bEBQUpHgVf2kQOX/+PLZu3YqmTZtWuU9cXBwsLCykxxv1+foqunz5Mm7cuCH7nWzI96+8ZcuWISQkBMHBwVVuW5/uYVWfDTX13hkWFiY7Ruk2D/zZ+UDNXxuwlStXCq1WK1asWCFOnz4tXn75ZeHk5CRrRVwfvfrqq8LR0VHExMTIupfduXNHCCFEQkKCmDNnjjh06JBISkoS69atE82bNxcPPfSQdIzS7luDBg0ScXFxYtOmTcLNza3edH2dMmWKiImJEUlJSWLPnj0iPDxcuLq6ivT0dCFESfc0Pz8/sW3bNnHo0CERFhYmwsLCpP3r+/UJUdJ7y8/PT0ydOlW2vKHev9u3b4ujR4+Ko0ePCgBi4cKF4ujRo1Jvkvnz5wsnJyexbt06cfz4cTFixAiDXXu7dOki9u/fL3bv3i1atWol6xqamZkpPDw8xPPPPy9OnjwpVq5cKWxtbeuk22Rl11dQUCAee+wx0axZMxEXFyf7uyztgbB3716xaNEiERcXJxITE8WPP/4o3NzcxJgxY+r99d2+fVv84x//ELGxsSIpKUls3bpVdO3aVbRq1Urk5eVJx6jP96+qayyVlZUlbG1txZdffqm3f32/h1V9NghRM++dpV173377bREfHy+WLFnCrr0P6vPPPxd+fn5Co9GIHj16iH379ildpCoBMPj69ttvhRBCJCcni4ceeki4uLgIrVYrWrZsKd5++23ZOBVCCHHx4kUxZMgQYWNjI1xdXcWUKVNEYWGhAlekb9SoUcLLy0toNBrh4+MjRo0aJRISEqT1d+/eFa+99ppwdnYWtra24vHHHxfXrl2THaM+X58QQmzevFkAEGfPnpUtb6j3b/v27QZ/L8eOHSuEKOne+9577wkPDw+h1WrFwIED9a79xo0b4plnnhH29vbCwcFBjBs3Tty+fVu2zbFjx0SfPn2EVqsVPj4+Yv78+YpfX1JSktG/y9KxYw4fPixCQ0OFo6OjsLa2Fm3bthXz5s2TfZjX1+u7c+eOGDRokHBzcxNWVlbC399fTJgwQe8ft/p8/6q6xlJfffWVsLGxEZmZmXr71/d7WNVngxA19965fft20blzZ6HRaETz5s1l57hfqnsXQURERKQIs2wzQkRERPUHwwgREREpimGEiIiIFMUwQkRERIpiGCEiIiJFMYwQERGRohhGiIiISFEMI0RERKQohhEiIiJSFMMIERERKYphhIiIiBT1/53cPH0+d3BjAAAAAElFTkSuQmCC\n"
|
|
},
|
|
"metadata": {}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
} |