From fbcef4f652710fbe4b535bd3c8ad524a8051dd8c Mon Sep 17 00:00:00 2001
From: Louis Oliphant <ltoliphant@wisc.edu>
Date: Wed, 23 Oct 2024 08:10:35 -0500
Subject: [PATCH] finished lec 21

---
 .../21_Copying/Lec_21_Copying.ipynb           | 102 +-------
 ...nt.ipynb => Lec_21_Copying_Solution.ipynb} | 107 ++++----
 .../21_Copying/Lec_21_Copying_Worksheet.ipynb |   2 +-
 .../21_Copying/Untitled.ipynb                 | 204 ---------------
 f24/Louis_Lecture_Notes/21_Copying/life.ipynb | 232 ------------------
 5 files changed, 51 insertions(+), 596 deletions(-)
 rename f24/Louis_Lecture_Notes/21_Copying/{Lec_21_Copying_Solution_Oliphant.ipynb => Lec_21_Copying_Solution.ipynb} (99%)
 delete mode 100644 f24/Louis_Lecture_Notes/21_Copying/Untitled.ipynb
 delete mode 100644 f24/Louis_Lecture_Notes/21_Copying/life.ipynb

diff --git a/f24/Louis_Lecture_Notes/21_Copying/Lec_21_Copying.ipynb b/f24/Louis_Lecture_Notes/21_Copying/Lec_21_Copying.ipynb
index 0098673..08b242f 100644
--- a/f24/Louis_Lecture_Notes/21_Copying/Lec_21_Copying.ipynb
+++ b/f24/Louis_Lecture_Notes/21_Copying/Lec_21_Copying.ipynb
@@ -303,7 +303,7 @@
    "metadata": {},
    "source": [
     "### Use Case 1: Get Max Score\n",
-    "Loop through each player's score and find the maximum score.\n",
+    "Loop through each player's score and finds and returns the maximum score.\n",
     "\n",
     "We only need to use a *reference copy* -- we shouldn't change the data in the function."
    ]
@@ -347,7 +347,7 @@
     "### Use Case 2: Get Median Score\n",
     "Sort the dictionary by score and find the median player's score.\n",
     "\n",
-    "We should use a *shallow copy* to ensure that we don't change the data."
+    "Since the list will need to be sorted, We should use a *shallow copy* to ensure that we don't change the data."
    ]
   },
   {
@@ -440,101 +440,6 @@
     "**Note:**  Deepcopy is also known as a Recursive copy. "
    ]
   },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### Specific Copying\n",
