Started slides for algorithms, also make the Python more idiomatic (and faster)
[cas-master-teacher-training.git] / hangman-both.ipynb
index 141a66850e1cf64504526031722e87be7fae3cac..d9e565b688e142d8c9b8541c8603a873c5ac5429 100644 (file)
@@ -1,7 +1,7 @@
 {
  "metadata": {
   "name": "",
-  "signature": "sha256:e848b3bb14cbbc0d122596bd49c2e49d1d795881920f1f2a98206e14ff6b2b0a"
+  "signature": "sha256:5e9f030b42097ebbcce2654cdb1d9370fde38b61bdbfa85a0cc700e76d5a8a71"
  },
  "nbformat": 3,
  "nbformat_minor": 0,
@@ -20,7 +20,7 @@
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 27
+     "prompt_number": 71
     },
     {
      "cell_type": "code",
@@ -32,7 +32,7 @@
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 3
+     "prompt_number": 72
     },
     {
      "cell_type": "code",
@@ -43,7 +43,7 @@
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 4
+     "prompt_number": 73
     },
     {
      "cell_type": "code",
       "        self.game_lost = False\n",
       "    \n",
       "    def find_all(self, letter):\n",
-      "        locations = []\n",
-      "        starting=0\n",
-      "        location = self.target.find(letter)\n",
-      "        while location > -1:\n",
-      "            locations += [location]\n",
-      "            starting = location + 1\n",
-      "            location = self.target.find(letter, starting)\n",
-      "        return locations\n",
+      "        return [p for p, l in enumerate(self.target) if l == letter]\n",
       "    \n",
       "    def update_discovered_word(self, guessed_letter):\n",
       "        locations = self.find_all(guessed_letter)\n",
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 24
+     "prompt_number": 74
     },
     {
      "cell_type": "code",
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 6
+     "prompt_number": 75
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 7,
+       "prompt_number": 76,
        "text": [
-        "'gastronomy'"
+        "'strife'"
        ]
       }
      ],
-     "prompt_number": 7
+     "prompt_number": 76
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 8,
+       "prompt_number": 77,
        "text": [
-        "['_', '_', '_', '_', '_', '_', '_', '_', '_', '_']"
+        "['_', '_', '_', '_', '_', '_']"
        ]
       }
      ],
-     "prompt_number": 8
+     "prompt_number": 77
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ _ _ _ _ _ _ _  : Lives = 10 , wrong guesses: \n"
+        "Word: _ _ _ _ _ _  : Lives = 10 , wrong guesses: \n"
        ]
       },
       {
        ]
       }
      ],
-     "prompt_number": 9
+     "prompt_number": 78
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 10,
+       "prompt_number": 79,
        "text": [
-        "9"
+        "10"
        ]
       }
      ],
-     "prompt_number": 10
+     "prompt_number": 79
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 11,
+       "prompt_number": 80,
        "text": [
-        "['e']"
+        "[]"
        ]
       }
      ],
-     "prompt_number": 11
+     "prompt_number": 80
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ _ _ _ _ _ _ _  : Lives = 9 , wrong guesses: e\n"
+        "Word: _ _ _ _ _ e  : Lives = 10 , wrong guesses: \n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: a\n"
+        "Enter letter: d\n"
        ]
       }
      ],
-     "prompt_number": 12
+     "prompt_number": 81
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 13,
+       "prompt_number": 82,
        "text": [
         "9"
        ]
       }
      ],
-     "prompt_number": 13
+     "prompt_number": 82
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 14,
+       "prompt_number": 83,
        "text": [
-        "['_', 'a', '_', '_', '_', '_', '_', '_', '_', '_']"
+        "['_', '_', '_', '_', '_', 'e']"
        ]
       }
      ],
-     "prompt_number": 14
+     "prompt_number": 83
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 15,
+       "prompt_number": 84,
        "text": [
-        "['e']"
+        "['d']"
        ]
       }
      ],