-    "Suppose that we have a big data object: a list of basketball players, where each player is a dictionary of their name, age, total_points, demographic information (which is a dictionary of ...), game history (which is a list of ...), and academic records (which is a dictionary of ...).\n",
-    "\n",
-    "We want to create a copy of just the high-scoring players. How could we accomplish this? Why might we only want to create a copy of some of the data?\n",
-    "\n",
-    "Write your answer in the cell below."
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "basketball_players [\n",
-    "    {\n",
-    "        'name' : 'John Smith',\n",
-    "        'total_points_earned' : 55,\n",
-    "        'position' : 'forward',\n",
-    "        'demographic' : {\n",
-    "            'sex' : 'M',\n",
-    "            'age' : 20,\n",
-    "            'height' : 6.02\n",
-    "        },\n",
-    "        'game_history' : [{},{}],\n",
-    "        'academic record' : {\n",
-    "            'starting_year' : 2022,\n",
-    "            'class' : 'sophomore',\n",
-    "            'gpa' : '1.9',\n",
-    "            'major' : 'business',\n",
-    "            'standing' : 'probation'\n",
-    "        }\n",
-    "    },\n",
-    "    {\n",
-    "        'name' : 'John Smith',\n",
-    "        'total_points_earned' : 55,\n",
-    "        'position' : 'forward',\n",
-    "        'demographic' : {\n",
-    "            'sex' : 'M',\n",
-    "            'age' : 20,\n",
-    "            'height' : 6.02\n",
-    "        },\n",
-    "        'game_history' : [{},{}],\n",
-    "        'academic record' : {\n",
-    "            'starting_year' : 2022,\n",
-    "            'class' : 'sophomore',\n",
-    "            'gpa' : '1.9',\n",
-    "            'major' : 'business',\n",
-    "            'standing' : 'probation'\n",
-    "        }\n",
-    "    },\n",
-    "    {\n",
-    "        'name' : 'John Smith',\n",
-    "        'total_points_earned' : 55,\n",
-    "        'position' : 'forward',\n",
-    "        'demographic' : {\n",
-    "            'sex' : 'M',\n",
-    "            'age' : 20,\n",
-    "            'height' : 6.02\n",
-    "        },\n",
-    "        'game_history' : [{},{}],\n",
-    "        'academic record' : {\n",
-    "            'starting_year' : 2022,\n",
-    "            'class' : 'sophomore',\n",
-    "            'gpa' : '1.9',\n",
-    "            'major' : 'business',\n",
-    "            'standing' : 'probation'\n",
-    "        }\n",
-    "    },\n",
-    "    {\n",
-    "        'name' : 'John Smith',\n",
-    "        'total_points_earned' : 55,\n",
-    "        'position' : 'forward',\n",
-    "        'demographic' : {\n",
-    "            'sex' : 'M',\n",
-    "            'age' : 20,\n",
-    "            'height' : 6.02\n",
-    "        },\n",
-    "        'game_history' : [{},{}],\n",
-    "        'academic record' : {\n",
-    "            'starting_year' : 2022,\n",
-    "            'class' : 'sophomore',\n",
-    "            'gpa' : '1.9',\n",
-    "            'major' : 'business',\n",
-    "            'standing' : 'probation'\n",
-    "        }\n",
-    "    }\n",
-    "]\n",
-    "\n"
-   ]
-  },
   {
    "cell_type": "markdown",
    "metadata": {},
@@ -559,7 +464,8 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "For good exam practice, complete this week's worksheet and interactive exercises. Try tracing reference copy, shallow copy, and deep copy by hand."
+    "## Practice Using Worksheet\n",
+    "Open today's worksheet to practice your understanding of references; objects; tuples and namedtuples; and the 3 levels of copying."
    ]
   }
  ],
diff --git a/f24/Louis_Lecture_Notes/21_Copying/Lec_21_Copying_Solution_Oliphant.ipynb b/f24/Louis_Lecture_Notes/21_Copying/Lec_21_Copying_Solution.ipynb
similarity index 99%
rename from f24/Louis_Lecture_Notes/21_Copying/Lec_21_Copying_Solution_Oliphant.ipynb
rename to f24/Louis_Lecture_Notes/21_Copying/Lec_21_Copying_Solution.ipynb
index 4a6277c..58d6a8a 100644
--- a/f24/Louis_Lecture_Notes/21_Copying/Lec_21_Copying_Solution_Oliphant.ipynb
+++ b/f24/Louis_Lecture_Notes/21_Copying/Lec_21_Copying_Solution.ipynb
@@ -1,20 +1,20 @@
 {
  "cells": [
   {
-   "cell_type": "markdown",
+   "cell_type": "code",
+   "execution_count": 1,
    "metadata": {},
+   "outputs": [],
    "source": [
-    "## Warmup"
+    "# Run this! Today we will be learning about copying using the copy module\n",
+    "import copy"
    ]
   },
   {
-   "cell_type": "code",
-   "execution_count": 1,
+   "cell_type": "markdown",
    "metadata": {},
-   "outputs": [],
    "source": [
-    "# Warmup 0: Run this! Today we will be learning about copy.\n",
-    "import copy"
+    "## Warmup"
    ]
   },
   {
@@ -254,16 +254,6 @@
    "cell_type": "code",
    "execution_count": 12,
    "metadata": {},
-   "outputs": [],
-   "source": [
-    "change_usage(boring_dict, 'sailboat', 'my sailboat crashed into the dock!')\n",
-    "change_usage(fun_dict, 'bamboozle', 'the Stormtroopers were bamboozled by Jedi mindtricks')"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 13,
-   "metadata": {},
    "outputs": [
     {
      "name": "stdout",
@@ -275,13 +265,16 @@
     }
    ],
    "source": [
+    "change_usage(boring_dict, 'sailboat', 'my sailboat crashed into the dock!')\n",
+    "change_usage(fun_dict, 'bamboozle', 'the Stormtroopers were bamboozled by Jedi mindtricks')\n",
+    "\n",
     "print('sailboat usage after:', boring_dict['sailboat']['usage'])\n",
     "print('bamboozle usage after:', fun_dict['bamboozle']['usage'])"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 14,
+   "execution_count": 13,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -302,16 +295,19 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "# CS220: Lecture 21\n",
+    "# Copying\n",
+    "\n",
+    "## Read\n",
     "\n",
+    "- [Sweigart Ch 4 (\"References\" through the end)](https://automatetheboringstuff.com/2e/chapter4/)\n",
     "\n",
     "## Learning Objectives\n",
     "After this lecture you will be able to...\n",
     " - Correctly predict the output of code that uses reference variable mutation and reassignment.\n",
     " - Compare and contrast the 3 levels of copying: \n",
-    "    - reference copy \n",
-    "    - shallow copy(copy.copy)\n",
-    "    - deep copy (copy.deepcopy)\n",
+    "    - **reference copy** \n",
+    "    - **shallow copy** (copy.copy)\n",
+    "    - **deep copy** (copy.deepcopy)\n",
     " - Write code that copies a data structure at the appropriate level for a given use case. \n",
     "\n"
    ]
@@ -320,7 +316,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Copying\n",
+    "## Copying\n",
     "- reference copy \n",
     "- shallow copy (copy.copy)  # one level of object depth\n",
     "- deep copy (copy.deepcopy) # all levels of object depth"
@@ -335,12 +331,14 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "![three%20levels%20copy.png](attachment:three%20levels%20copy.png)"
+    "![three%20levels%20copy.png](attachment:three%20levels%20copy.png)\n",
+    "\n",
+    "Link to [Python Tutor](https://pythontutor.com/render.html#code=%23%20Run%20this%20in%20Python%20Tutor,%20and%20uncomment%20one%20option%20at%20a%20time.%20%0A%0Aimport%20copy%0A%0Aw%20%3D%5B%0A%20%20%20%20%7B%22name%22%3A%22A%22,%20%22score%22%3A88%7D,%0A%20%20%20%20%7B%22name%22%3A%22B%22,%20%22score%22%3A111%7D,%0A%20%20%20%20%7B%22name%22%3A%22C%22,%20%22score%22%3A100%7D%5D%0A%0A%23x%20%3D%20w%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20reference%20copy%0A%23y%20%3D%20copy.copy%28w%29%20%20%20%20%20%23%20shallow%20copy...copies%20the%20first%20level%0A%23z%20%3D%20copy.deepcopy%28w%29%20%23%20deep%20copy...copies%20down%20to%20every%20level&cumulative=false&curInstr=5&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 15,
+   "execution_count": 14,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -397,7 +395,7 @@
    "metadata": {},
    "source": [
     "### Use Case 1: Get Max Score\n",
-    "Loop through each player's score and find the maximum score.\n",
+    "Loop through each player's score and finds and returns the maximum score.\n",
     "\n",
     "We only need to use a *reference copy* -- we shouldn't change the data in the function."
    ]
@@ -412,7 +410,7 @@
      "output_type": "stream",
      "text": [
       "[{'name': 'Anna', 'score': 88}, {'name': 'Bianca', 'score': 111}, {'name': 'Carl', 'score': 100}]\n",
-      "Bianca\n",
+      "111\n",
       "[{'name': 'Anna', 'score': 88}, {'name': 'Bianca', 'score': 111}, {'name': 'Carl', 'score': 100}]\n"
      ]
     }
@@ -425,14 +423,12 @@
     "]\n",
     "\n",
     "def max_score(score_list):\n",
-    "    best_person = None\n",
     "    high_score = None\n",
     "    for person in score_list:\n",
     "        if high_score == None or person['score'] > high_score:\n",
     "            high_score = person['score']\n",
-    "            best_person = person['name']\n",
     "    \n",
-    "    return best_person\n",
+    "    return high_score\n",
     "\n",
     "print(player_scores)\n",
     "print(max_score(player_scores))\n",
@@ -448,7 +444,7 @@
     "### Use Case 2: Get Median Score\n",
     "Sort the dictionary by score and find the median player's score.\n",
     "\n",
-    "We should use a *shallow copy* to ensure that we don't change the data."
+    "Since the list will need to be sorted, We should use a *shallow copy* to ensure that we don't change the data."
    ]
   },
   {
@@ -515,7 +511,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 21,
+   "execution_count": 18,
    "metadata": {},
    "outputs": [
     {
@@ -523,8 +519,20 @@
      "output_type": "stream",
      "text": [
       "players_before: [{'name': 'Anna', 'score': 88}, {'name': 'Bianca', 'score': 111}, {'name': 'Carl', 'score': 100}]\n",
-      "player_scores: [{'name': 'Anna', 'score': 98}, {'name': 'Bianca', 'score': 111}, {'name': 'Carl', 'score': 100}]\n",
-      "enter y to keep changes: n\n",
+      "player_scores: [{'name': 'Anna', 'score': 98}, {'name': 'Bianca', 'score': 111}, {'name': 'Carl', 'score': 100}]\n"
+     ]
+    },
+    {
+     "name": "stdin",
+     "output_type": "stream",
+     "text": [
+      "enter y to keep changes:  n\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
       "players_before: [{'name': 'Anna', 'score': 88}, {'name': 'Bianca', 'score': 111}, {'name': 'Carl', 'score': 100}]\n",
       "player_scores: [{'name': 'Anna', 'score': 88}, {'name': 'Bianca', 'score': 111}, {'name': 'Carl', 'score': 100}]\n"
      ]
@@ -564,30 +572,6 @@
     "**Note:**  Deepcopy is also known as a Recursive copy. "
    ]
   },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "### Specific Copying\n",
-    "Suppose that we have a big data object: a list of basketball players, where each player is a dictionary of their name, age, total_points, demographic information (which is a dictionary of ...), game history (which is a list of ...), and academic records (which is a dictionary of ...).\n",
-    "\n",
-    "We want to create a copy of just the high-scoring players. How could we accomplish this? Why might we only want to create a copy of some of the data?\n",
-    "\n",
-    "Write your answer in the cell below."
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 19,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# Answer: We would write a loop to check a player's total score, and only copy those players.\n",
-    "#         We would do this if there was too much data to copy, and we only needed to make\n",
-    "#         a copy of certain types of objects (such as high-scoring players).\n",
-    "#         See the slides for a similar example."
-   ]
-  },
   {
    "cell_type": "markdown",
    "metadata": {},
@@ -600,7 +584,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 20,
+   "execution_count": 19,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -614,7 +598,8 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "For good exam practice, complete this week's worksheet and interactive exercises. Try tracing reference copy, shallow copy, and deep copy by hand."
+    "## Practice Using Worksheet\n",
+    "Open today's worksheet to practice your understanding of references; objects; tuples and namedtuples; and the 3 levels of copying."
    ]
   }
  ],