-     "prompt_number": 15
+     "prompt_number": 84
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ _ _  : Lives = 10 , wrong guesses: \n"
+        "Word: _ _ _ _ _ _ _  : Lives = 10 , wrong guesses: \n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: e\n"
+        "Enter letter: d\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ _ _  : Lives = 9 , wrong guesses: e\n"
+        "Word: _ _ _ _ _ _ d  : Lives = 10 , wrong guesses: \n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: a\n"
+        "Enter letter: e\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a _ _ _ _  : Lives = 9 , wrong guesses: e\n"
+        "Word: _ e _ _ _ e d  : Lives = 10 , wrong guesses: \n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: t\n"
+        "Enter letter: f\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a _ _ _ _  : Lives = 8 , wrong guesses: e t\n"
+        "Word: _ e _ _ _ e d  : Lives = 9 , wrong guesses: f\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: i\n"
+        "Enter letter: e\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a _ _ _ _  : Lives = 7 , wrong guesses: e i t\n"
+        "Word: _ e _ _ _ e d  : Lives = 9 , wrong guesses: f\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: o\n"
+        "Enter letter: s\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a _ _ o _  : Lives = 7 , wrong guesses: e i t\n"
+        "Word: _ e _ _ _ e d  : Lives = 8 , wrong guesses: f s\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: s\n"
+        "Enter letter: t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a _ _ o _  : Lives = 6 , wrong guesses: e i s t\n"
+        "Word: _ e _ _ _ e d  : Lives = 7 , wrong guesses: f s t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a _ _ o _  : Lives = 5 , wrong guesses: e i n s t\n"
+        "Word: _ e _ _ _ e d  : Lives = 6 , wrong guesses: f n s t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: h\n"
+        "Enter letter: m\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a _ _ o _  : Lives = 4 , wrong guesses: e h i n s t\n"
+        "Word: _ e _ _ _ e d  : Lives = 5 , wrong guesses: f m n s t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: r\n"
+        "Enter letter: h\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a _ _ o _  : Lives = 3 , wrong guesses: e h i n r s t\n"
+        "Word: _ e _ _ _ e d  : Lives = 4 , wrong guesses: f h m n s t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: d\n"
+        "Enter letter: o\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a _ _ o _  : Lives = 2 , wrong guesses: d e h i n r s t\n"
+        "Word: _ e _ _ _ e d  : Lives = 3 , wrong guesses: f h m n o s t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: l\n"
+        "Enter letter: i\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a l l o _  : Lives = 2 , wrong guesses: d e h i n r s t\n"
+        "Word: _ e _ i _ e d  : Lives = 3 , wrong guesses: f h m n o s t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: y\n"
+        "Enter letter: r\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: a l l o _  : Lives = 1 , wrong guesses: d e h i n r s t y\n"
+        "Word: r e _ i r e d  : Lives = 3 , wrong guesses: f h m n o s t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "You won! The word was allow\n"
+        "You won! The word was rewired\n"
        ]
       },
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 16,
+       "prompt_number": 85,
        "text": [
         "True"
        ]
       }
      ],
-     "prompt_number": 16
+     "prompt_number": 85
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ _ _ _ _ _  : Lives = 10 , wrong guesses: \n"
+        "Word: _ _ _ _ _  : Lives = 10 , wrong guesses: \n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ e e _ _ _  : Lives = 10 , wrong guesses: \n"
+        "Word: _ _ _ _ _  : Lives = 9 , wrong guesses: e\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: a\n"
+        "Enter letter: s\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ e e _ _ _  : Lives = 9 , wrong guesses: a\n"
+        "Word: _ _ _ _ s  : Lives = 9 , wrong guesses: e\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: i\n"
+        "Enter letter: t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ e e i _ _  : Lives = 9 , wrong guesses: a\n"
+        "Word: _ _ _ _ s  : Lives = 8 , wrong guesses: e t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: n\n"
+        "Enter letter: o\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ e e i n _  : Lives = 9 , wrong guesses: a\n"
+        "Word: _ _ _ _ s  : Lives = 7 , wrong guesses: e o t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: g\n"
+        "Enter letter: i\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ e e i n g  : Lives = 9 , wrong guesses: a\n"
+        "Word: _ _ _ _ s  : Lives = 6 , wrong guesses: e i o t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ e e i n g  : Lives = 8 , wrong guesses: a u\n"
+        "Word: _ _ _ _ s  : Lives = 5 , wrong guesses: e i o t u\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: s\n"
+        "Enter letter: a\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: s _ _ e e i n g  : Lives = 8 , wrong guesses: a u\n"
+        "Word: _ _ _ _ s  : Lives = 4 , wrong guesses: a e i o t u\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: h\n"
+        "Enter letter: y\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: s _ _ e e i n g  : Lives = 7 , wrong guesses: a h u\n"
+        "Word: _ y _ _ s  : Lives = 4 , wrong guesses: a e i o t u\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: c\n"
+        "Enter letter: w\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: s _ _ e e i n g  : Lives = 6 , wrong guesses: a c h u\n"
+        "Word: _ y _ _ s  : Lives = 3 , wrong guesses: a e i o t u w\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: t\n"
+        "Enter letter: h\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: s _ _ e e i n g  : Lives = 5 , wrong guesses: a c h t u\n"
+        "Word: h y _ _ s  : Lives = 3 , wrong guesses: a e i o t u w\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: r\n"
+        "Enter letter: m\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: s _ r e e i n g  : Lives = 5 , wrong guesses: a c h t u\n"
+        "Word: h y m _ s  : Lives = 3 , wrong guesses: a e i o t u w\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: c\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "Word: s _ r e e i n g  : Lives = 4 , wrong guesses: a c h t u\n"
+        "Enter letter: n\n"
        ]
       },
       {
-       "name": "stdout",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: p\n"
+        "You won! The word was hymns\n"
        ]
       },
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 38,
+       "prompt_number": 86,
        "text": [
         "True"
        ]
       }
      ],