@@ -634,7 +619,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.11.5"
+   "version": "3.10.12"
   }
  },
  "nbformat": 4,
diff --git a/f24/Louis_Lecture_Notes/21_Copying/Lec_21_Copying_Worksheet.ipynb b/f24/Louis_Lecture_Notes/21_Copying/Lec_21_Copying_Worksheet.ipynb
index 6976533..294210e 100644
--- a/f24/Louis_Lecture_Notes/21_Copying/Lec_21_Copying_Worksheet.ipynb
+++ b/f24/Louis_Lecture_Notes/21_Copying/Lec_21_Copying_Worksheet.ipynb
@@ -264,7 +264,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.9.7"
+   "version": "3.10.12"
   }
  },
  "nbformat": 4,
diff --git a/f24/Louis_Lecture_Notes/21_Copying/Untitled.ipynb b/f24/Louis_Lecture_Notes/21_Copying/Untitled.ipynb
deleted file mode 100644
index a7bc863..0000000
--- a/f24/Louis_Lecture_Notes/21_Copying/Untitled.ipynb
+++ /dev/null
@@ -1,204 +0,0 @@
-{
- "cells": [
-  {
-   "cell_type": "code",
-   "execution_count": 13,
-   "id": "9c14f33c-708b-4095-9a4b-c5b46de4f75c",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "\n",
-    "import numpy as np\n",
-    "from scipy.signal import convolve\n",
-    "\n",
-    "# used for counting the number of living neighbors each cell has\n",
-    "FILTER = np.array([[1, 1, 1],\n",
-    "                   [1, 100, 1],\n",
-    "                   [1, 1, 1]], dtype=np.uint8)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 28,
-   "id": "c69d214a-ca17-4a76-a634-0a456de695b1",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "def evolve(length, generations):\n",
-    "    \"\"\"\n",
-    "    Run the Game of Life. Starting state is random.\n",
-    "\n",
-    "    Parameters\n",
-    "    ----------\n",
-    "    length : int\n",
-    "        Universe will be `length` units per side.\n",
-    "    generations : int\n",
-    "        Number of generations to run simulation.\n",
-    "\n",
-    "    \"\"\"\n",
-    "    current = np.random.randint(2, size=(length, length))\n",
-    "    next = np.empty_like(current)\n",
-    "    current[length//2, 1:(length-1)] = 1\n",
-    "    show_board(current)\n",
-    "    for _ in range(generations):\n",
-    "        advance(current, next)\n",
-    "        current, next = next, current\n",
-    "        show_board(current)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 24,
-   "id": "f804fbb6-ce8d-4a0d-8219-2a0d23ed7b90",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "def advance(current, next):\n",
-    "    \"\"\"\n",
-    "    Calculate the next iteration of the Game of Life.\n",
-    "\n",
-    "    Parameters\n",
-    "    ----------\n",
-    "    current : 2D array\n",
-    "        Current state of universe.\n",
-    "    next : 2D array\n",
-    "        This array will be modified in place so that it contains the\n",
-    "        next step. Must be the same size as `current`.\n",
-    "\n",
-    "    \"\"\"\n",
-    "    assert current.shape[0] == current.shape[1], \\\n",
-    "           'Expected square universe'\n",
-    "    next[:] = 0\n",
-    "    count = convolve(current, FILTER, mode='same')\n",
-    "    next[(count == 3) | (count == 102) | (count == 103)] = 1"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 25,
-   "id": "16c396cc-def8-4077-9889-18f780ebcee8",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "from IPython.display import clear_output, display_html\n",
-    "import time\n",
-    "def show_board(board):\n",
-    "    \"\"\"\n",
-    "    Print the current Game of Life universe in an HTML table.\n",
-    "    Removes any existing output using `IPython.display.clear_output`\n",
-    "    to make an animation. This doesn't scale well beyond ~50x50 boards.\n",
-    "\n",
-    "    Parameters\n",
-    "    ----------\n",
-    "    board : 2D array\n",
-    "        Array representing the current universe.\n",
-    "\n",
-    "    \"\"\"\n",
-    "    clear_output()\n",
-    "    nx, ny = board.shape\n",
-    "    table = '\\n'\n",
-    "    for y in range(ny-1, -1, -1):\n",
-    "        table += ''\n",
-    "        for x in range(0, nx):\n",
-    "            if board[x, y]:\n",
-    "                table += ''\n",
-    "            else:\n",
-    "                table += ''\n",
-    "        table += '\\n'\n",
-    "    table += ''\n",
-    "    display_html(table, raw=True)\n",
-    "    time.sleep(1)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 29,
-   "id": "abab91fb-d51a-43b6-83b3-9e7c4d589537",
-   "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"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "\n",
-    "evolve(40, 3)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "3ca43466-b0cb-47ab-aec3-d6ea725ce664",
-   "metadata": {},
-   "outputs": [],
-   "source": []
-  }
- ],
- "metadata": {
-  "kernelspec": {
-   "display_name": "Python 3 (ipykernel)",
-   "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.10.12"
-  }
- },
- "nbformat": 4,
- "nbformat_minor": 5
-}
diff --git a/f24/Louis_Lecture_Notes/21_Copying/life.ipynb b/f24/Louis_Lecture_Notes/21_Copying/life.ipynb
deleted file mode 100644
index 36df1e2..0000000
--- a/f24/Louis_Lecture_Notes/21_Copying/life.ipynb
+++ /dev/null
@@ -1,232 +0,0 @@
-{
- "cells": [
-  {
-   "cell_type": "markdown",
-   "id": "399087f7",
-   "metadata": {},
-   "source": [
-    "# Conway's Game of Life\n",
-    "\n",
-    "For more on Conway's Game of Life: http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life\n",
-    "\n",
-    "Based on code originally sent to me by [@gvwilson](http://twitter.com/gvwilson)."
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 5,
-   "id": "1020b733",
-   "metadata": {
-    "collapsed": false,
-    "jupyter": {
-     "outputs_hidden": false
-    }
-   },
-   "outputs": [],
-   "source": [
-    "import numpy as np\n",
-    "from scipy.signal import convolve\n",
-    "\n",
-    "# used for counting the number of living neighbors each cell has\n",
-    "FILTER = np.array([[1, 1, 1],\n",
-    "                   [1, 100, 1],\n",
-    "                   [1, 1, 1]], dtype=np.uint8)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 1,
-   "id": "21fcd6ea",
-   "metadata": {
-    "collapsed": false,
-    "jupyter": {
-     "outputs_hidden": false
-    }
-   },
-   "outputs": [],
-   "source": [
-    "def evolve(length, generations):\n",
-    "    \"\"\"\n",
-    "    Run the Game of Life. Starting state is random.\n",
-    "\n",
-    "    Parameters\n",
-    "    ----------\n",
-    "    length : int\n",
-    "        Universe will be `length` units per side.\n",
-    "    generations : int\n",
-    "        Number of generations to run simulation.\n",
-    "\n",
-    "    \"\"\"\n",
-    "    current = np.random.randint(2, size=(length, length))\n",
-    "    next = np.empty_like(current)\n",
-    "    current[length//2, 1:(length-1)] = 1\n",
-    "    show_board(current)\n",
-    "    for _ in range(generations):\n",
-    "        advance(current, next)\n",
-    "        current, next = next, current\n",
-    "        show_board(current)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 2,
-   "id": "4616d525",
-   "metadata": {
-    "collapsed": false,
-    "jupyter": {
-     "outputs_hidden": false
-    }
-   },
-   "outputs": [],
-   "source": [
-    "def advance(current, next):\n",
-    "    \"\"\"\n",
-    "    Calculate the next iteration of the Game of Life.\n",
-    "\n",
-    "    Parameters\n",
-    "    ----------\n",
-    "    current : 2D array\n",
-    "        Current state of universe.\n",
-    "    next : 2D array\n",
-    "        This array will be modified in place so that it contains the\n",
-    "        next step. Must be the same size as `current`.\n",
-    "\n",
-    "    \"\"\"\n",
-    "    assert current.shape[0] == current.shape[1], \\\n",
-    "           'Expected square universe'\n",
-    "    next[:] = 0\n",
-    "    count = convolve(current, FILTER, mode='same')\n",
-    "    next[(count == 3) | (count == 102) | (count == 103)] = 1"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 3,
-   "id": "50e63504",
-   "metadata": {
-    "collapsed": false,
-    "jupyter": {
-     "outputs_hidden": false
-    }
-   },
-   "outputs": [],
-   "source": [
-    "from IPython.display import clear_output, display_html\n",
-    "import time\n",
-    "def show_board(board):\n",
-    "    \"\"\"\n",
-    "    Print the current Game of Life universe in an HTML table.\n",
-    "    Removes any existing output using `IPython.display.clear_output`\n",
-    "    to make an animation. This doesn't scale well beyond ~50x50 boards.\n",
-    "\n",
-    "    Parameters\n",
-    "    ----------\n",
-    "    board : 2D array\n",
-    "        Array representing the current universe.\n",
-    "\n",
-    "    \"\"\"\n",
-    "    clear_output()\n",
-    "    nx, ny = board.shape\n",
-    "    table = '<table style=\"border-color: black; border-width: 5px;\">\\n'\n",
-    "    for y in range(ny-1, -1, -1):\n",
-    "        table += '<tr>'\n",
-    "        for x in range(0, nx):\n",
-    "            if board[x, y]:\n",
-    "                table += '<td style=\"background: black; border-color: white;\"></td>'\n",
-    "            else:\n",
-    "                table += '<td style=\"border-color: white;\"></td>'\n",
-    "        table += '</tr>\\n'\n",
-    "    table += '</table>'\n",
-    "    display_html(table, raw=True)\n",
-    "    time.sleep(0.1)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 9,
-   "id": "b1ebf2f0",
-   "metadata": {
-    "collapsed": false,
-    "jupyter": {
-     "outputs_hidden": false
-    }
-   },
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<table style=\"border-color: black; border-width: 5px;\">\n",
-       "<tr><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "<tr><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"background: black; border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td><td style=\"border-color: white;\"></td></tr>\n",
-       "</table>"
-      ]
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "evolve(40, 400)"
-   ]
-  }
- ],
- "metadata": {
-  "kernelspec": {
-   "display_name": "Python 3 (ipykernel)",
-   "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.10.12"
-  }
- },
- "nbformat": 4,
- "nbformat_minor": 5
-}
-- 
GitLab