-     "prompt_number": 38
+     "prompt_number": 86
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 39,
+       "prompt_number": 108,
        "text": [
-        "'spreeing'"
+        "'six'"
        ]
       }
      ],
-     "prompt_number": 39
+     "prompt_number": 108
     },
     {
      "cell_type": "code",
       "class PlayerAlphabetical:\n",
       "    def guess(self, discovered, missed, lives):\n",
       "        guessed_letters = [l.lower() for l in discovered + missed if l in string.ascii_letters]\n",
-      "        return self.ordered_subtract(string.ascii_lowercase, guessed_letters)[0]\n",
-      "    \n",
-      "    def ordered_subtract(self, ordered_list, to_remove):\n",
-      "        for r in to_remove:\n",
-      "            if r in ordered_list:\n",
-      "                ri = ordered_list.index(r)\n",
-      "                ordered_list = ordered_list[:ri] + ordered_list[ri+1:]\n",
-      "        return ordered_list"
+      "        return [l for l in string.ascii_lowercase if l not in guessed_letters][0]"
      ],
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 43
+     "prompt_number": 109
     },
     {
      "cell_type": "code",
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 44
+     "prompt_number": 110
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 45,
+       "prompt_number": 111,
        "text": [
         "False"
        ]
       }
      ],
-     "prompt_number": 45
+     "prompt_number": 111
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 46,
+       "prompt_number": 112,
        "text": [
-        "['d', 'e', '_', 'i', 'a', 'n', '_', '_']"
+        "['l', 'e', 'g', 'a', 'l', 'l', '_']"
        ]
       }
      ],
-     "prompt_number": 46
+     "prompt_number": 112
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 47,
+       "prompt_number": 113,
        "text": [
-        "'deviants'"
+        "'legally'"
        ]
       }
      ],
-     "prompt_number": 47
+     "prompt_number": 113
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Target: peoples ; Discovered: ['_', 'e', '_', '_', '_', 'e', '_'] ; Lives remaining: 0\n"
+        "Target: cavalry ; Discovered: ['c', 'a', '_', 'a', 'l', '_', '_'] ; Lives remaining: 0\n"
        ]
       }
      ],
-     "prompt_number": 54
+     "prompt_number": 114
     },
     {
      "cell_type": "code",
       "class PlayerFreqOrdered:\n",
       "    def guess(self, discovered, missed, lives):\n",
       "        guessed_letters = [l.lower() for l in discovered + missed if l in string.ascii_letters]\n",
-      "        return self.ordered_subtract(LETTERS_IN_ORDER, guessed_letters)[0]\n",
-      "    \n",
-      "    def ordered_subtract(self, ordered_list, to_remove):\n",
-      "        for r in to_remove:\n",
-      "            if r in ordered_list:\n",
-      "                ri = ordered_list.index(r)\n",
-      "                ordered_list = ordered_list[:ri] + ordered_list[ri+1:]\n",
-      "        return ordered_list"
+      "        return [l for l in LETTERS_IN_ORDER if l not in guessed_letters][0]"
      ],
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 55
+     "prompt_number": 115
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Target: wadding ; Discovered: ['w', 'a', 'd', 'd', 'i', 'n', '_'] ; Lives remaining: 0\n"
+        "Target: deathblow ; Discovered: ['d', 'e', 'a', 't', 'h', '_', 'l', 'o', 'w'] ; Lives remaining: 0\n"
        ]
       }
      ],
-     "prompt_number": 56
+     "prompt_number": 116
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Target: pharmacopoeias ; Discovered: ['p', 'h', 'a', 'r', 'm', 'a', 'c', 'o', 'p', 'o', 'e', 'i', 'a', 's'] ; Lives remaining: 1\n"
+        "Target: littered ; Discovered: ['l', 'i', 't', 't', 'e', 'r', 'e', 'd'] ; Lives remaining: 5\n"
        ]
       }
      ],
-     "prompt_number": 57
+     "prompt_number": 117
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Target: forklift ; Discovered: ['_', 'o', 'r', '_', 'l', 'i', '_', 't'] ; Lives remaining: 0\n"
+        "Target: licenced ; Discovered: ['l', 'i', 'c', 'e', 'n', 'c', 'e', 'd'] ; Lives remaining: 1\n"
        ]
       }
      ],
-     "prompt_number": 58
+     "prompt_number": 118
     },
     {
      "cell_type": "code",
       "        \n",
       "    def guess(self, discovered, missed, lives):\n",
       "        guessed_letters = [l.lower() for l in discovered + missed if l in string.ascii_letters]\n",
-      "        self.ordered_subtract(guessed_letters)\n",
-      "        return self.ordered_letters[0]\n",
-      "\n",
-      "    def ordered_subtract(self, to_remove):\n",
-      "        for r in to_remove:\n",
-      "            if r in self.ordered_letters:\n",
-      "                ri = self.ordered_letters.index(r)\n",
-      "                self.ordered_letters = self.ordered_letters[:ri] + self.ordered_letters[ri+1:]"
+      "        return [l for l in self.ordered_letters if l not in guessed_letters][0]"
      ],
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 65
+     "prompt_number": 119
     },
     {
      "cell_type": "code",
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 66
+     "prompt_number": 120
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Target: nods ; Discovered: ['n', 'o', 'd', 's'] ; Lives remaining: 4\n"
+        "Target: unworthier ; Discovered: ['u', 'n', 'w', 'o', 'r', 't', 'h', 'i', 'e', 'r'] ; Lives remaining: 5\n"
        ]
       }
      ],
-     "prompt_number": 67
+     "prompt_number": 121
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Target: firsthand ; Discovered: ['f', 'i', 'r', 's', 't', 'h', 'a', 'n', 'd'] ; Lives remaining: 2\n"
+        "Target: kneel ; Discovered: ['_', 'n', 'e', 'e', 'l'] ; Lives remaining: 0\n"
        ]
       }
      ],
-     "prompt_number": 68
+     "prompt_number": 122
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Target: lawbreakers ; Discovered: ['l', 'a', '_', 'b', '_', 'e', 'a', 'k', 'e', '_', '_'] ; Lives remaining: 0\n"
+        "Target: provisoes ; Discovered: ['_', '_', '_', '_', 'i', '_', '_', 'e', '_'] ; Lives remaining: 0\n"
        ]
       }
      ],
-     "prompt_number": 69
+     "prompt_number": 123
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Target: chilblains ; Discovered: ['_', '_', '_', '_', '_', '_', '_', '_', '_', 's'] ; Lives remaining: 0\n"
+        "Target: invincible ; Discovered: ['_', '_', 'v', '_', '_', '_', '_', '_', '_', '_'] ; Lives remaining: 0\n"
        ]
       }
      ],
-     "prompt_number": 74
+     "prompt_number": 124
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Target: talks ; Discovered: ['t', '_', '_', '_', 's'] ; Lives remaining: 0\n"
+        "Target: clogging ; Discovered: ['_', '_', '_', '_', '_', '_', '_', '_'] ; Lives remaining: 0\n"
        ]
       }
      ],
-     "prompt_number": 75
+     "prompt_number": 125
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "42\n"
+        "44\n"
        ]
       }
      ],
-     "prompt_number": 77
+     "prompt_number": 126
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "319\n"
+        "320\n"
        ]
       }
      ],
-     "prompt_number": 78
+     "prompt_number": 127
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "10\n"
+        "7\n"
        ]
       }
      ],
-     "prompt_number": 80
+     "prompt_number": 128
     },
     {
      "cell_type": "code",
      "input": [],
      "language": "python",
      "metadata": {},
-     "outputs": []
+     "outputs": [],
+     "prompt_number": 128
     }
    ],
    "metadata": {}