Finished the text
authorNeil Smith <neil.git@njae.me.uk>
Fri, 23 Jan 2015 07:28:47 +0000 (07:28 +0000)
committerNeil Smith <neil.git@njae.me.uk>
Fri, 23 Jan 2015 07:28:47 +0000 (07:28 +0000)
SIGNED.md
hangman/02-hangman-guesser.ipynb
hangman/03-hangman-both.ipynb
hangman/04-hangman-better.ipynb [new file with mode: 0644]
hangman/05-hangman-better.ipynb [deleted file]
hangman/05-hangman-logging.ipynb [new file with mode: 0644]
hangman/06-hangman-logging.ipynb [deleted file]
hangman/hangman.py

index 4fa48b27d6b67667e0b0ed97f91d25e457470f82..447be387a488f8998f0b91cedccc7a7f43af46a0 100644 (file)
--- a/SIGNED.md
+++ b/SIGNED.md
@@ -3,19 +3,19 @@
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
-iQIcBAABAgAGBQJUsmqUAAoJEJPB2e07Pgbq7roP/3c7WymRzq3CLhcdFURrX8yN
-lNf8ZktWzUkmJPee7T8Hjh44MPk7itt5RuRqltZA8COOJIRRFIRnV7eebG5LhBof
-ynDZqQKOBUshqWo67b8U7wQnSVZN1KmMqbEapks67xtOXkJqD8WSKM5mtnM123tU
-Z8pc1mwt8od3U26tjHP/aLSvXgxqv38ws6fMt1DzriPd5t2G/p5dCRngZRquAlXz
-y2uFtUFZ2e51Ji3D6ntNe2BRgdEOF4I6AH1YbM8C+Irv3BUv2ez7x3D8RH79Lk7b
-hmEnhqwcHTFPzn29K+2swzn1q+youfXmtVxhwQsBPYpamQdkn/7CBmPHa6SEeXOD
-0Dcs3/R1YBPpj81VAYA9ZZs2pUGWtoJDxtpabZ93zfReFOYNq6DbgzfA8SW+sB7U
-Bxf1DBQr6C8PnrQdp2lxsHKIXN/4cQNqwOP3NmuIAo38RpLtKiEfLls7zzIDbpAz
-RN2EfL6le85gUyAD/mp56guwvYgXImvDBVZ5RUDlw67AaKqeTfvr7kTLo1vICdUp
-kQwdG7fUcg4zSpNPZnYcVApPHxZI6nojWwfJDHSErkFmsJBK6YpNOpFM7nmxnR9T
-nrNehH6I67tjNU0thM8HXzG9cO/QBH0Ms8tXAeUQMvI1RgbeMOXNBzyh3FJrzQET
-kKgyU5dzDmAK1Bg4AQ05
-=7t35
+iQIcBAABAgAGBQJUwfg1AAoJEJPB2e07PgbqpYEP/3HVphHcvq977tiPTB854NAY
+YDM2QPnKQ7kQetphTX9Y/U0qwGeYph+Rd00lqdJgBJLhJr15UZHEHd8SLF+yB58x
+m39e6YBwdzsyilpHl/GHKKtDjcXuMsnNvCVGdpeCP/319i0FTSzT/kBpkyBQAXK0
+TCBocPo5GaeSAgxdZ1DJA73wMlCiQzJsv9Vjf7rg3APwetuFwY8ZpVwfcslglnsX
+vGu1lfbdIvVpbhyjGxyI0zaXzehVuCIyBb6Hu0lw0FGU060ntN75Pz++Rf3LrE+U
+0XnCeYjbbWLTzVE436mWB45MJnc48dTzdsLMDMEE5z0dGifJf1nbtNgqsVRi1vZQ
+i9yGCCwKPP6rhZ1ezfNfpmzjQ6riF26RXYq9V4w6oCDTbIN9vjPFNC0+5YYYDjM1
+ROcccxFvUKTkb91NECcAbZGqPFWovRvaFX7KzGyizEWCGMoD7/5rpRw3YrY/x14C
+lhZ6n5AwEAqL9RBZk+Mrubz+YgNSDbTM/+QcL5PHGb8mRC41PD4xSo4PCPU6AB+y
+vDSW523YNkhHB3IC3uAijZppimyk484IYsuw1WY9uVdClgCsUcs2VT8E3GOQOemQ
+34ZaPgeZR/JLKVpLo3lCuxbgI2JsNvGYmFw8moTcW4mTlO3dmPSi6s3bns3/GNA8
+OTu2ZMrmO+Lff9JwTr5L
+=SFX3
 -----END PGP SIGNATURE-----
 
 ```
@@ -41,6 +41,11 @@ size    exec  file                                 contents
 21947           euler-11.ipynb                     81780dca17496751894f582e8691935ee6f94949017fb3135087056489f8ad88                                                                 
 24903           euler-14.ipynb                     3652a2be86ec270420431814efa453f8679ad054ae28c015d34232c48dac16bd                                                                 
                 hangman/                                                                                                                                                            
+18717             01-hangman-setter.ipynb          72cebe4f36ddcd4c856c4520d4566e5e6f4793ad3d9f716a7f9ab1e52a7b9f71                                                                 
+9100              02-hangman-guesser.ipynb         1a74d6cc7065cb756d8d0ecfd58b41da6d75f79c76def20aab0b23725ac47fbf                                                                 
+34900             03-hangman-both.ipynb            f75a5c2934f9385dc02db3efaf71fca8ed91cee86173730a3f99445b8841a223                                                                 
+55675             04-hangman-better.ipynb          d123307c6004a2b34433904ca541edb9e4ceba54877e27b1e65a428d68f284e3                                                                 
+258871            05-hangman-logging.ipynb         5f94f25200c6f0c01ff27e3392afd0ef172dab0df5557aebb4a76692052bd167                                                                 
 106328            adaptive_excluded.csv            72ea6bb3f6f0301d7f5592766b7854c1a4c46ab01ca0677357aa367e1f2b6783|92e30fc15f783e701721a38039b2cd54d96bccd5cfdc37e92f70e174d6e941eb
 78326             adaptive_included.csv            39e4947fc840ea9e7c7ee8c658c65deb196ffed86a1b2e5e3f6c3770259e6a3f|78597f1124040a884533f157b99d898c4cd1b372bb20432652a5376d9de5090d
 109806            adaptive_length.csv              296ddbe817525f33b15e7489cc0f0ff2e7852adcd5720673632673d3d6c04a2f|b151fc20e1399e517f03be172e22c115934af891b6f6509b94381b2e15b613dc
@@ -50,13 +55,8 @@ size    exec  file                                 contents
 118543            fixed_alphabetical_reversed.csv  1a5bc0d94947f4260bb2bb0f6bfd21434f2876e75907b49669bf49356fb59967|d62bb39d0a775abf63ba29e22decc208ff0810f70f0761729eb92a6cc809b9a4
 109497            fixed_dict_order.csv             c593bb2ff8eb353906d591d34a3d5b6dcf399a414424dbae1c245fa7588e829a|6c97d8cc9db5ba4a674c11e669527cfb8e39e8339b7b3aea1b12b107db249d7e
 112991            fixed_order.csv                  61c803950fb824ea20f91c328450d80ce69a65e0d5cfa24e961019f795a75feb|3a2d6099afe1785434d314d2eefc1249cacb15afb2751e75fa448887a8f22b41
-53469             hangman-better.ipynb             04adeb21f6e3688123ea37f41135affb4b81e76e572e31da04fc1c94edc02045                                                                 
-27923             hangman-both.ipynb               279221758793f80048923b335037ba7639cd299814878142ba15746b627dbd63                                                                 
-9419              hangman-guesser.ipynb            d867d7f57b1b59b9cf74f4594fe4b6fd5761e93799292abfb65dcf35381f25e1                                                                 
-258871            hangman-logging.ipynb            5f94f25200c6f0c01ff27e3392afd0ef172dab0df5557aebb4a76692052bd167                                                                 
-12247             hangman-setter.ipynb             bc8d8d7f0bddbe128d273ccd174bbf4ad338771c9159b5b07b262a3e5fede892                                                                 
 44670             hangman-split-player.ipynb       b72ff88817c6cce83d26a701e7e3b17d4332f10fa6cf97520dd7dd6ee6e00464                                                                 
-6437              hangman.py                       90895564bcf4c5b8b6f06c6e80209c749947ebbb38505ca2f441e338e59eb16a                                                                 
+6173              hangman.py                       ba4ac6cbeb4691433b304e1301190c67674f82ce9ba7b62637bf342c4504cabd                                                                 
 10890             word_filter_comparison.ipynb     9b80fff718b9ff5620d9441123ebbf60073ea337d14e1e4825ef7860f4e1346b                                                                 
 5286            hangman.html                       b9a4e8d3f96c57d64dd678fecb1dbd453ee6b415a0bb5a1c232e4e224310eb88                                                                 
 4087            hangman2.html                      18e1678e58a1d89f5d2e9fd68de94152f9f34bb2ad93023b6fb69b970bf53a4a                                                                 
index 8f482b1852f8f02f3f9f8cbf6bcb4268afa69f0a..66f3b491cd05243aadde8b3aefea25bcf8769bd3 100644 (file)
@@ -1,7 +1,7 @@
 {
  "metadata": {
   "name": "",
-  "signature": "sha256:393162de43635426518dd3dca8100dca49558a55f990aede7c52f3a98de60612"
+  "signature": "sha256:eb35fa497310659186b8d082192529c5f3ce0083adaa1704282cce83da804db6"
  },
  "nbformat": 3,
  "nbformat_minor": 0,
       "Someone needs to keep track of the incorrect guesses so that the guesser doesn't keep making the same wrong guess. As the setter is already keeping track of the rest of the state, it's probably easier if the setter also keeps track of the wrong letters. That might allow us to keep the guesser state-free, which will keep it simpler. "
      ]
     },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "## Getting a game state\n",
+      "If we need the guesser to interact with a human, let's get it to read the game state from a human.\n",
+      "\n",
+      "Remember that we want to return two lists of characters, not two strings.\n",
+      "\n",
+      "We'll also not do any input validation. Life's too short (for this example)."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "def read_game():\n",
+      "    discovered = input('Enter the discovered word: ')\n",
+      "    missed = input('Enter the wrong guesses: ')\n",
+      "    return list(discovered), list(missed)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 18
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "read_game()"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "name": "stdout",
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "Enter the discovered word: __pp_\n"
+       ]
+      },
+      {
+       "name": "stdout",
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "Enter the wrong guesses: xv\n"
+       ]
+      },
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 19,
+       "text": [
+        "(['_', '_', 'p', 'p', '_'], ['x', 'v'])"
+       ]
+      }
+     ],
+     "prompt_number": 19
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "That was easy."
+     ]
+    },
     {
      "cell_type": "markdown",
      "metadata": {},
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 1
+     "prompt_number": 20
     },
     {
      "cell_type": "markdown",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 3,
+       "prompt_number": 21,
        "text": [
         "Counter({'e': 53111, 't': 38981, 'a': 35137, 'o': 33512, 'i': 30140, 'h': 29047, 'n': 28682, 's': 27194, 'r': 24508, 'd': 18563, 'l': 17145, 'u': 13116, 'm': 11787, 'w': 11266, 'c': 10499, 'y': 9431, 'f': 8975, 'g': 7887, 'p': 6835, 'b': 6362, 'v': 4452, 'k': 3543, 'x': 549, 'j': 452, 'q': 426, 'z': 149})"
        ]
       }
      ],
-     "prompt_number": 3
+     "prompt_number": 21
     },
     {
      "cell_type": "markdown",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 6,
+       "prompt_number": 22,
        "text": [
         "[('e', 53111),\n",
         " ('t', 38981),\n",
        ]
       }
      ],
-     "prompt_number": 6
+     "prompt_number": 22
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 4,
-       "text": [
-        "['e',\n",
-        " 't',\n",
-        " 'a',\n",
-        " 'o',\n",
-        " 'i',\n",
-        " 'h',\n",
-        " 'n',\n",
-        " 's',\n",
-        " 'r',\n",
-        " 'd',\n",
-        " 'l',\n",
-        " 'u',\n",
-        " 'm',\n",
-        " 'w',\n",
-        " 'c',\n",
-        " 'y',\n",
-        " 'f',\n",
-        " 'g',\n",
-        " 'p',\n",
-        " 'b',\n",
-        " 'v',\n",
-        " 'k',\n",
-        " 'x',\n",
-        " 'j',\n",
-        " 'q',\n",
-        " 'z']"
-       ]
-      }
-     ],
-     "prompt_number": 4
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "def make_guess():\n",
-      "    guessed_letters = read_game()\n",
-      "    unguessed_letters_in_order = ordered_subtract(letters_in_order, guessed_letters)\n",
-      "    print('My guess is:', unguessed_letters_in_order[0])"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 29
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "def read_game():\n",
-      "    discovered = input('Enter the discovered word: ')\n",
-      "    missed = input('Enter the wrong guesses: ')\n",
-      "    return [l for l in lower(discovered + missed) if l in string.ascii_letters]"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 30
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "def ordered_subtract(ordered_list, to_remove):\n",
-      "    for r in to_remove:\n",
-      "        if r in ordered_list:\n",
-      "            ordered_list.remove(r)\n",
-      "    return ordered_list"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 19
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "letters_in_order"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 20,
+       "prompt_number": 23,
        "text": [
         "['e',\n",
         " 't',\n",
        ]
       }
      ],
-     "prompt_number": 20
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "ordered_subtract(letters_in_order, 'etaoin')"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 21,
-       "text": [
-        "['h',\n",
-        " 's',\n",
-        " 'r',\n",
-        " 'd',\n",
-        " 'l',\n",
-        " 'u',\n",
-        " 'm',\n",
-        " 'w',\n",
-        " 'c',\n",
-        " 'y',\n",
-        " 'f',\n",
-        " 'g',\n",
-        " 'p',\n",
-        " 'b',\n",
-        " 'v',\n",
-        " 'k',\n",
-        " 'x',\n",
-        " 'j',\n",
-        " 'q',\n",
-        " 'z']"
-       ]
-      }
-     ],
-     "prompt_number": 21
+     "prompt_number": 23
     },
     {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "letters_in_order"
-     ],
-     "language": "python",
+     "cell_type": "markdown",
      "metadata": {},
-     "outputs": [
-      {
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 22,
-       "text": [
-        "['h',\n",
-        " 's',\n",
-        " 'r',\n",
-        " 'd',\n",
-        " 'l',\n",
-        " 'u',\n",
-        " 'm',\n",
-        " 'w',\n",
-        " 'c',\n",
-        " 'y',\n",
-        " 'f',\n",
-        " 'g',\n",
-        " 'p',\n",
-        " 'b',\n",
-        " 'v',\n",
-        " 'k',\n",
-        " 'x',\n",
-        " 'j',\n",
-        " 'q',\n",
-        " 'z']"
-       ]
-      }
-     ],
-     "prompt_number": 22
+     "source": [
+      "## Make a guess\n",
+      "How to make a guess? We want to guess the most common letter that hasn't already been guessed. \n",
+      "\n",
+      "That means we want to filter the available letters by removing the ones already guessed, and then take the first letter of the ones that are left. "
+     ]
     },
     {
      "cell_type": "code",
      "collapsed": false,
      "input": [
-      "def ordered_subtract(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"
+      "def make_guess(discovered, missed):\n",
+      "    return [l for l in letters_in_order if l not in (discovered + missed)][0]"
      ],
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 26
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "letters_in_order = [p[0] for p in letter_counts.most_common()]\n",
-      "letters_in_order"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 24,
-       "text": [
-        "['e',\n",
-        " 't',\n",
-        " 'a',\n",
-        " 'o',\n",
-        " 'i',\n",
-        " 'h',\n",
-        " 'n',\n",
-        " 's',\n",
-        " 'r',\n",
-        " 'd',\n",
-        " 'l',\n",
-        " 'u',\n",
-        " 'm',\n",
-        " 'w',\n",
-        " 'c',\n",
-        " 'y',\n",
-        " 'f',\n",
-        " 'g',\n",
-        " 'p',\n",
-        " 'b',\n",
-        " 'v',\n",
-        " 'k',\n",
-        " 'x',\n",
-        " 'j',\n",
-        " 'q',\n",
-        " 'z']"
-       ]
-      }
-     ],
-     "prompt_number": 24
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "ordered_subtract(letters_in_order, 'etaoin')"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 27,
-       "text": [
-        "['h',\n",
-        " 's',\n",
-        " 'r',\n",
-        " 'd',\n",
-        " 'l',\n",
-        " 'u',\n",
-        " 'm',\n",
-        " 'w',\n",
-        " 'c',\n",
-        " 'y',\n",
-        " 'f',\n",
-        " 'g',\n",
-        " 'p',\n",
-        " 'b',\n",
-        " 'v',\n",
-        " 'k',\n",
-        " 'x',\n",
-        " 'j',\n",
-        " 'q',\n",
-        " 'z']"
-       ]
-      }
-     ],
      "prompt_number": 27
     },
     {
      "cell_type": "code",
      "collapsed": false,
      "input": [
-      "letters_in_order"
+      "make_guess(list('__pp_'), list('exv'))"
      ],
      "language": "python",
      "metadata": {},
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 28,
+       "prompt_number": 26,
        "text": [
-        "['e',\n",
-        " 't',\n",
-        " 'a',\n",
-        " 'o',\n",
-        " 'i',\n",
-        " 'h',\n",
-        " 'n',\n",
-        " 's',\n",
-        " 'r',\n",
-        " 'd',\n",
-        " 'l',\n",
-        " 'u',\n",
-        " 'm',\n",
-        " 'w',\n",
-        " 'c',\n",
-        " 'y',\n",
-        " 'f',\n",
-        " 'g',\n",
-        " 'p',\n",
-        " 'b',\n",
-        " 'v',\n",
-        " 'k',\n",
-        " 'x',\n",
-        " 'j',\n",
-        " 'q',\n",
-        " 'z']"
+        "'t'"
        ]
       }
      ],
-     "prompt_number": 28
+     "prompt_number": 26
     },
     {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "make_guess()"
-     ],
-     "language": "python",
+     "cell_type": "markdown",
      "metadata": {},
-     "outputs": [
-      {
-       "name": "stdout",
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "Enter the discovered word: _a__y\n"
-       ]
-      },
-      {
-       "name": "stdout",
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "Enter the wrong guesses: eit\n"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "My guess is: o\n"
-       ]
-      }
-     ],
-     "prompt_number": 31
+     "source": [
+      "...and that's it. We don't need to keep track of game end: the setting player can do that.\n",
+      "\n",
+      "It's easy to see how we could have different strategies, depending on the order of letters used in the `make_guess` procedure. But that's for next time."
+     ]
     },
     {
      "cell_type": "code",
index d9e565b688e142d8c9b8541c8603a873c5ac5429..543d83203262ae3c259f61ec3bc7919182ee7ece 100644 (file)
@@ -1,13 +1,51 @@
 {
  "metadata": {
   "name": "",
-  "signature": "sha256:5e9f030b42097ebbcce2654cdb1d9370fde38b61bdbfa85a0cc700e76d5a8a71"
+  "signature": "sha256:8dfb2bb1cf596c711c837f4c7c2d8706f9dcacc1a0ffc3dc21c1d0fedd3fc6bf"
  },
  "nbformat": 3,
  "nbformat_minor": 0,
  "worksheets": [
   {
    "cells": [
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "#Putting both halves together\n",
+      "We now have systems that can do both halves of the Hangman game. Now it's time to put them together so that we can get a machine to play itself. At the moment, let's concentrate on just the plumbing: let's get the two halves working together. In the next step, we'll think about different strategies and compare their effectiveness.\n",
+      "\n",
+      "The word of this section is \"encapsulation.\" \n",
+      "\n",
+      "First, a change in terminology. We'll call a `player` the thing that makes the guesses (the guesser player from before). We'll call a `game` the thing that handles receiving guesses, updating `discovered` words, updating lives and all of that. That's what was the setting player from before, but without the bit about picking a random word. We'll have the `game` accept the `target` as a parameter, so that we can test everything more easily (if we know what word the `player` is trying to guess, we can predict what it should do).\n",
+      "\n",
+      "Back to encapsulation.\n",
+      "\n",
+      "We want to bundle all the state information for a `game` into one 'thing' so that we don't need to worry about global variables. We will also want to bundle up everything to do with a `player` into one 'thing' so we can tell the game about it. For the `player`, the thing will include both any state it needs and the definition of that `player`'s guessing strategy. We're also going to have a bunch of related players, all doing much the same thing but with different strategies.\n",
+      "\n",
+      "In this case, objects seem like a natural fit.\n",
+      "\n",
+      "(Insert Neil's aikido instructor story here.)"
+     ]
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "##Object-orientation in Python\n",
+      "There are a few things to remember about object orientation in Python.\n",
+      "\n",
+      "1. It's an ugly kludge that was bolted on long after the language was defined.\n",
+      "\n",
+      "2. `self` needs to be passed in to all object methods as the first parameter, though it doesn't appear when you call the method.\n",
+      "\n",
+      "3. Use `self.whatever` to refer to the instance variable `whatever`\n",
+      "\n",
+      "4. Use `self.however(arg1, arg2)` when one method calls another in the same object.\n",
+      "\n",
+      "Apart from that, it's pretty straightforward."
+     ]
+    },
     {
      "cell_type": "code",
      "collapsed": false,
@@ -20,7 +58,7 @@
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 71
+     "prompt_number": 43
     },
     {
      "cell_type": "code",
@@ -32,7 +70,7 @@
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 72
+     "prompt_number": 44
     },
     {
      "cell_type": "code",
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 73
+     "prompt_number": 45
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "This is pretty much the same code as for the `setter` part, just with plenty of `self` statements scatter around. A few things to note:\n",
+      "\n",
+      "* `initialise()` is now named `__init__()` (note the double underscores fore and aft).\n",
+      "* `player` and `lives` are parameters to the `game`, but with default values.\n",
+      "* I've added two new flags, `game_won` and `game_lost`.\n",
+      "* `do_turn` asks the player for a guess, if there is a player.\n",
+      "* The `guess()` method of the `player` is passed the `lives`, in case the guess should change depending on the progress of the game (the `player` can always ignore it).\n",
+      "* After a guess has been processed, `do_turn` has a few more statements to set the relevant flags to represent the state of the game.\n",
+      "* `report_on_game()` has been added for when the game is being played against a human."
+     ]
     },
     {
      "cell_type": "code",
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 74
+     "prompt_number": 46
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Let's test it!"
+     ]
     },
     {
      "cell_type": "code",
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 75
+     "prompt_number": 47
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 76,
+       "prompt_number": 48,
        "text": [
-        "'strife'"
+        "'distension'"
        ]
       }
      ],
-     "prompt_number": 76
+     "prompt_number": 48
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 77,
+       "prompt_number": 49,
        "text": [
-        "['_', '_', '_', '_', '_', '_']"
+        "['_', '_', '_', '_', '_', '_', '_', '_', '_', '_']"
        ]
       }
      ],
-     "prompt_number": 77
+     "prompt_number": 49
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ _ _ _  : Lives = 10 , wrong guesses: \n"
+        "Word: _ _ _ _ _ _ _ _ _ _  : Lives = 10 , wrong guesses: \n"
        ]
       },
       {
        ]
       }
      ],
-     "prompt_number": 78
+     "prompt_number": 50
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 79,
+       "prompt_number": 51,
        "text": [
         "10"
        ]
       }
      ],
-     "prompt_number": 79
+     "prompt_number": 51
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 80,
+       "prompt_number": 52,
        "text": [
         "[]"
        ]
       }
      ],
-     "prompt_number": 80
+     "prompt_number": 52
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ _ _ e  : Lives = 10 , wrong guesses: \n"
+        "Word: _ _ _ _ e _ _ _ _ _  : Lives = 10 , wrong guesses: \n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: d\n"
+        "Enter letter: q\n"
        ]
       }
      ],
-     "prompt_number": 81
+     "prompt_number": 53
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 82,
+       "prompt_number": 54,
        "text": [
         "9"
        ]
       }
      ],
-     "prompt_number": 82
+     "prompt_number": 54
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 83,
+       "prompt_number": 55,
        "text": [
-        "['_', '_', '_', '_', '_', 'e']"
+        "['_', '_', '_', '_', 'e', '_', '_', '_', '_', '_']"
        ]
       }
      ],
-     "prompt_number": 83
+     "prompt_number": 55
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 84,
+       "prompt_number": 56,
        "text": [
-        "['d']"
+        "['q']"
        ]
       }
      ],
-     "prompt_number": 84
+     "prompt_number": 56
     },
     {
      "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: d\n"
+        "Enter letter: e\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ _ _ _ d  : Lives = 10 , wrong guesses: \n"
+        "Word: e _ e _ _ _ _ e  : Lives = 10 , wrong guesses: \n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: e\n"
+        "Enter letter: x\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ e _ _ _ e d  : Lives = 10 , wrong guesses: \n"
+        "Word: e _ e _ _ _ _ e  : Lives = 9 , wrong guesses: x\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: f\n"
+        "Enter letter: s\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ e _ _ _ e d  : Lives = 9 , wrong guesses: f\n"
+        "Word: e _ e _ _ _ _ e  : Lives = 8 , wrong guesses: s x\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: e\n"
+        "Enter letter: l\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ e _ _ _ e d  : Lives = 9 , wrong guesses: f\n"
+        "Word: e _ e _ _ _ _ e  : Lives = 7 , wrong guesses: l s x\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: s\n"
+        "Enter letter: t\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ e _ _ _ e d  : Lives = 8 , wrong guesses: f s\n"
+        "Word: e _ e _ _ _ _ e  : Lives = 6 , wrong guesses: l s t x\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: t\n"
+        "Enter letter: m\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ e _ _ _ e d  : Lives = 7 , wrong guesses: f s t\n"
+        "Word: e _ e _ _ _ _ e  : Lives = 5 , wrong guesses: l m s t x\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: n\n"
+        "Enter letter: h\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ e _ _ _ e d  : Lives = 6 , wrong guesses: f n s t\n"
+        "Word: e _ e _ _ _ _ e  : Lives = 4 , wrong guesses: h l m s t x\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: m\n"
+        "Enter letter: i\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ e _ _ _ e d  : Lives = 5 , wrong guesses: f m n s t\n"
+        "Word: e _ e _ _ _ _ e  : Lives = 3 , wrong guesses: h i l m s t x\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: h\n"
+        "Enter letter: a\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ e _ _ _ e d  : Lives = 4 , wrong guesses: f h m n s t\n"
+        "Word: e _ e _ _ _ _ e  : Lives = 2 , wrong guesses: a h i l m s t x\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ e _ _ _ e d  : Lives = 3 , wrong guesses: f h m n o s t\n"
+        "Word: e _ e _ _ o _ e  : Lives = 2 , wrong guesses: a h i l m s t x\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: i\n"
+        "Enter letter: n\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ e _ i _ e d  : Lives = 3 , wrong guesses: f h m n o s t\n"
+        "Word: e _ e _ _ o n e  : Lives = 2 , wrong guesses: a h i l m s t x\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: r e _ i r e d  : Lives = 3 , wrong guesses: f h m n o s t\n"
+        "Word: e _ e r _ o n e  : Lives = 2 , wrong guesses: a h i l m s t x\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: w\n"
+        "Enter letter: v\n"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "Word: e v e r _ o n e  : Lives = 2 , wrong guesses: a h i l m s t x\n"
+       ]
+      },
+      {
+       "name": "stdout",
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "Enter letter: y\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "You won! The word was rewired\n"
+        "You won! The word was everyone\n"
        ]
       },
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 85,
+       "prompt_number": 57,
        "text": [
         "True"
        ]
       }
      ],
-     "prompt_number": 85
+     "prompt_number": 57
     },
     {
      "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: q\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ _ _  : Lives = 9 , wrong guesses: e\n"
+        "Word: _ _ _ _ _ _ _ _ _  : Lives = 9 , wrong guesses: q\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: s\n"
+        "Enter letter: z\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ _ s  : Lives = 9 , wrong guesses: e\n"
+        "Word: _ _ _ _ _ _ _ _ _  : Lives = 8 , wrong guesses: q z\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: t\n"
+        "Enter letter: x\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ _ s  : Lives = 8 , wrong guesses: e t\n"
+        "Word: _ _ _ _ _ _ _ _ _  : Lives = 7 , wrong guesses: q x z\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: o\n"
+        "Enter letter: e\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ _ s  : Lives = 7 , wrong guesses: e o t\n"
+        "Word: _ _ _ _ _ _ _ _ _  : Lives = 6 , wrong guesses: e q x z\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: i\n"
+        "Enter letter: a\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ _ s  : Lives = 6 , wrong guesses: e i o t\n"
+        "Word: _ _ a _ _ _ _ _ _  : Lives = 6 , wrong guesses: e q x z\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: u\n"
+        "Enter letter: v\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ _ s  : Lives = 5 , wrong guesses: e i o t u\n"
+        "Word: _ _ a _ _ _ _ _ _  : Lives = 5 , wrong guesses: e q v x z\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: a\n"
+        "Enter letter: b\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ _ _ _ s  : Lives = 4 , wrong guesses: a e i o t u\n"
+        "Word: _ _ a _ _ _ _ _ _  : Lives = 4 , wrong guesses: b e q v x z\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: y\n"
+        "Enter letter: k\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ y _ _ s  : Lives = 4 , wrong guesses: a e i o t u\n"
+        "Word: _ _ a _ k _ k _ _  : Lives = 4 , wrong guesses: b e q v x z\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: w\n"
+        "Enter letter: l\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: _ y _ _ s  : Lives = 3 , wrong guesses: a e i o t u w\n"
+        "Word: _ _ a _ k _ k _ _  : Lives = 3 , wrong guesses: b e l q v x z\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: h\n"
+        "Enter letter: j\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: h y _ _ s  : Lives = 3 , wrong guesses: a e i o t u w\n"
+        "Word: _ _ a _ k _ k _ _  : Lives = 2 , wrong guesses: b e j l q v x z\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: m\n"
+        "Enter letter: p\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Word: h y m _ s  : Lives = 3 , wrong guesses: a e i o t u w\n"
+        "Word: _ _ a _ k _ k _ _  : Lives = 1 , wrong guesses: b e j l p q v x z\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Enter letter: n\n"
+        "Enter letter: d\n"
        ]
       },
       {
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "You won! The word was hymns\n"
+        "You lost. The word was sharkskin\n"
        ]
       },
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 86,
+       "prompt_number": 58,
        "text": [
-        "True"
+        "False"
        ]
       }
      ],
-     "prompt_number": 86
+     "prompt_number": 58
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 108,
+       "prompt_number": 59,
        "text": [
-        "'six'"
+        "'sharkskin'"
        ]
       }
      ],
-     "prompt_number": 108
+     "prompt_number": 59
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "## Player objects\n",
+      "Let's work ourselves gently into this.\n",
+      "\n",
+      "In the first instance, the only thing a `player` needs is to respond to the `guess` method. Let's make objects with just this method. Let's even make it simpler than the player from the `guesser` stage, and have it just guess letters in alphabetical order."
+     ]
     },
     {
      "cell_type": "code",
      "input": [
       "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 [l for l in string.ascii_lowercase if l not in guessed_letters][0]"
+      "        return [l for l in string.ascii_lowercase if l not in discovered + missed][0]"
      ],
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 109
+     "prompt_number": 60
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "That wasn't too hard, was it?\n",
+      "\n",
+      "Let's use it to play a game."
+     ]
     },
     {
      "cell_type": "code",
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 110
+     "prompt_number": 69
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 111,
+       "prompt_number": 70,
        "text": [
         "False"
        ]
       }
      ],
-     "prompt_number": 111
+     "prompt_number": 70
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 112,
+       "prompt_number": 71,
        "text": [
-        "['l', 'e', 'g', 'a', 'l', 'l', '_']"
+        "['c', 'e', '_', '_', 'i', 'f', 'i', 'c', 'a', '_', 'e', '_']"
        ]
       }
      ],
-     "prompt_number": 112
+     "prompt_number": 71
     },
     {
      "cell_type": "code",
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 113,
+       "prompt_number": 72,
        "text": [
-        "'legally'"
+        "'certificates'"
        ]
       }
      ],
-     "prompt_number": 113
+     "prompt_number": 72
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Bored with looking at all the state of the game with different cells. Let's have a `print()` statement that tells us what we need."
+     ]
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Target: cavalry ; Discovered: ['c', 'a', '_', 'a', 'l', '_', '_'] ; Lives remaining: 0\n"
+        "Target: turnoffs ; Discovered: ['_', '_', '_', '_', '_', 'f', 'f', '_'] ; Lives remaining: 0\n"
        ]
       }
      ],
-     "prompt_number": 114
+     "prompt_number": 74
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "### Another player\n",
+      "Let's reimplement our player that does letters in frequency order. Again, this is essentially code reused from earlier."
+     ]
     },
     {
      "cell_type": "code",
      "collapsed": false,
      "input": [
-      "LETTER_COUNTS = collections.Counter(l.lower() for l in open('sherlock-holmes.txt').read() if l in string.ascii_letters)\n",
+      "LETTER_COUNTS = collections.Counter(l.lower() for l in open('../sherlock-holmes.txt').read() if l in string.ascii_letters)\n",
       "LETTERS_IN_ORDER = [p[0] for p in LETTER_COUNTS.most_common()]\n",
       "\n",
       "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 [l for l in LETTERS_IN_ORDER if l not in guessed_letters][0]"
+      "        return [l for l in LETTERS_IN_ORDER if l not in discovered + missed][0]"
      ],
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 115
+     "prompt_number": 76
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Target: deathblow ; Discovered: ['d', 'e', 'a', 't', 'h', '_', 'l', 'o', 'w'] ; Lives remaining: 0\n"
+        "Target: cartons ; Discovered: ['c', 'a', 'r', 't', 'o', 'n', 's'] ; Lives remaining: 2\n"
        ]
       }
      ],
-     "prompt_number": 116
+     "prompt_number": 77
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Target: littered ; Discovered: ['l', 'i', 't', 't', 'e', 'r', 'e', 'd'] ; Lives remaining: 5\n"
+        "Target: douching ; Discovered: ['d', 'o', 'u', 'c', 'h', 'i', 'n', '_'] ; Lives remaining: 0\n"
        ]
       }
      ],
-     "prompt_number": 117
+     "prompt_number": 78
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Target: licenced ; Discovered: ['l', 'i', 'c', 'e', 'n', 'c', 'e', 'd'] ; Lives remaining: 1\n"
+        "Target: minimisation ; Discovered: ['m', 'i', 'n', 'i', 'm', 'i', 's', 'a', 't', 'i', 'o', 'n'] ; Lives remaining: 4\n"
        ]
       }
      ],
-     "prompt_number": 118
+     "prompt_number": 79
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "## Player subclasses and inheritance\n",
+      "Time to DRY the code a little. Both of these players (`PlayerAlphabetical` and `PlayerFreqOrdered`) are essentially the same. The only difference is the set of letters used in the middle of the `guess` method. \n",
+      "\n",
+      "Let's create a generic \"letters in a fixed order\" class that has that implementation of `guess` and is passed in a set of letters in order. The two players we already have are subclasses of that, where we have pre-packaged letter orders.\n",
+      "\n",
+      "Here's the generic player. Note that the ordered letters are passed in as a parameter to the `__init__()` method, and `guess()` uses that letter sequence."
+     ]
     },
     {
      "cell_type": "code",
       "        self.ordered_letters = ordered_letters\n",
       "        \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 [l for l in self.ordered_letters if l not in guessed_letters][0]"
+      "        return [l for l in self.ordered_letters if l not in discovered + missed][0]"
      ],
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 119
+     "prompt_number": 85
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "We can now specify the subclasses, using the fixed order. The initialisation of the subclasses now takes no additional parameter, but we pass the hardcoded order to the superclass's `__init__()`."
+     ]
     },
     {
      "cell_type": "code",
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 120
+     "prompt_number": 86
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Does it work?"
+     ]
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Target: unworthier ; Discovered: ['u', 'n', 'w', 'o', 'r', 't', 'h', 'i', 'e', 'r'] ; Lives remaining: 5\n"
+        "Target: yogi ; Discovered: ['_', 'o', '_', 'i'] ; Lives remaining: 0\n"
        ]
       }
      ],
-     "prompt_number": 121
+     "prompt_number": 87
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Target: kneel ; Discovered: ['_', 'n', 'e', 'e', 'l'] ; Lives remaining: 0\n"
+        "Target: slimmest ; Discovered: ['s', 'l', 'i', 'm', 'm', 'e', 's', 't'] ; Lives remaining: 3\n"
        ]
       }
      ],
-     "prompt_number": 122
+     "prompt_number": 88
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Target: provisoes ; Discovered: ['_', '_', '_', '_', 'i', '_', '_', 'e', '_'] ; Lives remaining: 0\n"
+        "Target: diseases ; Discovered: ['d', 'i', '_', 'e', 'a', '_', 'e', '_'] ; Lives remaining: 0\n"
        ]
       }
      ],
-     "prompt_number": 123
+     "prompt_number": 89
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Can we use the generic version directly?"
+     ]
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Target: invincible ; Discovered: ['_', '_', 'v', '_', '_', '_', '_', '_', '_', '_'] ; Lives remaining: 0\n"
+        "Target: pardon ; Discovered: ['p', '_', 'r', '_', 'o', 'n'] ; Lives remaining: 0\n"
        ]
       }
      ],
-     "prompt_number": 124
+     "prompt_number": 90
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "Target: clogging ; Discovered: ['_', '_', '_', '_', '_', '_', '_', '_'] ; Lives remaining: 0\n"
+        "Target: grouchier ; Discovered: ['_', 'r', 'o', 'u', '_', '_', '_', '_', 'r'] ; Lives remaining: 0\n"
        ]
       }
      ],
-     "prompt_number": 125
+     "prompt_number": 91
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "##Mass gaming\n",
+      "Now we can get machines playing each other, we get get them playing *lots* of games and just tell us the summaries. \n",
+      "\n",
+      "Which of these three methods (alphabetical, frequency ordered, reverse alphabetical) is the best? Let's get each player to play 100 random games and see which gets the most wins."
+     ]
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "44\n"
+        "49\n"
        ]
       }
      ],
-     "prompt_number": 126
+     "prompt_number": 92
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "320\n"
+        "309\n"
        ]
       }
      ],
-     "prompt_number": 127
+     "prompt_number": 96
     },
     {
      "cell_type": "code",
        "output_type": "stream",
        "stream": "stdout",
        "text": [
-        "7\n"
+        "6\n"
        ]
       }
      ],
-     "prompt_number": 128
+     "prompt_number": 94
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Frequency ordered is much better than the others, but still only wins about 30% of the time. I'm sure we can do better.\n",
+      "\n",
+      "That's the next part..."
+     ]
     },
     {
      "cell_type": "code",
      "input": [],
      "language": "python",
      "metadata": {},
-     "outputs": [],
-     "prompt_number": 128
+     "outputs": []
     }
    ],
    "metadata": {}
diff --git a/hangman/04-hangman-better.ipynb b/hangman/04-hangman-better.ipynb
new file mode 100644 (file)
index 0000000..f524dae
--- /dev/null
@@ -0,0 +1,1946 @@
+{
+ "metadata": {
+  "name": "",
+  "signature": "sha256:f96f8d6bd00204692b51b22bb9f514c926594fc7c3ed2ee8cc31f44119a3e59c"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+  {
+   "cells": [
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "##Better strategies\n",
+      "We've got the plumbing all working. Now to play and come up with some better playing strategies. \n",
+      "\n",
+      "First, some repetition from the previous section."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "import re\n",
+      "import random\n",
+      "import string\n",
+      "import collections"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 1
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "WORDS = [w.strip() for w in open('/usr/share/dict/british-english').readlines() \n",
+      "         if re.match(r'^[a-z]*$', w.strip())]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 2
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "LETTER_COUNTS = collections.Counter(l.lower() for l in open('../sherlock-holmes.txt').read() if l in string.ascii_letters)\n",
+      "LETTERS_IN_ORDER = [p[0] for p in LETTER_COUNTS.most_common()]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 3
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "STARTING_LIVES = 10"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 4
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class Game:\n",
+      "    def __init__(self, target, player=None, lives=STARTING_LIVES):\n",
+      "        self.lives = lives\n",
+      "        self.player = player\n",
+      "        self.target = target\n",
+      "        self.discovered = list('_' * len(target))\n",
+      "        self.wrong_letters = []\n",
+      "        self.game_finished = False\n",
+      "        self.game_won = False\n",
+      "        self.game_lost = False\n",
+      "    \n",
+      "    def find_all(self, letter):\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",
+      "        for location in locations:\n",
+      "            self.discovered[location] = guessed_letter\n",
+      "        return self.discovered\n",
+      "    \n",
+      "    def do_turn(self):\n",
+      "        if self.player:\n",
+      "            guess = self.player.guess(self.discovered, self.wrong_letters, self.lives)\n",
+      "        else:\n",
+      "            guess = self.ask_for_guess()\n",
+      "        if guess in self.target:\n",
+      "            self.update_discovered_word(guess)\n",
+      "        else:\n",
+      "            self.lives -= 1\n",
+      "            if guess not in self.wrong_letters:\n",
+      "                self.wrong_letters += [guess]\n",
+      "        if self.lives == 0:\n",
+      "            self.game_finished = True\n",
+      "            self.game_lost = True\n",
+      "        if '_' not in self.discovered:\n",
+      "            self.game_finished = True\n",
+      "            self.game_won = True\n",
+      "            \n",
+      "    def ask_for_guess(self):\n",
+      "        print('Word:', ' '.join(self.discovered), \n",
+      "              ' : Lives =', self.lives, \n",
+      "              ', wrong guesses:', ' '.join(sorted(self.wrong_letters)))\n",
+      "        guess = input('Enter letter: ').strip().lower()[0]\n",
+      "        return guess\n",
+      "    \n",
+      "    def play_game(self):\n",
+      "        while not self.game_finished:\n",
+      "            self.do_turn()\n",
+      "        if not self.player:\n",
+      "            self.report_on_game()\n",
+      "        return self.game_won\n",
+      "    \n",
+      "    def report_on_game(self):\n",
+      "        if self.game_won:\n",
+      "            print('You won! The word was', self.target)\n",
+      "        else:\n",
+      "            print('You lost. The word was', self.target)\n",
+      "        return self.game_won"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 5
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerFixedOrder:\n",
+      "    def __init__(self, ordered_letters):\n",
+      "        self.ordered_letters = ordered_letters\n",
+      "        \n",
+      "    def guess(self, discovered, missed, lives):\n",
+      "        return [l for l in self.ordered_letters if l not in discovered + missed][0]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 6
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerAlphabetical(PlayerFixedOrder):\n",
+      "    def __init__(self):\n",
+      "        super().__init__(string.ascii_lowercase)\n",
+      "\n",
+      "class PlayerFreqOrdered(PlayerFixedOrder):\n",
+      "    def __init__(self):\n",
+      "        super().__init__(LETTERS_IN_ORDER)\n"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 7
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "##Timing runs\n",
+      "Use the IPython `timeit` cellmagic to time runs."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "%%timeit\n",
+      "\n",
+      "wins = 0\n",
+      "for _ in range(1000):\n",
+      "    g = Game(random.choice(WORDS), player=PlayerAlphabetical())\n",
+      "    g.play_game()\n",
+      "    if g.game_won:\n",
+      "        wins += 1\n",
+      "print(wins)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "49\n",
+        "45"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "54"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "54"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "1 loops, best of 3: 207 ms per loop\n"
+       ]
+      }
+     ],
+     "prompt_number": 8
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "%%timeit\n",
+      "\n",
+      "wins = 0\n",
+      "for _ in range(1000):\n",
+      "    g = Game(random.choice(WORDS), player=PlayerFreqOrdered())\n",
+      "    g.play_game()\n",
+      "    if g.game_won:\n",
+      "        wins += 1\n",
+      "print(wins)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "305\n",
+        "331"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "327"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "316"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "1 loops, best of 3: 212 ms per loop\n"
+       ]
+      }
+     ],
+     "prompt_number": 9
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "%%timeit\n",
+      "\n",
+      "wins = 0\n",
+      "for _ in range(1000):\n",
+      "    g = Game(random.choice(WORDS), player=PlayerFixedOrder(list(reversed(string.ascii_lowercase))))\n",
+      "    g.play_game()\n",
+      "    if g.game_won:\n",
+      "        wins += 1\n",
+      "print(wins)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "8\n",
+        "8"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "15"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "8"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "1 loops, best of 3: 198 ms per loop\n"
+       ]
+      }
+     ],
+     "prompt_number": 10
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "## Better strategy 1: letters in dictionary frequency order\n",
+      "When we're looking at letter frequencies, we've been looking at running English text. But the words being preseted to the player aren't drawn randomly from novels: they're taken from the dictionary. That means our frequencies are off because we're looking at the wrong distribution of words.\n",
+      "\n",
+      "For example, 'e' and 't' are common in running text because words like 'the' occur very frequently. But 'the' only occurs once in the dictionary. Let's sample letters from the dictionary and see if that makes a difference."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "DICT_COUNTS = collections.Counter(''.join(WORDS))\n",
+      "DICT_LETTERS_IN_ORDER = [p[0] for p in DICT_COUNTS.most_common()]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 11
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "DICT_COUNTS"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 12,
+       "text": [
+        "Counter({'e': 60732, 's': 47997, 'i': 45470, 'a': 38268, 'r': 37522, 'n': 36868, 't': 36009, 'o': 31004, 'l': 26902, 'c': 21061, 'd': 20764, 'u': 17682, 'g': 16560, 'p': 15240, 'm': 13855, 'h': 11662, 'b': 9866, 'y': 7877, 'f': 7430, 'v': 5325, 'k': 4829, 'w': 4757, 'x': 1425, 'q': 1020, 'z': 979, 'j': 965})"
+       ]
+      }
+     ],
+     "prompt_number": 12
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "print(DICT_LETTERS_IN_ORDER)\n",
+      "print(LETTERS_IN_ORDER)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "['e', 's', 'i', 'a', 'r', 'n', 't', 'o', 'l', 'c', 'd', 'u', 'g', 'p', 'm', 'h', 'b', 'y', 'f', 'v', 'k', 'w', 'x', 'q', 'z', 'j']\n",
+        "['e', 't', 'a', 'o', 'i', 'h', 'n', 's', 'r', 'd', 'l', 'u', 'm', 'w', 'c', 'y', 'f', 'g', 'p', 'b', 'v', 'k', 'x', 'j', 'q', 'z']\n"
+       ]
+      }
+     ],
+     "prompt_number": 13
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "The letter orders are certainly different. Let's see if it make the player more effective than the ~30% of `FreqOrder`."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "wins = 0\n",
+      "for _ in range(1000):\n",
+      "    g = Game(random.choice(WORDS), player=PlayerFixedOrder(DICT_LETTERS_IN_ORDER))\n",
+      "    g.play_game()\n",
+      "    if g.game_won:\n",
+      "        wins += 1\n",
+      "print(wins)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "463\n"
+       ]
+      }
+     ],
+     "prompt_number": 14
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "For convenience, we can wrap this new behaviour up in its own class."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerDictOrder(PlayerFixedOrder):\n",
+      "    def __init__(self):\n",
+      "        super().__init__(DICT_LETTERS_IN_ORDER)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 15
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "%%timeit\n",
+      "\n",
+      "wins = 0\n",
+      "for _ in range(1000):\n",
+      "    g = Game(random.choice(WORDS), player=PlayerDictOrder())\n",
+      "    g.play_game()\n",
+      "    if g.game_won:\n",
+      "        wins += 1\n",
+      "print(wins)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "474\n",
+        "460"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "490"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "467"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "1 loops, best of 3: 220 ms per loop\n"
+       ]
+      }
+     ],
+     "prompt_number": 16
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "That was worth it!"
+     ]
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "##Better strategy 2: paying attention the target word\n",
+      "The strategies so far haven't paid any attention to the target word. Can we use information about the target to help refine our guesses?\n",
+      "\n",
+      "We've just seen that sampling letters from the dictionary works better than other approaches. But if we're presented with a seven letter word, we don't need to pay attention to the letter occurences in three- or ten-letter words. \n",
+      "\n",
+      "Let's build our first \"adaptive\" player, one that adapts its behaviour to what's happening in this game. \n",
+      "\n",
+      "The idea is that the player will hold internally a set of `candidate_words` that could match what it knows about the target. It will then count the letters in that set and pick the most frequent, but so-far-unguessed, letter.\n",
+      "\n",
+      "When the player is created, the it's give `all_words` it can chose from, but `candidate_words` is non-existent. As soon as it's given a word, it can filter `all_words` so that `candidate_words` are just those words with the same length as the `discovered` word. From the `candidate_words`, the player can create its own set of `ordered_letters`. Guesses are pulled from the `ordered_letters` the same as before."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerAdaptiveLength:\n",
+      "    def __init__(self, words):\n",
+      "        self.all_words = words\n",
+      "        self.candidate_words = None\n",
+      "        \n",
+      "    def guess(self, discovered, missed, lives):\n",
+      "        if not self.candidate_words:\n",
+      "            self.set_ordered_letters(len(discovered))\n",
+      "        return [l for l in self.ordered_letters if l not in discovered + missed][0]\n",
+      "    \n",
+      "    def set_ordered_letters(self, word_len):\n",
+      "        self.candidate_words = [w for w in self.all_words if len(w) == word_len]\n",
+      "        counts = collections.Counter(l.lower() for l in ''.join(self.candidate_words) if l in string.ascii_letters)\n",
+      "        self.ordered_letters = [p[0] for p in counts.most_common()]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 17
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "wins = 0\n",
+      "for _ in range(1000):\n",
+      "    g = Game(random.choice(WORDS), player=PlayerAdaptiveLength(WORDS))\n",
+      "    g.play_game()\n",
+      "    if g.game_won:\n",
+      "        wins += 1\n",
+      "print(wins)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "452\n"
+       ]
+      }
+     ],
+     "prompt_number": 18
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "%%timeit\n",
+      "\n",
+      "wins = 0\n",
+      "for _ in range(1000):\n",
+      "    g = Game(random.choice(WORDS), player=PlayerAdaptiveLength(WORDS))\n",
+      "    g.play_game()\n",
+      "    if g.game_won:\n",
+      "        wins += 1\n",
+      "print(wins)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "480\n",
+        "444"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "504"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "463"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "1 loops, best of 3: 18.5 s per loop\n"
+       ]
+      }
+     ],
+     "prompt_number": 19
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "It's a bit better, but quite a lot slower. Can we improve the performance, to offset the cost of the slower game?"
+     ]
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "##Better strategy 3: using discovered letters\n",
+      "Once we've made some successful guesses, we know more about the `target` and we can use that information to further filter the `candiate_words`. For instance, if we know the `target` is seven letters with an 'e' in the second and fourth positions, there are probably very few candiate words to choose from.\n",
+      "\n",
+      "The challenge here is to filter the `candidate_words` depending on the letter pattern. That's non-trivial, so we'll look at how to do that bit first.\n",
+      "\n",
+      "(This matching is the sort of thing that regular expressions are designed for, but I think there are enough new ideas in this material so far. See the end of this notebook for implementations of the adaptive players that use regexes.)"
+     ]
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "### Matching\n",
+      "The problem: given a pattern and a target word, determine if the word matches the pattern. The return value of `match` should be a Boolean.\n",
+      "\n",
+      "A target is a sequence of letters. \n",
+      "\n",
+      "A pattern is a sequence of either a letter or an underscore.\n",
+      "\n",
+      "A target matches a pattern if the corresponding elements of both match.\n",
+      "\n",
+      "* A target letter always matches an underscore.\n",
+      "\n",
+      "* A target letter matches a pattern letter if they are the same.\n",
+      "\n",
+      "If any element doesn't match, the whole match fails.\n",
+      "\n",
+      "If the target and pattern are different lengths, the match fails.\n",
+      "\n",
+      "The built-in `zip` will allow us to pair up the elements of the pattern and target."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "def match(pattern, target):\n",
+      "    if len(pattern) != len(target):\n",
+      "        return False\n",
+      "    for m, c in zip(pattern, target):\n",
+      "        if m == '_':\n",
+      "            # true\n",
+      "            pass\n",
+      "        elif m != '_' and m == c:\n",
+      "            # true\n",
+      "            pass\n",
+      "        else:\n",
+      "            return False\n",
+      "    return True        "
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 20
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "match('__pp_', 'happy')"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 21,
+       "text": [
+        "True"
+       ]
+      }
+     ],
+     "prompt_number": 21
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "match('__pp_', 'hippo')"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 22,
+       "text": [
+        "True"
+       ]
+      }
+     ],
+     "prompt_number": 22
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "match('__pp_', 'hello')"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 23,
+       "text": [
+        "False"
+       ]
+      }
+     ],
+     "prompt_number": 23
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "match('__pp_', 'happier')"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 24,
+       "text": [
+        "False"
+       ]
+      }
+     ],
+     "prompt_number": 24
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "That all seems to be working. Let's put it in a `player` object."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerAdaptiveIncludedLetters:\n",
+      "    def __init__(self, words):\n",
+      "        self.candidate_words = words\n",
+      "        \n",
+      "    def guess(self, discovered, missed, lives):\n",
+      "        self.filter_candidate_words(discovered)\n",
+      "        self.set_ordered_letters()\n",
+      "        return [l for l in self.ordered_letters if l not in discovered + missed][0]\n",
+      "    \n",
+      "    def filter_candidate_words(self, discovered):\n",
+      "        self.candidate_words = [w for w in self.candidate_words if self.match(discovered, w)]\n",
+      "        \n",
+      "    def set_ordered_letters(self):\n",
+      "        counts = collections.Counter(l.lower() for l in ''.join(self.candidate_words) if l in string.ascii_letters)\n",
+      "        self.ordered_letters = [p[0] for p in counts.most_common()]\n",
+      "        \n",
+      "    def match(self, pattern, target):\n",
+      "        if len(pattern) != len(target):\n",
+      "            return False\n",
+      "        for m, c in zip(pattern, target):\n",
+      "            if m == '_':\n",
+      "                # true\n",
+      "                pass\n",
+      "            elif m != '_' and m == c:\n",
+      "                # true\n",
+      "                pass\n",
+      "            else:\n",
+      "                return False\n",
+      "        return True        "
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 25
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "wins = 0\n",
+      "for _ in range(1000):\n",
+      "    g = Game(random.choice(WORDS), player=PlayerAdaptiveIncludedLetters(WORDS))\n",
+      "    g.play_game()\n",
+      "    if g.game_won:\n",
+      "        wins += 1\n",
+      "print(wins)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "981\n"
+       ]
+      }
+     ],
+     "prompt_number": 26
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "%%timeit\n",
+      "\n",
+      "wins = 0\n",
+      "for _ in range(1000):\n",
+      "    g = Game(random.choice(WORDS), player=PlayerAdaptiveIncludedLetters(WORDS))\n",
+      "    g.play_game()\n",
+      "    if g.game_won:\n",
+      "        wins += 1\n",
+      "print(wins)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "982\n",
+        "987"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "984"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "982"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "1 loops, best of 3: 51.7 s per loop\n"
+       ]
+      }
+     ],
+     "prompt_number": 27
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Quite an improvement!\n",
+      "\n",
+      "But let's see if we can do better."
+     ]
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "## Better strategy 4: using wrong guesses\n",
+      "If we make a guess that's wrong, we can also use that to eliminate `candidate_words`. If we know the `target` doesn't contain an 'e', we can eliminate all `candidate_words` that contain an 'e'. If we also know that the word contains and 'e' in the third positon, we can also eliminate all words that contain and 'e' in any other position.\n",
+      "\n",
+      "This requires an different verion of `match`, so that a word matches a pattern if an underscore in the pattern does not match any of the known-incorrect letters."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "def match_exclusion(pattern, target, excluded=None):\n",
+      "    if not excluded:\n",
+      "        excluded = ''\n",
+      "    if len(pattern) != len(target):\n",
+      "        return False\n",
+      "    for m, c in zip(pattern, target):\n",
+      "        if m == '_' and c not in excluded:\n",
+      "            # true\n",
+      "            pass\n",
+      "        elif m != '_':\n",
+      "            # true\n",
+      "            pass\n",
+      "        else:\n",
+      "            return False\n",
+      "    return True        "
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 28
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "match_exclusion('__pp_', 'happy', 'x')"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 29,
+       "text": [
+        "True"
+       ]
+      }
+     ],
+     "prompt_number": 29
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "match_exclusion('__pp_', 'happy', 'a')"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 30,
+       "text": [
+        "False"
+       ]
+      }
+     ],
+     "prompt_number": 30
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "match_exclusion('__pp_', 'happy', 'p')"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 31,
+       "text": [
+        "True"
+       ]
+      }
+     ],
+     "prompt_number": 31
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "match_exclusion('__pp_', 'happy', 'hp')"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 32,
+       "text": [
+        "False"
+       ]
+      }
+     ],
+     "prompt_number": 32
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerAdaptiveExcludedLetters:\n",
+      "    def __init__(self, words):\n",
+      "        self.candidate_words = words\n",
+      "        \n",
+      "    def guess(self, discovered, missed, lives):\n",
+      "        self.filter_candidate_words(discovered, missed)\n",
+      "        self.set_ordered_letters()\n",
+      "        return [l for l in self.ordered_letters if l not in discovered + missed][0]\n",
+      "    \n",
+      "    def filter_candidate_words(self, discovered, missed):\n",
+      "        attempted_letters = list(set(l.lower() for l in discovered + missed if l in string.ascii_letters))\n",
+      "        self.candidate_words = [w for w in self.candidate_words if self.match_exclusion(discovered, w, attempted_letters)]\n",
+      "        \n",
+      "    def set_ordered_letters(self):\n",
+      "        counts = collections.Counter(l.lower() for l in ''.join(self.candidate_words) if l in string.ascii_letters)\n",
+      "        self.ordered_letters = [p[0] for p in counts.most_common()]\n",
+      "        \n",
+      "    def match_exclusion(self, pattern, target, excluded=None):\n",
+      "        if not excluded:\n",
+      "            excluded = ''\n",
+      "        if len(pattern) != len(target):\n",
+      "            return False\n",
+      "        for m, c in zip(pattern, target):\n",
+      "            if m == '_' and c not in excluded:\n",
+      "                # true\n",
+      "                pass\n",
+      "            elif m != '_':\n",
+      "                # true\n",
+      "                pass\n",
+      "            else:\n",
+      "                return False\n",
+      "        return True          "
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 33
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "wins = 0\n",
+      "for _ in range(1000):\n",
+      "    g = Game(random.choice(WORDS), player=PlayerAdaptiveExcludedLetters(WORDS))\n",
+      "    g.play_game()\n",
+      "    if g.game_won:\n",
+      "        wins += 1\n",
+      "print(wins)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "737\n"
+       ]
+      }
+     ],
+     "prompt_number": 34
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "%%timeit\n",
+      "\n",
+      "wins = 0\n",
+      "for _ in range(1000):\n",
+      "    g = Game(random.choice(WORDS), player=PlayerAdaptiveExcludedLetters(WORDS))\n",
+      "    g.play_game()\n",
+      "    if g.game_won:\n",
+      "        wins += 1\n",
+      "print(wins)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "735\n",
+        "748"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "742"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "748"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "1 loops, best of 3: 1min 4s per loop\n"
+       ]
+      }
+     ],
+     "prompt_number": 35
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "That's better than the non-adaptive players, but not as good as the `IncludedLetters` player. But we could combine the two approaches. Will that work better?"
+     ]
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "## Better strategy 5: using both correct and wrong guesses\n",
+      "Not much to say. Let's just merge the two previous approaches."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerAdaptivePattern:\n",
+      "    def __init__(self, words):\n",
+      "        self.candidate_words = words\n",
+      "        \n",
+      "    def guess(self, discovered, missed, lives):\n",
+      "        self.filter_candidate_words(discovered, missed)\n",
+      "        self.set_ordered_letters()\n",
+      "        return [l for l in self.ordered_letters if l not in discovered + missed][0]\n",
+      "    \n",
+      "    def filter_candidate_words(self, discovered, missed):\n",
+      "        attempted_letters = list(set(l.lower() for l in discovered + missed if l in string.ascii_letters))\n",
+      "        self.candidate_words = [w for w in self.candidate_words if self.match(discovered, w, attempted_letters)]\n",
+      "        \n",
+      "    def set_ordered_letters(self):\n",
+      "        counts = collections.Counter(l.lower() for l in ''.join(self.candidate_words) if l in string.ascii_letters)\n",
+      "        self.ordered_letters = [p[0] for p in counts.most_common()]\n",
+      "        \n",
+      "    def match(self, pattern, target, excluded=None):\n",
+      "        if not excluded:\n",
+      "            excluded = ''\n",
+      "        if len(pattern) != len(target):\n",
+      "            return False\n",
+      "        for m, c in zip(pattern, target):\n",
+      "            if m == '_' and c not in excluded:\n",
+      "                # true\n",
+      "                pass\n",
+      "            elif m != '_' and m == c:\n",
+      "                # true\n",
+      "                pass\n",
+      "            else:\n",
+      "                return False\n",
+      "        return True"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 36
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "wins = 0\n",
+      "for _ in range(1000):\n",
+      "    g = Game(random.choice(WORDS), player=PlayerAdaptivePattern(WORDS))\n",
+      "    g.play_game()\n",
+      "    if g.game_won:\n",
+      "        wins += 1\n",
+      "print(wins)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "993\n"
+       ]
+      }
+     ],
+     "prompt_number": 37
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "%%timeit\n",
+      "\n",
+      "wins = 0\n",
+      "for _ in range(1000):\n",
+      "    g = Game(random.choice(WORDS), player=PlayerAdaptivePattern(WORDS))\n",
+      "    g.play_game()\n",
+      "    if g.game_won:\n",
+      "        wins += 1\n",
+      "print(wins)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "990\n",
+        "995"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "992"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "994"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "1 loops, best of 3: 47.1 s per loop\n"
+       ]
+      }
+     ],
+     "prompt_number": 38
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "##DRYing it up\n",
+      "You've probably noticed some duplicate code above. "
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerAdaptive:\n",
+      "    def __init__(self, words):\n",
+      "        self.candidate_words = words\n",
+      "        \n",
+      "    def guess(self, discovered, missed, lives):\n",
+      "        self.filter_candidate_words(discovered, missed)\n",
+      "        self.set_ordered_letters()\n",
+      "        return [l for l in self.ordered_letters if l not in discovered + missed][0]\n",
+      "    \n",
+      "    def filter_candidate_words(self, discovered, missed):\n",
+      "        pass\n",
+      "        \n",
+      "    def set_ordered_letters(self):\n",
+      "        counts = collections.Counter(l.lower() \n",
+      "                                     for l in ''.join(self.candidate_words) + string.ascii_lowercase \n",
+      "                                     if l in string.ascii_letters)\n",
+      "        self.ordered_letters = [p[0] for p in counts.most_common()]\n",
+      "\n",
+      "    def match(self, pattern, target, excluded=None):\n",
+      "        if not excluded:\n",
+      "            excluded = ''\n",
+      "        if len(pattern) != len(target):\n",
+      "            return False\n",
+      "        for m, c in zip(pattern, target):\n",
+      "            if m == '_' and c not in excluded:\n",
+      "                # true\n",
+      "                pass\n",
+      "            elif m != '_' and m == c:\n",
+      "                # true\n",
+      "                pass\n",
+      "            else:\n",
+      "                return False\n",
+      "        return True        "
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 39
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerAdaptiveLength(PlayerAdaptive):\n",
+      "    def __init__(self, words):\n",
+      "        super().__init__(words)\n",
+      "        self.word_len = None\n",
+      "        self.ordered_letters = None\n",
+      "        \n",
+      "    def filter_candidate_words(self, discovered, missed):\n",
+      "        if not self.word_len:\n",
+      "            self.word_len = len(discovered)\n",
+      "            self.candidate_words = [w for w in self.candidate_words if len(w) == self.word_len]\n",
+      "    \n",
+      "    def set_ordered_letters(self):\n",
+      "        if not self.ordered_letters:\n",
+      "            super().set_ordered_letters()"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 40
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerAdaptiveIncludedLetters(PlayerAdaptive):\n",
+      "    def filter_candidate_words(self, discovered, missed):\n",
+      "        self.candidate_words = [w for w in self.candidate_words if self.match(discovered, w)]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 41
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerAdaptiveExcludedLetters(PlayerAdaptive):\n",
+      "    def filter_candidate_words(self, discovered, missed):\n",
+      "        if missed:\n",
+      "            empty_target = '_' * len(discovered)\n",
+      "            self.candidate_words = [w for w in self.candidate_words if self.match(empty_target, w, missed)]        "
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 42
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerAdaptivePattern(PlayerAdaptive):\n",
+      "    def filter_candidate_words(self, discovered, missed):\n",
+      "        attempted_letters = [l for l in discovered if l != '_'] + missed\n",
+      "        self.candidate_words = [w for w in self.candidate_words if self.match(discovered, w, attempted_letters)]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 43
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "%%timeit\n",
+      "\n",
+      "wins = 0\n",
+      "for _ in range(1000):\n",
+      "    g = Game(random.choice(WORDS), player=PlayerAdaptiveLength(WORDS))\n",
+      "    g.play_game()\n",
+      "    if g.game_won:\n",
+      "        wins += 1\n",
+      "print(wins)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "472\n",
+        "460"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "462"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "484"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "1 loops, best of 3: 17 s per loop\n"
+       ]
+      }
+     ],
+     "prompt_number": 44
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "%%timeit\n",
+      "\n",
+      "wins = 0\n",
+      "for _ in range(1000):\n",
+      "    g = Game(random.choice(WORDS), player=PlayerAdaptiveIncludedLetters(WORDS))\n",
+      "    g.play_game()\n",
+      "    if g.game_won:\n",
+      "        wins += 1\n",
+      "print(wins)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "988\n",
+        "985"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "987"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "988"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "1 loops, best of 3: 49.3 s per loop\n"
+       ]
+      }
+     ],
+     "prompt_number": 45
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "%%timeit\n",
+      "\n",
+      "wins = 0\n",
+      "for _ in range(1000):\n",
+      "    g = Game(random.choice(WORDS), player=PlayerAdaptiveExcludedLetters(WORDS))\n",
+      "    g.play_game()\n",
+      "    if g.game_won:\n",
+      "        wins += 1\n",
+      "print(wins)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "575\n",
+        "611"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "583"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "607"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "1 loops, best of 3: 5min 10s per loop\n"
+       ]
+      }
+     ],
+     "prompt_number": 46
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "%%timeit\n",
+      "\n",
+      "wins = 0\n",
+      "for _ in range(1000):\n",
+      "    g = Game(random.choice(WORDS), player=PlayerAdaptivePattern(WORDS))\n",
+      "    g.play_game()\n",
+      "    if g.game_won:\n",
+      "        wins += 1\n",
+      "print(wins)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "990\n",
+        "992"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "995"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "991"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "1 loops, best of 3: 39.1 s per loop\n"
+       ]
+      }
+     ],
+     "prompt_number": 47
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "for _ in range(1000):\n",
+      "    g = Game(random.choice(WORDS), player=PlayerAdaptivePattern(WORDS))\n",
+      "    g.play_game()\n",
+      "    if not g.game_won:\n",
+      "        print(g.target, g.discovered, g.wrong_letters)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "puffy ['p', 'u', '_', '_', 'y'] ['s', 'e', 'a', 'o', 'i', 'm', 'l', 'n', 'r', 't']\n",
+        "jar"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        " ['_', 'a', 'r'] ['t', 'p', 'g', 'w', 'd', 'm', 'b', 'y', 'f', 'o']\n",
+        "fate"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        " ['_', 'a', '_', 'e'] ['l', 'r', 'm', 'p', 's', 'g', 'd', 'k', 'v', 'b']\n",
+        "robs"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        " ['_', 'o', 'b', 's'] ['e', 'a', 't', 'h', 'g', 'f', 'l', 'c', 'm', 'j']\n"
+       ]
+      }
+     ],
+     "prompt_number": 48
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "##Better strategy 6: divide and conquer\n",
+      "This is a general approach to solving big problems: divide the candidate set into two equal halves, so that a simple test can discard half the candidates. \n",
+      "\n",
+      "For Hangman, we want to guess the letter that will eliminate half the `candidate_words`. For each letter that's present in all of the candidate words, score the letter +1 for every word it appears in, and -1 for every word it doesn't appear in. The closer the total is to zero, the closer letter is to being in half the `candidate_words`. We then pick the unguesses letter with the score closest to zero.\n",
+      "\n",
+      "As the `PlayerAdaptivePattern` seems to work well, we'll use that to keep track of the `candidate_words`. This variant changes the order of the letters, so it's a rewrite of `set_ordered_letters()`."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerAdaptiveSplit(PlayerAdaptivePattern):\n",
+      "    def set_ordered_letters(self):\n",
+      "        def letter_diff(l):\n",
+      "            total = 0\n",
+      "            for w in self.candidate_words:\n",
+      "                if l in w:\n",
+      "                    total += 1\n",
+      "                else:\n",
+      "                    total -= 1\n",
+      "            return total\n",
+      "            # return abs(sum(1 if l in w else -1 for w in self.candidate_words))\n",
+      "        possible_letters = set(''.join(self.candidate_words))\n",
+      "        letter_diffs = [(l, letter_diff(l)) for l in possible_letters]\n",
+      "        self.ordered_letters = [p[0] for p in sorted(letter_diffs, key=lambda p: p[1])]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 49
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "%%timeit\n",
+      "\n",
+      "wins = 0\n",
+      "for _ in range(1000):\n",
+      "    g = Game(random.choice(WORDS), player=PlayerAdaptiveSplit(WORDS))\n",
+      "    g.play_game()\n",
+      "    if g.game_won:\n",
+      "        wins += 1\n",
+      "print(wins)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "113\n",
+        "114"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "131"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "132"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "1 loops, best of 3: 2min 28s per loop\n"
+       ]
+      }
+     ],
+     "prompt_number": 50
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Oh.\n",
+      "\n",
+      "Why is this happening?"
+     ]
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "## See below for the regex-using versions"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerAdaptiveIncludedLettersRegex:\n",
+      "    def __init__(self, words):\n",
+      "        self.candidate_words = words\n",
+      "        \n",
+      "    def guess(self, discovered, missed, lives):\n",
+      "        self.filter_candidate_words(discovered)\n",
+      "        self.set_ordered_letters()\n",
+      "        return [l for l in self.ordered_letters if l not in discovered + missed][0]\n",
+      "    \n",
+      "    def filter_candidate_words(self, discovered):\n",
+      "        exp = re.compile('^' + ''.join(discovered).replace('_', '.') + '$')\n",
+      "        self.candidate_words = [w for w in self.candidate_words if exp.match(w)]\n",
+      "        \n",
+      "    def set_ordered_letters(self):\n",
+      "        counts = collections.Counter(l.lower() for l in ''.join(self.candidate_words) if l in string.ascii_letters)\n",
+      "        self.ordered_letters = [p[0] for p in counts.most_common()]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 51
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerAdaptiveExcludedLettersRegex:\n",
+      "    def __init__(self, words):\n",
+      "        self.candidate_words = words\n",
+      "        \n",
+      "    def guess(self, discovered, missed, lives):\n",
+      "        self.filter_candidate_words(missed)\n",
+      "        self.set_ordered_letters()\n",
+      "        return [l for l in self.ordered_letters if l not in discovered + missed][0]\n",
+      "    \n",
+      "    def filter_candidate_words(self, missed):\n",
+      "        if missed:\n",
+      "            exp = re.compile('^[^' + ''.join(missed) + ']*$')\n",
+      "            self.candidate_words = [w for w in self.candidate_words if exp.match(w)]\n",
+      "        \n",
+      "    def set_ordered_letters(self):\n",
+      "        counts = collections.Counter(l.lower() for l in ''.join(self.candidate_words) if l in string.ascii_letters)\n",
+      "        self.ordered_letters = [p[0] for p in counts.most_common()]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 52
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "re.match('^[^xaz]*$', 'happy')"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 53
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerAdaptivePatternRegex:\n",
+      "    def __init__(self, words):\n",
+      "        self.candidate_words = words\n",
+      "        \n",
+      "    def guess(self, discovered, missed, lives):\n",
+      "        self.filter_candidate_words(discovered, missed)\n",
+      "        self.set_ordered_letters()\n",
+      "        return [l for l in self.ordered_letters if l not in discovered + missed][0]\n",
+      "    \n",
+      "    def filter_candidate_words(self, discovered, missed):\n",
+      "        attempted_letters = list(set(l.lower() for l in discovered + missed if l in string.ascii_letters))\n",
+      "        if attempted_letters:\n",
+      "            exclusion_pattern = '[^' + ''.join(attempted_letters) + ']'\n",
+      "        else:\n",
+      "            exclusion_pattern = '.'\n",
+      "        exp = re.compile('^' + ''.join(discovered).replace('_', exclusion_pattern) + '$')\n",
+      "        self.candidate_words = [w for w in self.candidate_words if exp.match(w)]\n",
+      "        \n",
+      "    def set_ordered_letters(self):\n",
+      "        counts = collections.Counter(l.lower() for l in ''.join(self.candidate_words) if l in string.ascii_letters)\n",
+      "        self.ordered_letters = [p[0] for p in counts.most_common()]\n"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 54
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerAdaptiveRegex:\n",
+      "    def __init__(self, words):\n",
+      "        self.candidate_words = words\n",
+      "        \n",
+      "    def guess(self, discovered, missed, lives):\n",
+      "        self.filter_candidate_words(discovered, missed)\n",
+      "        self.set_ordered_letters()\n",
+      "        return [l for l in self.ordered_letters if l not in discovered + missed][0]\n",
+      "    \n",
+      "    def filter_candidate_words(self, discovered, missed):\n",
+      "        pass\n",
+      "        \n",
+      "    def set_ordered_letters(self):\n",
+      "        counts = collections.Counter(l.lower() \n",
+      "                                     for l in ''.join(self.candidate_words) + string.ascii_lowercase \n",
+      "                                     if l in string.ascii_letters)\n",
+      "        self.ordered_letters = [p[0] for p in counts.most_common()]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 55
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerAdaptiveLengthRegex(PlayerAdaptiveRegex):\n",
+      "    def __init__(self, words):\n",
+      "        super().__init__(words)\n",
+      "        self.word_len = None\n",
+      "        self.ordered_letters = None\n",
+      "        \n",
+      "    def filter_candidate_words(self, discovered, missed):\n",
+      "        if not self.word_len:\n",
+      "            self.word_len = len(discovered)\n",
+      "            self.candidate_words = [w for w in self.candidate_words if len(w) == self.word_len]\n",
+      "    \n",
+      "    def set_ordered_letters(self):\n",
+      "        if not self.ordered_letters:\n",
+      "            super().set_ordered_letters()"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 56
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerAdaptiveIncludedLettersRegex(PlayerAdaptiveRegex):\n",
+      "    def filter_candidate_words(self, discovered, missed):\n",
+      "        exp = re.compile('^' + ''.join(discovered).replace('_', '.') + '$')\n",
+      "        self.candidate_words = [w for w in self.candidate_words if exp.match(w)]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 57
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerAdaptiveExcludedLettersRegex(PlayerAdaptiveRegex):\n",
+      "    def filter_candidate_words(self, discovered, missed):\n",
+      "        if missed:\n",
+      "            exp = re.compile('^[^' + ''.join(missed) + ']*$')\n",
+      "            self.candidate_words = [w for w in self.candidate_words if exp.match(w)]        "
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 58
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "class PlayerAdaptivePatternRegex(PlayerAdaptiveRegex):\n",
+      "    def filter_candidate_words(self, discovered, missed):\n",
+      "        attempted_letters = [l for l in discovered if l != '_'] + missed\n",
+      "        if attempted_letters:\n",
+      "            exclusion_pattern = '[^' + ''.join(attempted_letters) + ']'\n",
+      "        else:\n",
+      "            exclusion_pattern = '.'\n",
+      "        exp = re.compile('^' + ''.join(discovered).replace('_', exclusion_pattern) + '$')\n",
+      "        self.candidate_words = [w for w in self.candidate_words if exp.match(w)]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 59
+    }
+   ],
+   "metadata": {}
+  }
+ ]
+}
\ No newline at end of file
diff --git a/hangman/05-hangman-better.ipynb b/hangman/05-hangman-better.ipynb
deleted file mode 100644 (file)
index 20a12e0..0000000
+++ /dev/null
@@ -1,2335 +0,0 @@
-{
- "metadata": {
-  "name": "",
-  "signature": "sha256:32b3b300745f022158bfde0b3fc0a50b11d36551211371d50140e9f9d2a7b8e1"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
-  {
-   "cells": [
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "import re\n",
-      "import random\n",
-      "import string\n",
-      "import collections"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 1
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "WORDS = [w.strip() for w in open('/usr/share/dict/british-english').readlines() \n",
-      "         if re.match(r'^[a-z]*$', w.strip())]"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 2
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "LETTER_COUNTS = collections.Counter(l.lower() for l in open('sherlock-holmes.txt').read() if l in string.ascii_letters)\n",
-      "LETTERS_IN_ORDER = [p[0] for p in LETTER_COUNTS.most_common()]"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 3
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "STARTING_LIVES = 10"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 4
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "class Game:\n",
-      "    def __init__(self, target, player=None, lives=STARTING_LIVES):\n",
-      "        self.lives = lives\n",
-      "        self.player = player\n",
-      "        self.target = target\n",
-      "        self.discovered = list('_' * len(target))\n",
-      "        self.wrong_letters = []\n",
-      "        self.game_finished = False\n",
-      "        self.game_won = False\n",
-      "        self.game_lost = False\n",
-      "    \n",
-      "    def find_all(self, letter):\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",
-      "        for location in locations:\n",
-      "            self.discovered[location] = guessed_letter\n",
-      "        return self.discovered\n",
-      "    \n",
-      "    def do_turn(self):\n",
-      "        if self.player:\n",
-      "            guess = self.player.guess(self.discovered, self.wrong_letters, self.lives)\n",
-      "        else:\n",
-      "            guess = self.ask_for_guess()\n",
-      "        if guess in self.target:\n",
-      "            self.update_discovered_word(guess)\n",
-      "        else:\n",
-      "            self.lives -= 1\n",
-      "            if guess not in self.wrong_letters:\n",
-      "                self.wrong_letters += [guess]\n",
-      "        if self.lives == 0:\n",
-      "            self.game_finished = True\n",
-      "            self.game_lost = True\n",
-      "        if '_' not in self.discovered:\n",
-      "            self.game_finished = True\n",
-      "            self.game_won = True\n",
-      "            \n",
-      "    def ask_for_guess(self):\n",
-      "        print('Word:', ' '.join(self.discovered), \n",
-      "              ' : Lives =', self.lives, \n",
-      "              ', wrong guesses:', ' '.join(sorted(self.wrong_letters)))\n",
-      "        guess = input('Enter letter: ').strip().lower()[0]\n",
-      "        return guess\n",
-      "    \n",
-      "    def play_game(self):\n",
-      "        while not self.game_finished:\n",
-      "            self.do_turn()\n",
-      "        if not self.player:\n",
-      "            self.report_on_game()\n",
-      "        return self.game_won\n",
-      "    \n",
-      "    def report_on_game(self):\n",
-      "        if self.game_won:\n",
-      "            print('You won! The word was', self.target)\n",
-      "        else:\n",
-      "            print('You lost. The word was', self.target)\n",
-      "        return self.game_won"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 5
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "class PlayerFixedOrder:\n",
-      "    def __init__(self, ordered_letters):\n",
-      "        self.ordered_letters = ordered_letters\n",
-      "        \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 [l for l in self.ordered_letters if l not in guessed_letters][0]"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 6
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "class PlayerAlphabetical(PlayerFixedOrder):\n",
-      "    def __init__(self):\n",
-      "        super().__init__(string.ascii_lowercase)\n",
-      "\n",
-      "class PlayerFreqOrdered(PlayerFixedOrder):\n",
-      "    def __init__(self):\n",
-      "        super().__init__(LETTERS_IN_ORDER)\n"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 7
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "%%timeit\n",
-      "\n",
-      "wins = 0\n",
-      "for _ in range(1000):\n",
-      "    g = Game(random.choice(WORDS), player=PlayerAlphabetical())\n",
-      "    g.play_game()\n",
-      "    if g.game_won:\n",
-      "        wins += 1\n",
-      "print(wins)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "50\n",
-        "59"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "33"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "53"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "49"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "42"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "43"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "54"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "49"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "54"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "45"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "46"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "44"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "45"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "48"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "51"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "46"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "54"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "49"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "44"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "42"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "44"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "48"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "39"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "46"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "43"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "50"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "47"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "52"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "46"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "55"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "47"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "39"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "55"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "40"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "46"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "53"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "43"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "40"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "53"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "41"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "10 loops, best of 3: 64.2 ms per loop\n"
-       ]
-      }
-     ],
-     "prompt_number": 54
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "%%timeit\n",
-      "\n",
-      "wins = 0\n",
-      "for _ in range(1000):\n",
-      "    g = Game(random.choice(WORDS), player=PlayerFreqOrdered())\n",
-      "    g.play_game()\n",
-      "    if g.game_won:\n",
-      "        wins += 1\n",
-      "print(wins)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "334\n",
-        "342"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "318"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "313"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "353"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "304"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "332"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "313"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "335"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "339"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "328"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "334"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "322"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "347"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "334"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "340"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "319"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "365"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "315"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "307"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "314"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "317"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "310"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "324"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "313"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "318"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "314"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "324"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "297"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "335"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "335"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "343"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "342"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "318"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "306"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "353"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "332"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "330"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "334"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "307"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "306"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "10 loops, best of 3: 96.2 ms per loop\n"
-       ]
-      }
-     ],
-     "prompt_number": 56
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "%%timeit\n",
-      "\n",
-      "wins = 0\n",
-      "for _ in range(1000):\n",
-      "    g = Game(random.choice(WORDS), player=PlayerFixedOrder(list(reversed(string.ascii_lowercase))))\n",
-      "    g.play_game()\n",
-      "    if g.game_won:\n",
-      "        wins += 1\n",
-      "print(wins)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "7\n",
-        "5"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "6"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "7"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "7"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "10"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "8"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "5"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "5"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "5"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "9"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "3"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "8"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "13"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "8"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "10"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "9"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "9"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "12"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "6"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "6"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "14"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "9"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "1"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "8"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "8"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "7"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "9"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "10"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "6"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "7"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "6"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "4"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "6"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "3"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "7"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "7"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "10"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "11"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "6"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "4"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "10 loops, best of 3: 74.6 ms per loop\n"
-       ]
-      }
-     ],
-     "prompt_number": 57
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "DICT_COUNTS = collections.Counter(l.lower() for l in open('/usr/share/dict/british-english').read() if l in string.ascii_letters)\n",
-      "DICT_LETTERS_IN_ORDER = [p[0] for p in DICT_COUNTS.most_common()]"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 11
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "DICT_COUNTS"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 12,
-       "text": [
-        "Counter({'s': 91332, 'e': 88692, 'i': 66900, 'a': 64468, 'r': 57460, 'n': 57128, 't': 52949, 'o': 49121, 'l': 40995, 'c': 31854, 'd': 28505, 'u': 26372, 'g': 22693, 'm': 22549, 'p': 22249, 'h': 19337, 'b': 15540, 'y': 12652, 'f': 10679, 'k': 8386, 'v': 8000, 'w': 7505, 'x': 2125, 'z': 2058, 'j': 1950, 'q': 1536})"
-       ]
-      }
-     ],
-     "prompt_number": 12
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "print(DICT_LETTERS_IN_ORDER)\n",
-      "print(LETTERS_IN_ORDER)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "['s', 'e', 'i', 'a', 'r', 'n', 't', 'o', 'l', 'c', 'd', 'u', 'g', 'm', 'p', 'h', 'b', 'y', 'f', 'k', 'v', 'w', 'x', 'z', 'j', 'q']\n",
-        "['e', 't', 'a', 'o', 'i', 'h', 'n', 's', 'r', 'd', 'l', 'u', 'm', 'w', 'c', 'y', 'f', 'g', 'p', 'b', 'v', 'k', 'x', 'j', 'q', 'z']\n"
-       ]
-      }
-     ],
-     "prompt_number": 13
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "wins = 0\n",
-      "for _ in range(1000):\n",
-      "    g = Game(random.choice(WORDS), player=PlayerFixedOrder(DICT_LETTERS_IN_ORDER))\n",
-      "    g.play_game()\n",
-      "    if g.game_won:\n",
-      "        wins += 1\n",
-      "print(wins)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "440\n"
-       ]
-      }
-     ],
-     "prompt_number": 14
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "class PlayerAdaptiveLength:\n",
-      "    def __init__(self, words):\n",
-      "        self.all_words = words\n",
-      "        self.candidate_words = None\n",
-      "        \n",
-      "    def guess(self, discovered, missed, lives):\n",
-      "        if not self.candidate_words:\n",
-      "            self.set_ordered_letters(len(discovered))\n",
-      "        guessed_letters = [l.lower() for l in discovered + missed if l in string.ascii_letters]\n",
-      "        return [l for l in self.ordered_letters if l not in guessed_letters][0]\n",
-      "    \n",
-      "    def set_ordered_letters(self, word_len):\n",
-      "        self.candidate_words = [w for w in self.all_words if len(w) == word_len]\n",
-      "        counts = collections.Counter(l.lower() for l in ''.join(self.candidate_words) if l in string.ascii_letters)\n",
-      "        self.ordered_letters = [p[0] for p in counts.most_common()]"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 33
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "wins = 0\n",
-      "for _ in range(1000):\n",
-      "    g = Game(random.choice(WORDS), player=PlayerAdaptiveLength(WORDS))\n",
-      "    g.play_game()\n",
-      "    if g.game_won:\n",
-      "        wins += 1\n",
-      "print(wins)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "474\n"
-       ]
-      }
-     ],
-     "prompt_number": 34
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "class PlayerAdaptiveIncludedLetters:\n",
-      "    def __init__(self, words):\n",
-      "        self.candidate_words = words\n",
-      "        \n",
-      "    def guess(self, discovered, missed, lives):\n",
-      "        self.filter_candidate_words(discovered)\n",
-      "        self.set_ordered_letters()\n",
-      "        guessed_letters = [l.lower() for l in discovered + missed if l in string.ascii_letters]\n",
-      "        return [l for l in self.ordered_letters if l not in guessed_letters][0]\n",
-      "    \n",
-      "    def filter_candidate_words(self, discovered):\n",
-      "        exp = re.compile('^' + ''.join(discovered).replace('_', '.') + '$')\n",
-      "        self.candidate_words = [w for w in self.candidate_words if exp.match(w)]\n",
-      "        \n",
-      "    def set_ordered_letters(self):\n",
-      "        counts = collections.Counter(l.lower() for l in ''.join(self.candidate_words) if l in string.ascii_letters)\n",
-      "        self.ordered_letters = [p[0] for p in counts.most_common()]"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 35
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "wins = 0\n",
-      "for _ in range(1000):\n",
-      "    g = Game(random.choice(WORDS), player=PlayerAdaptiveIncludedLetters(WORDS))\n",
-      "    g.play_game()\n",
-      "    if g.game_won:\n",
-      "        wins += 1\n",
-      "print(wins)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "982\n"
-       ]
-      }
-     ],
-     "prompt_number": 36
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "re.match('^[^xaz]*$', 'happy')"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 37
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "class PlayerAdaptiveExcludedLetters:\n",
-      "    def __init__(self, words):\n",
-      "        self.candidate_words = words\n",
-      "        \n",
-      "    def guess(self, discovered, missed, lives):\n",
-      "        self.filter_candidate_words(missed)\n",
-      "        self.set_ordered_letters()\n",
-      "        guessed_letters = [l.lower() for l in discovered + missed if l in string.ascii_letters]\n",
-      "        return [l for l in self.ordered_letters if l not in guessed_letters][0]\n",
-      "    \n",
-      "    def filter_candidate_words(self, missed):\n",
-      "        if missed:\n",
-      "            exp = re.compile('^[^' + ''.join(missed) + ']*$')\n",
-      "            self.candidate_words = [w for w in self.candidate_words if exp.match(w)]\n",
-      "        \n",
-      "    def set_ordered_letters(self):\n",
-      "        counts = collections.Counter(l.lower() for l in ''.join(self.candidate_words) if l in string.ascii_letters)\n",
-      "        self.ordered_letters = [p[0] for p in counts.most_common()]"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 38
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "wins = 0\n",
-      "for _ in range(1000):\n",
-      "    g = Game(random.choice(WORDS), player=PlayerAdaptiveExcludedLetters(WORDS))\n",
-      "    g.play_game()\n",
-      "    if g.game_won:\n",
-      "        wins += 1\n",
-      "print(wins)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "502\n"
-       ]
-      }
-     ],
-     "prompt_number": 39
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "class PlayerAdaptivePattern:\n",
-      "    def __init__(self, words):\n",
-      "        self.candidate_words = words\n",
-      "        \n",
-      "    def guess(self, discovered, missed, lives):\n",
-      "        self.filter_candidate_words(discovered, missed)\n",
-      "        self.set_ordered_letters()\n",
-      "        guessed_letters = [l.lower() for l in discovered + missed if l in string.ascii_letters]\n",
-      "        return [l for l in self.ordered_letters if l not in guessed_letters][0]\n",
-      "    \n",
-      "    def filter_candidate_words(self, discovered, missed):\n",
-      "        attempted_letters = list(set(l.lower() for l in discovered + missed if l in string.ascii_letters))\n",
-      "        if attempted_letters:\n",
-      "            exclusion_pattern = '[^' + ''.join(attempted_letters) + ']'\n",
-      "        else:\n",
-      "            exclusion_pattern = '.'\n",
-      "        exp = re.compile('^' + ''.join(discovered).replace('_', exclusion_pattern) + '$')\n",
-      "        self.candidate_words = [w for w in self.candidate_words if exp.match(w)]\n",
-      "        \n",
-      "    def set_ordered_letters(self):\n",
-      "        counts = collections.Counter(l.lower() for l in ''.join(self.candidate_words) if l in string.ascii_letters)\n",
-      "        self.ordered_letters = [p[0] for p in counts.most_common()]\n"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 40
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "wins = 0\n",
-      "for _ in range(1000):\n",
-      "    g = Game(random.choice(WORDS), player=PlayerAdaptivePattern(WORDS))\n",
-      "    g.play_game()\n",
-      "    if g.game_won:\n",
-      "        wins += 1\n",
-      "print(wins)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "993\n"
-       ]
-      }
-     ],
-     "prompt_number": 41
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "%%timeit\n",
-      "\n",
-      "wins = 0\n",
-      "for _ in range(1000):\n",
-      "    g = Game(random.choice(WORDS), player=PlayerAdaptivePattern(WORDS))\n",
-      "    g.play_game()\n",
-      "    if g.game_won:\n",
-      "        wins += 1\n",
-      "print(wins)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "994\n",
-        "993"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "987"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "993"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "1 loops, best of 3: 30.6 s per loop\n"
-       ]
-      }
-     ],
-     "prompt_number": 42
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "class PlayerAdaptive:\n",
-      "    def __init__(self, words):\n",
-      "        self.candidate_words = words\n",
-      "        \n",
-      "    def guess(self, discovered, missed, lives):\n",
-      "        self.filter_candidate_words(discovered, missed)\n",
-      "        self.set_ordered_letters()\n",
-      "        guessed_letters = [l.lower() for l in discovered + missed if l in string.ascii_letters]\n",
-      "        return [l for l in self.ordered_letters if l not in guessed_letters][0]\n",
-      "    \n",
-      "    def filter_candidate_words(self, discovered, missed):\n",
-      "        pass\n",
-      "        \n",
-      "    def set_ordered_letters(self):\n",
-      "        counts = collections.Counter(l.lower() \n",
-      "                                     for l in ''.join(self.candidate_words) + string.ascii_lowercase \n",
-      "                                     if l in string.ascii_letters)\n",
-      "        self.ordered_letters = [p[0] for p in counts.most_common()]"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 43
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "class PlayerAdaptiveLength(PlayerAdaptive):\n",
-      "    def __init__(self, words):\n",
-      "        super().__init__(words)\n",
-      "        self.word_len = None\n",
-      "        self.ordered_letters = None\n",
-      "        \n",
-      "    def filter_candidate_words(self, discovered, missed):\n",
-      "        if not self.word_len:\n",
-      "            self.word_len = len(discovered)\n",
-      "            self.candidate_words = [w for w in self.candidate_words if len(w) == self.word_len]\n",
-      "    \n",
-      "    def set_ordered_letters(self):\n",
-      "        if not self.ordered_letters:\n",
-      "            super().set_ordered_letters()"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 44
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "class PlayerAdaptiveIncludedLetters(PlayerAdaptive):\n",
-      "    def filter_candidate_words(self, discovered, missed):\n",
-      "        exp = re.compile('^' + ''.join(discovered).replace('_', '.') + '$')\n",
-      "        self.candidate_words = [w for w in self.candidate_words if exp.match(w)]"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 45
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "class PlayerAdaptiveExcludedLetters(PlayerAdaptive):\n",
-      "    def filter_candidate_words(self, discovered, missed):\n",
-      "        if missed:\n",
-      "            exp = re.compile('^[^' + ''.join(missed) + ']*$')\n",
-      "            self.candidate_words = [w for w in self.candidate_words if exp.match(w)]        "
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 46
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "class PlayerAdaptivePattern(PlayerAdaptive):\n",
-      "    def filter_candidate_words(self, discovered, missed):\n",
-      "        attempted_letters = [l for l in discovered if l != '_'] + missed\n",
-      "        if attempted_letters:\n",
-      "            exclusion_pattern = '[^' + ''.join(attempted_letters) + ']'\n",
-      "        else:\n",
-      "            exclusion_pattern = '.'\n",
-      "        exp = re.compile('^' + ''.join(discovered).replace('_', exclusion_pattern) + '$')\n",
-      "        self.candidate_words = [w for w in self.candidate_words if exp.match(w)]"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 47
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "%%timeit\n",
-      "\n",
-      "wins = 0\n",
-      "for _ in range(1000):\n",
-      "    g = Game(random.choice(WORDS), player=PlayerAdaptiveLength(WORDS))\n",
-      "    g.play_game()\n",
-      "    if g.game_won:\n",
-      "        wins += 1\n",
-      "print(wins)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "479\n",
-        "455"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "460"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "498"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "1 loops, best of 3: 15.9 s per loop\n"
-       ]
-      }
-     ],
-     "prompt_number": 48
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "%%timeit\n",
-      "\n",
-      "wins = 0\n",
-      "for _ in range(1000):\n",
-      "    g = Game(random.choice(WORDS), player=PlayerAdaptiveIncludedLetters(WORDS))\n",
-      "    g.play_game()\n",
-      "    if g.game_won:\n",
-      "        wins += 1\n",
-      "print(wins)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "981\n",
-        "983"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "980"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "980"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "1 loops, best of 3: 36.9 s per loop\n"
-       ]
-      }
-     ],
-     "prompt_number": 49
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "%%timeit\n",
-      "\n",
-      "wins = 0\n",
-      "for _ in range(1000):\n",
-      "    g = Game(random.choice(WORDS), player=PlayerAdaptiveExcludedLetters(WORDS))\n",
-      "    g.play_game()\n",
-      "    if g.game_won:\n",
-      "        wins += 1\n",
-      "print(wins)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "521\n",
-        "484"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "491"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "518"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "1 loops, best of 3: 7min 18s per loop\n"
-       ]
-      }
-     ],
-     "prompt_number": 50
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "%%timeit\n",
-      "\n",
-      "wins = 0\n",
-      "for _ in range(1000):\n",
-      "    g = Game(random.choice(WORDS), player=PlayerAdaptivePattern(WORDS))\n",
-      "    g.play_game()\n",
-      "    if g.game_won:\n",
-      "        wins += 1\n",
-      "print(wins)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "987\n",
-        "988"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "996"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "995"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "1 loops, best of 3: 31.1 s per loop\n"
-       ]
-      }
-     ],
-     "prompt_number": 51
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "for _ in range(1000):\n",
-      "    g = Game(random.choice(WORDS), player=PlayerAdaptivePattern(WORDS))\n",
-      "    g.play_game()\n",
-      "    if not g.game_won:\n",
-      "        print(g.target, g.discovered, g.wrong_letters)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "naked ['_', 'a', '_', 'e', 'd'] ['s', 'r', 'w', 'c', 't', 'g', 'l', 'f', 'p', 'm']\n",
-        "wound"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        " ['_', 'o', 'u', 'n', 'd'] ['s', 'e', 'a', 'y', 'p', 'm', 'f', 'h', 'b', 'r']\n",
-        "hut"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        " ['_', 'u', 't'] ['a', 'o', 'e', 'i', 'b', 'g', 'n', 'p', 'm', 'c']\n",
-        "fucker"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        " ['_', 'u', '_', '_', 'e', 'r'] ['d', 's', 'i', 'a', 'o', 't', 'b', 'n', 'm', 'l']\n",
-        "fox"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        " ['_', 'o', '_'] ['a', 't', 'b', 'd', 'w', 'p', 'n', 's', 'g', 'y']\n",
-        "wills"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        " ['_', 'i', 'l', 'l', 's'] ['e', 'o', 'a', 'g', 'p', 'm', 'k', 'f', 'h', 'd']\n",
-        "bunny"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        " ['_', 'u', 'n', 'n', 'y'] ['s', 'e', 'a', 'o', 'i', 'm', 'l', 'g', 'f', 't']\n",
-        "curving"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        " ['c', 'u', '_', '_', 'i', 'n', 'g'] ['e', 'a', 'o', 'l', 's', 'f', 'p', 'b', 't', 'm']\n",
-        "hoe"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        " ['_', 'o', '_'] ['a', 't', 'b', 'd', 'w', 'p', 'n', 's', 'g', 'y']\n",
-        "butt"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        " ['_', 'u', '_', '_'] ['e', 's', 'o', 'a', 'i', 'l', 'f', 'r', 'n', 'm']\n",
-        "mucked"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        " ['_', 'u', '_', '_', 'e', 'd'] ['a', 'o', 'i', 'l', 's', 't', 'f', 'p', 'g', 'b']\n",
-        "flaw"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        " ['f', 'l', 'a', '_'] ['e', 's', 'o', 'r', 'y', 'g', 'k', 'x', 'p', 'n']\n"
-       ]
-      }
-     ],
-     "prompt_number": 52
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "iterations = 10000\n",
-      "wins = 0\n",
-      "for _ in range(iterations):\n",
-      "    g = Game(random.choice(WORDS), player=PlayerAdaptivePattern(WORDS))\n",
-      "    g.play_game()\n",
-      "    if g.game_won:\n",
-      "        wins += 1\n",
-      "print(wins / iterations)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "0.9936\n"
-       ]
-      }
-     ],
-     "prompt_number": 53
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "class PlayerAdaptiveNoRegex:\n",
-      "    def __init__(self, words):\n",
-      "        self.candidate_words = words\n",
-      "        \n",
-      "    def guess(self, discovered, missed, lives):\n",
-      "        self.filter_candidate_words(discovered, missed)\n",
-      "        self.set_ordered_letters()\n",
-      "        guessed_letters = [l.lower() for l in discovered + missed if l in string.ascii_letters]\n",
-      "        return [l for l in self.ordered_letters if l not in guessed_letters][0]\n",
-      "    \n",
-      "    def filter_candidate_words(self, discovered, missed):\n",
-      "        pass\n",
-      "        \n",
-      "    def set_ordered_letters(self):\n",
-      "        counts = collections.Counter(l.lower() \n",
-      "                                     for l in ''.join(self.candidate_words) + string.ascii_lowercase \n",
-      "                                     if l in string.ascii_letters)\n",
-      "        self.ordered_letters = [p[0] for p in counts.most_common()]\n",
-      "\n",
-      "    def match(self, pattern, target, excluded=None):\n",
-      "        if not excluded:\n",
-      "            excluded = ''\n",
-      "        if len(pattern) != len(target):\n",
-      "            return False\n",
-      "        for m, c in zip(pattern, target):\n",
-      "            if m == '_' and c not in excluded:\n",
-      "                # true\n",
-      "                pass\n",
-      "            elif m != '_' and m == c:\n",
-      "                # true\n",
-      "                pass\n",
-      "            else:\n",
-      "                return False\n",
-      "        return True        "
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 59
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "class PlayerAdaptiveLengthNoRegex(PlayerAdaptiveNoRegex):\n",
-      "    def __init__(self, words):\n",
-      "        super().__init__(words)\n",
-      "        self.word_len = None\n",
-      "        self.ordered_letters = None\n",
-      "        \n",
-      "    def filter_candidate_words(self, discovered, missed):\n",
-      "        if not self.word_len:\n",
-      "            self.word_len = len(discovered)\n",
-      "            self.candidate_words = [w for w in self.candidate_words if len(w) == self.word_len]\n",
-      "    \n",
-      "    def set_ordered_letters(self):\n",
-      "        if not self.ordered_letters:\n",
-      "            super().set_ordered_letters()"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 60
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "class PlayerAdaptiveIncludedLettersNoRegex(PlayerAdaptiveNoRegex):\n",
-      "    def filter_candidate_words(self, discovered, missed):\n",
-      "        self.candidate_words = [w for w in self.candidate_words if self.match(discovered, w)]"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 61
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "class PlayerAdaptiveExcludedLettersNoRegex(PlayerAdaptiveNoRegex):\n",
-      "    def filter_candidate_words(self, discovered, missed):\n",
-      "        if missed:\n",
-      "            empty_target = '_' * len(discovered)\n",
-      "            self.candidate_words = [w for w in self.candidate_words if self.match(empty_target, w, missed)]        "
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 66
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "class PlayerAdaptivePatternNoRegex(PlayerAdaptiveNoRegex):\n",
-      "    def filter_candidate_words(self, discovered, missed):\n",
-      "        attempted_letters = [l for l in discovered if l != '_'] + missed\n",
-      "        self.candidate_words = [w for w in self.candidate_words if self.match(discovered, w, attempted_letters)]"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 67
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "%%timeit\n",
-      "\n",
-      "wins = 0\n",
-      "for _ in range(1000):\n",
-      "    g = Game(random.choice(WORDS), player=PlayerAdaptiveLengthNoRegex(WORDS))\n",
-      "    g.play_game()\n",
-      "    if g.game_won:\n",
-      "        wins += 1\n",
-      "print(wins)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "471\n",
-        "492"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "502"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "469"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "1 loops, best of 3: 16 s per loop\n"
-       ]
-      }
-     ],
-     "prompt_number": 69
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "%%timeit\n",
-      "\n",
-      "wins = 0\n",
-      "for _ in range(1000):\n",
-      "    g = Game(random.choice(WORDS), player=PlayerAdaptiveIncludedLettersNoRegex(WORDS))\n",
-      "    g.play_game()\n",
-      "    if g.game_won:\n",
-      "        wins += 1\n",
-      "print(wins)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "978\n",
-        "979"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "983"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "979"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "1 loops, best of 3: 48 s per loop\n"
-       ]
-      }
-     ],
-     "prompt_number": 70
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "%%timeit\n",
-      "\n",
-      "wins = 0\n",
-      "for _ in range(1000):\n",
-      "    g = Game(random.choice(WORDS), player=PlayerAdaptiveExcludedLettersNoRegex(WORDS))\n",
-      "    g.play_game()\n",
-      "    if g.game_won:\n",
-      "        wins += 1\n",
-      "print(wins)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "582\n",
-        "595"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "587"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "611"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "1 loops, best of 3: 4min 59s per loop\n"
-       ]
-      }
-     ],
-     "prompt_number": 71
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "%%timeit\n",
-      "\n",
-      "wins = 0\n",
-      "for _ in range(1000):\n",
-      "    g = Game(random.choice(WORDS), player=PlayerAdaptivePatternNoRegex(WORDS))\n",
-      "    g.play_game()\n",
-      "    if g.game_won:\n",
-      "        wins += 1\n",
-      "print(wins)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "991\n",
-        "992"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "993"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "994"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "1 loops, best of 3: 37.9 s per loop\n"
-       ]
-      }
-     ],
-     "prompt_number": 72
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 72
-    }
-   ],
-   "metadata": {}
-  }
- ]
-}
\ No newline at end of file
diff --git a/hangman/05-hangman-logging.ipynb b/hangman/05-hangman-logging.ipynb
new file mode 100644 (file)
index 0000000..b14dd0f
--- /dev/null
@@ -0,0 +1,5128 @@
+{
+ "metadata": {
+  "name": "",
+  "signature": "sha256:319787fef945fe728683c1bd9cbdb783efff5e79fec8332f433ebca77395f16d"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+  {
+   "cells": [
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "from hangman import *\n",
+      "import csv"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 5
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "with open('fixed_alphabetical.csv', 'w', newline='') as csvfile:\n",
+      "    gamewriter = csv.writer(csvfile)\n",
+      "    gamewriter.writerow([\"target\", \"discovered\", \"wrong letters\", \"number of hits\", \"lives remaining\", \"game won\"])\n",
+      "    for _ in range(100):\n",
+      "        g = Game(random.choice(WORDS), player=PlayerAlphabetical())\n",
+      "        g.play_game()\n",
+      "        gamewriter.writerow([g.target, g.discovered, g.wrong_letters, \n",
+      "                                len([l for l in g.discovered if l != '_']),\n",
+      "                                g.lives, g.game_won])"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 63
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "players = [(PlayerAlphabetical, None, 'fixed_alphabetical.csv'), \n",
+      "           (PlayerAlphabeticalReversed, None, 'fixed_alphabetical_reversed.csv'), \n",
+      "           (PlayerFreqOrdered, None, 'fixed_order.csv'),\n",
+      "           (PlayerDictFreqOrdered, None, 'fixed_dict_order.csv'),\n",
+      "           (PlayerAdaptiveLength, WORDS, 'adaptive_length.csv'),\n",
+      "           (PlayerAdaptiveIncludedLetters, WORDS, 'adaptive_included.csv'),\n",
+      "           (PlayerAdaptiveExcludedLetters, WORDS, 'adaptive_excluded.csv'),\n",
+      "           (PlayerAdaptivePattern, WORDS, 'adaptive_pattern.csv'),\n",
+      "           (PlayerAdaptiveSplit, WORDS, 'adaptive_split.csv')]\n",
+      "\n",
+      "games_per_player = 1000\n",
+      "\n",
+      "for p, a, f in players:\n",
+      "    with open(f, 'w', newline='') as csvfile:\n",
+      "        gamewriter = csv.writer(csvfile)\n",
+      "        gamewriter.writerow([\"target\", \"discovered\", \"wrong letters\", \"number of hits\", \"lives remaining\", \"game won\"])\n",
+      "        for _ in range(games_per_player):\n",
+      "            if a:\n",
+      "                player = p(a)\n",
+      "            else:\n",
+      "                player=p()\n",
+      "            g = Game(random.choice(WORDS), player=player)\n",
+      "            g.play_game()\n",
+      "            gamewriter.writerow([g.target, g.discovered, g.wrong_letters, \n",
+      "                                len([l for l in g.discovered if l != '_']),\n",
+      "                                g.lives, g.game_won])"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 64
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "players = [(PlayerAdaptiveSplit, WORDS, 'adaptive_split.csv')]\n",
+      "\n",
+      "games_per_player = 1000\n",
+      "\n",
+      "for p, a, f in players:\n",
+      "    with open(f, 'w', newline='') as csvfile:\n",
+      "        gamewriter = csv.writer(csvfile)\n",
+      "        gamewriter.writerow([\"target\", \"discovered\", \"wrong letters\", \"number of hits\", \"lives remaining\", \"game won\"])\n",
+      "        for _ in range(games_per_player):\n",
+      "            if a:\n",
+      "                player = p(a)\n",
+      "            else:\n",
+      "                player=p()\n",
+      "            g = Game(random.choice(WORDS), player=player)\n",
+      "            g.play_game()\n",
+      "            gamewriter.writerow([g.target, g.discovered, g.wrong_letters, \n",
+      "                                len([l for l in g.discovered if l != '_']),\n",
+      "                                g.lives, g.game_won])"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 6
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "import pandas as pd\n",
+      "import matplotlib as mpl\n",
+      "import matplotlib.pyplot as plt\n",
+      "%matplotlib inline"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 7
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "fixed_order = pd.read_csv('fixed_order.csv')\n",
+      "fixed_order"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "html": [
+        "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
+        "<table border=\"1\" class=\"dataframe\">\n",
+        "  <thead>\n",
+        "    <tr style=\"text-align: right;\">\n",
+        "      <th></th>\n",
+        "      <th>target</th>\n",
+        "      <th>discovered</th>\n",
+        "      <th>wrong letters</th>\n",
+        "      <th>number of hits</th>\n",
+        "      <th>lives remaining</th>\n",
+        "      <th>game won</th>\n",
+        "    </tr>\n",
+        "  </thead>\n",
+        "  <tbody>\n",
+        "    <tr>\n",
+        "      <th>0  </th>\n",
+        "      <td>     mouldering</td>\n",
+        "      <td> ['m', 'o', 'u', 'l', 'd', 'e', 'r', 'i', 'n', ...</td>\n",
+        "      <td>          ['t', 'a', 'h', 's', 'w', 'c', 'y', 'f']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 2</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>1  </th>\n",
+        "      <td>         deject</td>\n",
+        "      <td>                    ['d', 'e', '_', 'e', '_', 't']</td>\n",
+        "      <td> ['a', 'o', 'i', 'h', 'n', 's', 'r', 'l', 'u', ...</td>\n",
+        "      <td>  4</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>2  </th>\n",
+        "      <td>      lipsticks</td>\n",
+        "      <td>     ['l', 'i', '_', 's', 't', 'i', '_', '_', 's']</td>\n",
+        "      <td> ['e', 'a', 'o', 'h', 'n', 'r', 'd', 'u', 'm', ...</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>3  </th>\n",
+        "      <td>     disparaged</td>\n",
+        "      <td> ['d', 'i', 's', '_', 'a', 'r', 'a', '_', 'e', ...</td>\n",
+        "      <td> ['t', 'o', 'h', 'n', 'l', 'u', 'm', 'w', 'c', ...</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>4  </th>\n",
+        "      <td>         legion</td>\n",
+        "      <td>                    ['l', 'e', '_', 'i', 'o', 'n']</td>\n",
+        "      <td> ['t', 'a', 'h', 's', 'r', 'd', 'u', 'm', 'w', ...</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>5  </th>\n",
+        "      <td>    fabricating</td>\n",
+        "      <td> ['_', 'a', '_', 'r', 'i', 'c', 'a', 't', 'i', ...</td>\n",
+        "      <td> ['e', 'o', 'h', 's', 'd', 'l', 'u', 'm', 'w', ...</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>6  </th>\n",
+        "      <td>        nicking</td>\n",
+        "      <td>               ['n', 'i', '_', '_', 'i', 'n', '_']</td>\n",
+        "      <td> ['e', 't', 'a', 'o', 'h', 's', 'r', 'd', 'l', ...</td>\n",
+        "      <td>  4</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>7  </th>\n",
+        "      <td>       actinium</td>\n",
+        "      <td>          ['a', 'c', 't', 'i', 'n', 'i', 'u', 'm']</td>\n",
+        "      <td>          ['e', 'o', 'h', 's', 'r', 'd', 'l', 'w']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 2</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>8  </th>\n",
+        "      <td>        sedates</td>\n",
+        "      <td>               ['s', 'e', 'd', 'a', 't', 'e', 's']</td>\n",
+        "      <td>                         ['o', 'i', 'h', 'n', 'r']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> 5</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>9  </th>\n",
+        "      <td>    modernistic</td>\n",
+        "      <td> ['m', 'o', 'd', 'e', 'r', 'n', 'i', 's', 't', ...</td>\n",
+        "      <td>                         ['a', 'h', 'l', 'u', 'w']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td> 5</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>10 </th>\n",
+        "      <td>        grouchy</td>\n",
+        "      <td>               ['_', 'r', 'o', 'u', '_', 'h', '_']</td>\n",
+        "      <td> ['e', 't', 'a', 'i', 'n', 's', 'd', 'l', 'm', ...</td>\n",
+        "      <td>  4</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>11 </th>\n",
+        "      <td>           goop</td>\n",
+        "      <td>                              ['_', 'o', 'o', '_']</td>\n",
+        "      <td> ['e', 't', 'a', 'i', 'h', 'n', 's', 'r', 'd', ...</td>\n",
+        "      <td>  2</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>12 </th>\n",
+        "      <td>       theorems</td>\n",
+        "      <td>          ['t', 'h', 'e', 'o', 'r', 'e', 'm', 's']</td>\n",
+        "      <td>                    ['a', 'i', 'n', 'd', 'l', 'u']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 4</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>13 </th>\n",
+        "      <td>     panickiest</td>\n",
+        "      <td> ['_', 'a', 'n', 'i', 'c', '_', 'i', 'e', 's', ...</td>\n",
+        "      <td> ['o', 'h', 'r', 'd', 'l', 'u', 'm', 'w', 'y', ...</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>14 </th>\n",
+        "      <td>     rightfully</td>\n",
+        "      <td> ['r', 'i', 'g', 'h', 't', 'f', 'u', 'l', 'l', ...</td>\n",
+        "      <td>     ['e', 'a', 'o', 'n', 's', 'd', 'm', 'w', 'c']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 1</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>15 </th>\n",
+        "      <td>       esquires</td>\n",
+        "      <td>          ['e', 's', '_', 'u', 'i', 'r', 'e', 's']</td>\n",
+        "      <td> ['t', 'a', 'o', 'h', 'n', 'd', 'l', 'm', 'w', ...</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>16 </th>\n",
+        "      <td>         violet</td>\n",
+        "      <td>                    ['_', 'i', 'o', 'l', 'e', 't']</td>\n",
+        "      <td> ['a', 'h', 'n', 's', 'r', 'd', 'u', 'm', 'w', ...</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>17 </th>\n",
+        "      <td> dermatologists</td>\n",
+        "      <td> ['d', 'e', 'r', 'm', 'a', 't', 'o', 'l', 'o', ...</td>\n",
+        "      <td>               ['h', 'n', 'u', 'w', 'c', 'y', 'f']</td>\n",
+        "      <td> 14</td>\n",
+        "      <td> 3</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>18 </th>\n",
+        "      <td>          inane</td>\n",
+        "      <td>                         ['i', 'n', 'a', 'n', 'e']</td>\n",
+        "      <td>                                   ['t', 'o', 'h']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 7</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>19 </th>\n",
+        "      <td>        bonkers</td>\n",
+        "      <td>               ['_', 'o', 'n', '_', 'e', 'r', 's']</td>\n",
+        "      <td> ['t', 'a', 'i', 'h', 'd', 'l', 'u', 'm', 'w', ...</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>20 </th>\n",
+        "      <td>    reassigning</td>\n",
+        "      <td> ['r', 'e', 'a', 's', 's', 'i', '_', 'n', 'i', ...</td>\n",
+        "      <td> ['t', 'o', 'h', 'd', 'l', 'u', 'm', 'w', 'c', ...</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>21 </th>\n",
+        "      <td>      sweatshop</td>\n",
+        "      <td>     ['s', 'w', 'e', 'a', 't', 's', 'h', 'o', '_']</td>\n",
+        "      <td> ['i', 'n', 'r', 'd', 'l', 'u', 'm', 'c', 'y', ...</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>22 </th>\n",
+        "      <td>             ks</td>\n",
+        "      <td>                                        ['_', 's']</td>\n",
+        "      <td> ['e', 't', 'a', 'o', 'i', 'h', 'n', 'r', 'd', ...</td>\n",
+        "      <td>  1</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>23 </th>\n",
+        "      <td>       outcomes</td>\n",
+        "      <td>          ['o', 'u', 't', 'c', 'o', 'm', 'e', 's']</td>\n",
+        "      <td>          ['a', 'i', 'h', 'n', 'r', 'd', 'l', 'w']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 2</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>24 </th>\n",
+        "      <td>     parenthood</td>\n",
+        "      <td> ['_', 'a', 'r', 'e', 'n', 't', 'h', 'o', 'o', ...</td>\n",
+        "      <td> ['i', 's', 'l', 'u', 'm', 'w', 'c', 'y', 'f', ...</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>25 </th>\n",
+        "      <td>    frequencies</td>\n",
+        "      <td> ['f', 'r', 'e', '_', 'u', 'e', 'n', 'c', 'i', ...</td>\n",
+        "      <td> ['t', 'a', 'o', 'h', 'd', 'l', 'm', 'w', 'y', ...</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>26 </th>\n",
+        "      <td>         manias</td>\n",
+        "      <td>                    ['m', 'a', 'n', 'i', 'a', 's']</td>\n",
+        "      <td>          ['e', 't', 'o', 'h', 'r', 'd', 'l', 'u']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> 2</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>27 </th>\n",
+        "      <td>    resupplying</td>\n",
+        "      <td> ['r', 'e', 's', 'u', 'p', 'p', 'l', 'y', 'i', ...</td>\n",
+        "      <td>     ['t', 'a', 'o', 'h', 'd', 'm', 'w', 'c', 'f']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td> 1</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>28 </th>\n",
+        "      <td>   subcontinent</td>\n",
+        "      <td> ['s', 'u', '_', 'c', 'o', 'n', 't', 'i', 'n', ...</td>\n",
+        "      <td> ['a', 'h', 'r', 'd', 'l', 'm', 'w', 'y', 'f', ...</td>\n",
+        "      <td> 11</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>29 </th>\n",
+        "      <td>      baptismal</td>\n",
+        "      <td>     ['_', 'a', '_', 't', 'i', 's', 'm', 'a', 'l']</td>\n",
+        "      <td> ['e', 'o', 'h', 'n', 'r', 'd', 'u', 'w', 'c', ...</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>...</th>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>970</th>\n",
+        "      <td>          toxic</td>\n",
+        "      <td>                         ['t', 'o', '_', 'i', '_']</td>\n",
+        "      <td> ['e', 'a', 'h', 'n', 's', 'r', 'd', 'l', 'u', ...</td>\n",
+        "      <td>  3</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>971</th>\n",
+        "      <td>    brigantines</td>\n",
+        "      <td> ['_', 'r', 'i', '_', 'a', 'n', 't', 'i', 'n', ...</td>\n",
+        "      <td> ['o', 'h', 'd', 'l', 'u', 'm', 'w', 'c', 'y', ...</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>972</th>\n",
+        "      <td>        imagery</td>\n",
+        "      <td>               ['i', 'm', 'a', '_', 'e', 'r', '_']</td>\n",
+        "      <td> ['t', 'o', 'h', 'n', 's', 'd', 'l', 'u', 'w', ...</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>973</th>\n",
+        "      <td>    melancholic</td>\n",
+        "      <td> ['m', 'e', 'l', 'a', 'n', 'c', 'h', 'o', 'l', ...</td>\n",
+        "      <td>                    ['t', 's', 'r', 'd', 'u', 'w']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td> 4</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>974</th>\n",
+        "      <td>    enthusiasms</td>\n",
+        "      <td> ['e', 'n', 't', 'h', 'u', 's', 'i', 'a', 's', ...</td>\n",
+        "      <td>                              ['o', 'r', 'd', 'l']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td> 6</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>975</th>\n",
+        "      <td>        abraded</td>\n",
+        "      <td>               ['a', '_', 'r', 'a', 'd', 'e', 'd']</td>\n",
+        "      <td> ['t', 'o', 'i', 'h', 'n', 's', 'l', 'u', 'm', ...</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>976</th>\n",
+        "      <td>          lakes</td>\n",
+        "      <td>                         ['l', 'a', '_', 'e', 's']</td>\n",
+        "      <td> ['t', 'o', 'i', 'h', 'n', 'r', 'd', 'u', 'm', ...</td>\n",
+        "      <td>  4</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>977</th>\n",
+        "      <td> telepathically</td>\n",
+        "      <td> ['t', 'e', 'l', 'e', '_', 'a', 't', 'h', 'i', ...</td>\n",
+        "      <td> ['o', 'n', 's', 'r', 'd', 'u', 'm', 'w', 'f', ...</td>\n",
+        "      <td> 13</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>978</th>\n",
+        "      <td>         taking</td>\n",
+        "      <td>                    ['t', 'a', '_', 'i', 'n', '_']</td>\n",
+        "      <td> ['e', 'o', 'h', 's', 'r', 'd', 'l', 'u', 'm', ...</td>\n",
+        "      <td>  4</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>979</th>\n",
+        "      <td>       tomorrow</td>\n",
+        "      <td>          ['t', 'o', 'm', 'o', 'r', 'r', 'o', 'w']</td>\n",
+        "      <td>     ['e', 'a', 'i', 'h', 'n', 's', 'd', 'l', 'u']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 1</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>980</th>\n",
+        "      <td>         refile</td>\n",
+        "      <td>                    ['r', 'e', '_', 'i', 'l', 'e']</td>\n",
+        "      <td> ['t', 'a', 'o', 'h', 'n', 's', 'd', 'u', 'm', ...</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>981</th>\n",
+        "      <td>         unkind</td>\n",
+        "      <td>                    ['u', 'n', '_', 'i', 'n', 'd']</td>\n",
+        "      <td> ['e', 't', 'a', 'o', 'h', 's', 'r', 'l', 'm', ...</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>982</th>\n",
+        "      <td>      specimens</td>\n",
+        "      <td>     ['s', '_', 'e', 'c', 'i', 'm', 'e', 'n', 's']</td>\n",
+        "      <td> ['t', 'a', 'o', 'h', 'r', 'd', 'l', 'u', 'w', ...</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>983</th>\n",
+        "      <td>        regrets</td>\n",
+        "      <td>               ['r', 'e', '_', 'r', 'e', 't', 's']</td>\n",
+        "      <td> ['a', 'o', 'i', 'h', 'n', 'd', 'l', 'u', 'm', ...</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>984</th>\n",
+        "      <td>    remaindered</td>\n",
+        "      <td> ['r', 'e', 'm', 'a', 'i', 'n', 'd', 'e', 'r', ...</td>\n",
+        "      <td>                    ['t', 'o', 'h', 's', 'l', 'u']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td> 4</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>985</th>\n",
+        "      <td>        dignify</td>\n",
+        "      <td>               ['d', 'i', '_', 'n', 'i', '_', '_']</td>\n",
+        "      <td> ['e', 't', 'a', 'o', 'h', 's', 'r', 'l', 'u', ...</td>\n",
+        "      <td>  4</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>986</th>\n",
+        "      <td>      bandwagon</td>\n",
+        "      <td>     ['_', 'a', 'n', 'd', 'w', 'a', '_', 'o', 'n']</td>\n",
+        "      <td> ['e', 't', 'i', 'h', 's', 'r', 'l', 'u', 'm', ...</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>987</th>\n",
+        "      <td>     pacemakers</td>\n",
+        "      <td> ['_', 'a', 'c', 'e', 'm', 'a', '_', 'e', 'r', ...</td>\n",
+        "      <td> ['t', 'o', 'i', 'h', 'n', 'd', 'l', 'u', 'w', ...</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>988</th>\n",
+        "      <td>        dandles</td>\n",
+        "      <td>               ['d', 'a', 'n', 'd', 'l', 'e', 's']</td>\n",
+        "      <td>                         ['t', 'o', 'i', 'h', 'r']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> 5</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>989</th>\n",
+        "      <td>          white</td>\n",
+        "      <td>                         ['w', 'h', 'i', 't', 'e']</td>\n",
+        "      <td>     ['a', 'o', 'n', 's', 'r', 'd', 'l', 'u', 'm']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 1</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>990</th>\n",
+        "      <td>          arena</td>\n",
+        "      <td>                         ['a', 'r', 'e', 'n', 'a']</td>\n",
+        "      <td>                         ['t', 'o', 'i', 'h', 's']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 5</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>991</th>\n",
+        "      <td>        surreal</td>\n",
+        "      <td>               ['s', 'u', 'r', 'r', 'e', 'a', 'l']</td>\n",
+        "      <td>                    ['t', 'o', 'i', 'h', 'n', 'd']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> 4</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>992</th>\n",
+        "      <td>       gutsiest</td>\n",
+        "      <td>          ['_', 'u', 't', 's', 'i', 'e', 's', 't']</td>\n",
+        "      <td> ['a', 'o', 'h', 'n', 'r', 'd', 'l', 'm', 'w', ...</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>993</th>\n",
+        "      <td>     annulments</td>\n",
+        "      <td> ['a', 'n', 'n', 'u', 'l', 'm', 'e', 'n', 't', ...</td>\n",
+        "      <td>                         ['o', 'i', 'h', 'r', 'd']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 5</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>994</th>\n",
+        "      <td>     accretions</td>\n",
+        "      <td> ['a', 'c', 'c', 'r', 'e', 't', 'i', 'o', 'n', ...</td>\n",
+        "      <td>                    ['h', 'd', 'l', 'u', 'm', 'w']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 4</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>995</th>\n",
+        "      <td>         safari</td>\n",
+        "      <td>                    ['s', 'a', '_', 'a', 'r', 'i']</td>\n",
+        "      <td> ['e', 't', 'o', 'h', 'n', 'd', 'l', 'u', 'm', ...</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>996</th>\n",
+        "      <td>          recap</td>\n",
+        "      <td>                         ['r', 'e', '_', 'a', '_']</td>\n",
+        "      <td> ['t', 'o', 'i', 'h', 'n', 's', 'd', 'l', 'u', ...</td>\n",
+        "      <td>  3</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>997</th>\n",
+        "      <td>          torts</td>\n",
+        "      <td>                         ['t', 'o', 'r', 't', 's']</td>\n",
+        "      <td>                         ['e', 'a', 'i', 'h', 'n']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 5</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>998</th>\n",
+        "      <td>     tyrannised</td>\n",
+        "      <td> ['t', 'y', 'r', 'a', 'n', 'n', 'i', 's', 'e', ...</td>\n",
+        "      <td>               ['o', 'h', 'l', 'u', 'm', 'w', 'c']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 3</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>999</th>\n",
+        "      <td>    indubitable</td>\n",
+        "      <td> ['i', 'n', 'd', 'u', '_', 'i', 't', 'a', '_', ...</td>\n",
+        "      <td> ['o', 'h', 's', 'r', 'm', 'w', 'c', 'y', 'f', ...</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "  </tbody>\n",
+        "</table>\n",
+        "<p>1000 rows \u00d7 6 columns</p>\n",
+        "</div>"
+       ],
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 8,
+       "text": [
+        "             target                                         discovered  \\\n",
+        "0        mouldering  ['m', 'o', 'u', 'l', 'd', 'e', 'r', 'i', 'n', ...   \n",
+        "1            deject                     ['d', 'e', '_', 'e', '_', 't']   \n",
+        "2         lipsticks      ['l', 'i', '_', 's', 't', 'i', '_', '_', 's']   \n",
+        "3        disparaged  ['d', 'i', 's', '_', 'a', 'r', 'a', '_', 'e', ...   \n",
+        "4            legion                     ['l', 'e', '_', 'i', 'o', 'n']   \n",
+        "5       fabricating  ['_', 'a', '_', 'r', 'i', 'c', 'a', 't', 'i', ...   \n",
+        "6           nicking                ['n', 'i', '_', '_', 'i', 'n', '_']   \n",
+        "7          actinium           ['a', 'c', 't', 'i', 'n', 'i', 'u', 'm']   \n",
+        "8           sedates                ['s', 'e', 'd', 'a', 't', 'e', 's']   \n",
+        "9       modernistic  ['m', 'o', 'd', 'e', 'r', 'n', 'i', 's', 't', ...   \n",
+        "10          grouchy                ['_', 'r', 'o', 'u', '_', 'h', '_']   \n",
+        "11             goop                               ['_', 'o', 'o', '_']   \n",
+        "12         theorems           ['t', 'h', 'e', 'o', 'r', 'e', 'm', 's']   \n",
+        "13       panickiest  ['_', 'a', 'n', 'i', 'c', '_', 'i', 'e', 's', ...   \n",
+        "14       rightfully  ['r', 'i', 'g', 'h', 't', 'f', 'u', 'l', 'l', ...   \n",
+        "15         esquires           ['e', 's', '_', 'u', 'i', 'r', 'e', 's']   \n",
+        "16           violet                     ['_', 'i', 'o', 'l', 'e', 't']   \n",
+        "17   dermatologists  ['d', 'e', 'r', 'm', 'a', 't', 'o', 'l', 'o', ...   \n",
+        "18            inane                          ['i', 'n', 'a', 'n', 'e']   \n",
+        "19          bonkers                ['_', 'o', 'n', '_', 'e', 'r', 's']   \n",
+        "20      reassigning  ['r', 'e', 'a', 's', 's', 'i', '_', 'n', 'i', ...   \n",
+        "21        sweatshop      ['s', 'w', 'e', 'a', 't', 's', 'h', 'o', '_']   \n",
+        "22               ks                                         ['_', 's']   \n",
+        "23         outcomes           ['o', 'u', 't', 'c', 'o', 'm', 'e', 's']   \n",
+        "24       parenthood  ['_', 'a', 'r', 'e', 'n', 't', 'h', 'o', 'o', ...   \n",
+        "25      frequencies  ['f', 'r', 'e', '_', 'u', 'e', 'n', 'c', 'i', ...   \n",
+        "26           manias                     ['m', 'a', 'n', 'i', 'a', 's']   \n",
+        "27      resupplying  ['r', 'e', 's', 'u', 'p', 'p', 'l', 'y', 'i', ...   \n",
+        "28     subcontinent  ['s', 'u', '_', 'c', 'o', 'n', 't', 'i', 'n', ...   \n",
+        "29        baptismal      ['_', 'a', '_', 't', 'i', 's', 'm', 'a', 'l']   \n",
+        "..              ...                                                ...   \n",
+        "970           toxic                          ['t', 'o', '_', 'i', '_']   \n",
+        "971     brigantines  ['_', 'r', 'i', '_', 'a', 'n', 't', 'i', 'n', ...   \n",
+        "972         imagery                ['i', 'm', 'a', '_', 'e', 'r', '_']   \n",
+        "973     melancholic  ['m', 'e', 'l', 'a', 'n', 'c', 'h', 'o', 'l', ...   \n",
+        "974     enthusiasms  ['e', 'n', 't', 'h', 'u', 's', 'i', 'a', 's', ...   \n",
+        "975         abraded                ['a', '_', 'r', 'a', 'd', 'e', 'd']   \n",
+        "976           lakes                          ['l', 'a', '_', 'e', 's']   \n",
+        "977  telepathically  ['t', 'e', 'l', 'e', '_', 'a', 't', 'h', 'i', ...   \n",
+        "978          taking                     ['t', 'a', '_', 'i', 'n', '_']   \n",
+        "979        tomorrow           ['t', 'o', 'm', 'o', 'r', 'r', 'o', 'w']   \n",
+        "980          refile                     ['r', 'e', '_', 'i', 'l', 'e']   \n",
+        "981          unkind                     ['u', 'n', '_', 'i', 'n', 'd']   \n",
+        "982       specimens      ['s', '_', 'e', 'c', 'i', 'm', 'e', 'n', 's']   \n",
+        "983         regrets                ['r', 'e', '_', 'r', 'e', 't', 's']   \n",
+        "984     remaindered  ['r', 'e', 'm', 'a', 'i', 'n', 'd', 'e', 'r', ...   \n",
+        "985         dignify                ['d', 'i', '_', 'n', 'i', '_', '_']   \n",
+        "986       bandwagon      ['_', 'a', 'n', 'd', 'w', 'a', '_', 'o', 'n']   \n",
+        "987      pacemakers  ['_', 'a', 'c', 'e', 'm', 'a', '_', 'e', 'r', ...   \n",
+        "988         dandles                ['d', 'a', 'n', 'd', 'l', 'e', 's']   \n",
+        "989           white                          ['w', 'h', 'i', 't', 'e']   \n",
+        "990           arena                          ['a', 'r', 'e', 'n', 'a']   \n",
+        "991         surreal                ['s', 'u', 'r', 'r', 'e', 'a', 'l']   \n",
+        "992        gutsiest           ['_', 'u', 't', 's', 'i', 'e', 's', 't']   \n",
+        "993      annulments  ['a', 'n', 'n', 'u', 'l', 'm', 'e', 'n', 't', ...   \n",
+        "994      accretions  ['a', 'c', 'c', 'r', 'e', 't', 'i', 'o', 'n', ...   \n",
+        "995          safari                     ['s', 'a', '_', 'a', 'r', 'i']   \n",
+        "996           recap                          ['r', 'e', '_', 'a', '_']   \n",
+        "997           torts                          ['t', 'o', 'r', 't', 's']   \n",
+        "998      tyrannised  ['t', 'y', 'r', 'a', 'n', 'n', 'i', 's', 'e', ...   \n",
+        "999     indubitable  ['i', 'n', 'd', 'u', '_', 'i', 't', 'a', '_', ...   \n",
+        "\n",
+        "                                         wrong letters  number of hits  \\\n",
+        "0             ['t', 'a', 'h', 's', 'w', 'c', 'y', 'f']              10   \n",
+        "1    ['a', 'o', 'i', 'h', 'n', 's', 'r', 'l', 'u', ...               4   \n",
+        "2    ['e', 'a', 'o', 'h', 'n', 'r', 'd', 'u', 'm', ...               6   \n",
+        "3    ['t', 'o', 'h', 'n', 'l', 'u', 'm', 'w', 'c', ...               8   \n",
+        "4    ['t', 'a', 'h', 's', 'r', 'd', 'u', 'm', 'w', ...               5   \n",
+        "5    ['e', 'o', 'h', 's', 'd', 'l', 'u', 'm', 'w', ...               8   \n",
+        "6    ['e', 't', 'a', 'o', 'h', 's', 'r', 'd', 'l', ...               4   \n",
+        "7             ['e', 'o', 'h', 's', 'r', 'd', 'l', 'w']               8   \n",
+        "8                            ['o', 'i', 'h', 'n', 'r']               7   \n",
+        "9                            ['a', 'h', 'l', 'u', 'w']              11   \n",
+        "10   ['e', 't', 'a', 'i', 'n', 's', 'd', 'l', 'm', ...               4   \n",
+        "11   ['e', 't', 'a', 'i', 'h', 'n', 's', 'r', 'd', ...               2   \n",
+        "12                      ['a', 'i', 'n', 'd', 'l', 'u']               8   \n",
+        "13   ['o', 'h', 'r', 'd', 'l', 'u', 'm', 'w', 'y', ...               8   \n",
+        "14       ['e', 'a', 'o', 'n', 's', 'd', 'm', 'w', 'c']              10   \n",
+        "15   ['t', 'a', 'o', 'h', 'n', 'd', 'l', 'm', 'w', ...               7   \n",
+        "16   ['a', 'h', 'n', 's', 'r', 'd', 'u', 'm', 'w', ...               5   \n",
+        "17                 ['h', 'n', 'u', 'w', 'c', 'y', 'f']              14   \n",
+        "18                                     ['t', 'o', 'h']               5   \n",
+        "19   ['t', 'a', 'i', 'h', 'd', 'l', 'u', 'm', 'w', ...               5   \n",
+        "20   ['t', 'o', 'h', 'd', 'l', 'u', 'm', 'w', 'c', ...               9   \n",
+        "21   ['i', 'n', 'r', 'd', 'l', 'u', 'm', 'c', 'y', ...               8   \n",
+        "22   ['e', 't', 'a', 'o', 'i', 'h', 'n', 'r', 'd', ...               1   \n",
+        "23            ['a', 'i', 'h', 'n', 'r', 'd', 'l', 'w']               8   \n",
+        "24   ['i', 's', 'l', 'u', 'm', 'w', 'c', 'y', 'f', ...               9   \n",
+        "25   ['t', 'a', 'o', 'h', 'd', 'l', 'm', 'w', 'y', ...              10   \n",
+        "26            ['e', 't', 'o', 'h', 'r', 'd', 'l', 'u']               6   \n",
+        "27       ['t', 'a', 'o', 'h', 'd', 'm', 'w', 'c', 'f']              11   \n",
+        "28   ['a', 'h', 'r', 'd', 'l', 'm', 'w', 'y', 'f', ...              11   \n",
+        "29   ['e', 'o', 'h', 'n', 'r', 'd', 'u', 'w', 'c', ...               7   \n",
+        "..                                                 ...             ...   \n",
+        "970  ['e', 'a', 'h', 'n', 's', 'r', 'd', 'l', 'u', ...               3   \n",
+        "971  ['o', 'h', 'd', 'l', 'u', 'm', 'w', 'c', 'y', ...               9   \n",
+        "972  ['t', 'o', 'h', 'n', 's', 'd', 'l', 'u', 'w', ...               5   \n",
+        "973                     ['t', 's', 'r', 'd', 'u', 'w']              11   \n",
+        "974                               ['o', 'r', 'd', 'l']              11   \n",
+        "975  ['t', 'o', 'i', 'h', 'n', 's', 'l', 'u', 'm', ...               6   \n",
+        "976  ['t', 'o', 'i', 'h', 'n', 'r', 'd', 'u', 'm', ...               4   \n",
+        "977  ['o', 'n', 's', 'r', 'd', 'u', 'm', 'w', 'f', ...              13   \n",
+        "978  ['e', 'o', 'h', 's', 'r', 'd', 'l', 'u', 'm', ...               4   \n",
+        "979      ['e', 'a', 'i', 'h', 'n', 's', 'd', 'l', 'u']               8   \n",
+        "980  ['t', 'a', 'o', 'h', 'n', 's', 'd', 'u', 'm', ...               5   \n",
+        "981  ['e', 't', 'a', 'o', 'h', 's', 'r', 'l', 'm', ...               5   \n",
+        "982  ['t', 'a', 'o', 'h', 'r', 'd', 'l', 'u', 'w', ...               8   \n",
+        "983  ['a', 'o', 'i', 'h', 'n', 'd', 'l', 'u', 'm', ...               6   \n",
+        "984                     ['t', 'o', 'h', 's', 'l', 'u']              11   \n",
+        "985  ['e', 't', 'a', 'o', 'h', 's', 'r', 'l', 'u', ...               4   \n",
+        "986  ['e', 't', 'i', 'h', 's', 'r', 'l', 'u', 'm', ...               7   \n",
+        "987  ['t', 'o', 'i', 'h', 'n', 'd', 'l', 'u', 'w', ...               8   \n",
+        "988                          ['t', 'o', 'i', 'h', 'r']               7   \n",
+        "989      ['a', 'o', 'n', 's', 'r', 'd', 'l', 'u', 'm']               5   \n",
+        "990                          ['t', 'o', 'i', 'h', 's']               5   \n",
+        "991                     ['t', 'o', 'i', 'h', 'n', 'd']               7   \n",
+        "992  ['a', 'o', 'h', 'n', 'r', 'd', 'l', 'm', 'w', ...               7   \n",
+        "993                          ['o', 'i', 'h', 'r', 'd']              10   \n",
+        "994                     ['h', 'd', 'l', 'u', 'm', 'w']              10   \n",
+        "995  ['e', 't', 'o', 'h', 'n', 'd', 'l', 'u', 'm', ...               5   \n",
+        "996  ['t', 'o', 'i', 'h', 'n', 's', 'd', 'l', 'u', ...               3   \n",
+        "997                          ['e', 'a', 'i', 'h', 'n']               5   \n",
+        "998                ['o', 'h', 'l', 'u', 'm', 'w', 'c']              10   \n",
+        "999  ['o', 'h', 's', 'r', 'm', 'w', 'c', 'y', 'f', ...               9   \n",
+        "\n",
+        "     lives remaining game won  \n",
+        "0                  2     True  \n",
+        "1                  0    False  \n",
+        "2                  0    False  \n",
+        "3                  0    False  \n",
+        "4                  0    False  \n",
+        "5                  0    False  \n",
+        "6                  0    False  \n",
+        "7                  2     True  \n",
+        "8                  5     True  \n",
+        "9                  5     True  \n",
+        "10                 0    False  \n",
+        "11                 0    False  \n",
+        "12                 4     True  \n",
+        "13                 0    False  \n",
+        "14                 1     True  \n",
+        "15                 0    False  \n",
+        "16                 0    False  \n",
+        "17                 3     True  \n",
+        "18                 7     True  \n",
+        "19                 0    False  \n",
+        "20                 0    False  \n",
+        "21                 0    False  \n",
+        "22                 0    False  \n",
+        "23                 2     True  \n",
+        "24                 0    False  \n",
+        "25                 0    False  \n",
+        "26                 2     True  \n",
+        "27                 1     True  \n",
+        "28                 0    False  \n",
+        "29                 0    False  \n",
+        "..               ...      ...  \n",
+        "970                0    False  \n",
+        "971                0    False  \n",
+        "972                0    False  \n",
+        "973                4     True  \n",
+        "974                6     True  \n",
+        "975                0    False  \n",
+        "976                0    False  \n",
+        "977                0    False  \n",
+        "978                0    False  \n",
+        "979                1     True  \n",
+        "980                0    False  \n",
+        "981                0    False  \n",
+        "982                0    False  \n",
+        "983                0    False  \n",
+        "984                4     True  \n",
+        "985                0    False  \n",
+        "986                0    False  \n",
+        "987                0    False  \n",
+        "988                5     True  \n",
+        "989                1     True  \n",
+        "990                5     True  \n",
+        "991                4     True  \n",
+        "992                0    False  \n",
+        "993                5     True  \n",
+        "994                4     True  \n",
+        "995                0    False  \n",
+        "996                0    False  \n",
+        "997                5     True  \n",
+        "998                3     True  \n",
+        "999                0    False  \n",
+        "\n",
+        "[1000 rows x 6 columns]"
+       ]
+      }
+     ],
+     "prompt_number": 8
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "len(fixed_order['discovered'][0].split(','))"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 9,
+       "text": [
+        "10"
+       ]
+      }
+     ],
+     "prompt_number": 9
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "fixed_order['word length'] = fixed_order.apply(lambda r: len(r['target']), axis=1)\n",
+      "fixed_order"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "html": [
+        "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
+        "<table border=\"1\" class=\"dataframe\">\n",
+        "  <thead>\n",
+        "    <tr style=\"text-align: right;\">\n",
+        "      <th></th>\n",
+        "      <th>target</th>\n",
+        "      <th>discovered</th>\n",
+        "      <th>wrong letters</th>\n",
+        "      <th>number of hits</th>\n",
+        "      <th>lives remaining</th>\n",
+        "      <th>game won</th>\n",
+        "      <th>word length</th>\n",
+        "    </tr>\n",
+        "  </thead>\n",
+        "  <tbody>\n",
+        "    <tr>\n",
+        "      <th>0  </th>\n",
+        "      <td>     mouldering</td>\n",
+        "      <td> ['m', 'o', 'u', 'l', 'd', 'e', 'r', 'i', 'n', ...</td>\n",
+        "      <td>          ['t', 'a', 'h', 's', 'w', 'c', 'y', 'f']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 2</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>1  </th>\n",
+        "      <td>         deject</td>\n",
+        "      <td>                    ['d', 'e', '_', 'e', '_', 't']</td>\n",
+        "      <td> ['a', 'o', 'i', 'h', 'n', 's', 'r', 'l', 'u', ...</td>\n",
+        "      <td>  4</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>2  </th>\n",
+        "      <td>      lipsticks</td>\n",
+        "      <td>     ['l', 'i', '_', 's', 't', 'i', '_', '_', 's']</td>\n",
+        "      <td> ['e', 'a', 'o', 'h', 'n', 'r', 'd', 'u', 'm', ...</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  9</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>3  </th>\n",
+        "      <td>     disparaged</td>\n",
+        "      <td> ['d', 'i', 's', '_', 'a', 'r', 'a', '_', 'e', ...</td>\n",
+        "      <td> ['t', 'o', 'h', 'n', 'l', 'u', 'm', 'w', 'c', ...</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>4  </th>\n",
+        "      <td>         legion</td>\n",
+        "      <td>                    ['l', 'e', '_', 'i', 'o', 'n']</td>\n",
+        "      <td> ['t', 'a', 'h', 's', 'r', 'd', 'u', 'm', 'w', ...</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>5  </th>\n",
+        "      <td>    fabricating</td>\n",
+        "      <td> ['_', 'a', '_', 'r', 'i', 'c', 'a', 't', 'i', ...</td>\n",
+        "      <td> ['e', 'o', 'h', 's', 'd', 'l', 'u', 'm', 'w', ...</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td> 11</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>6  </th>\n",
+        "      <td>        nicking</td>\n",
+        "      <td>               ['n', 'i', '_', '_', 'i', 'n', '_']</td>\n",
+        "      <td> ['e', 't', 'a', 'o', 'h', 's', 'r', 'd', 'l', ...</td>\n",
+        "      <td>  4</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>7  </th>\n",
+        "      <td>       actinium</td>\n",
+        "      <td>          ['a', 'c', 't', 'i', 'n', 'i', 'u', 'm']</td>\n",
+        "      <td>          ['e', 'o', 'h', 's', 'r', 'd', 'l', 'w']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 2</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>8  </th>\n",
+        "      <td>        sedates</td>\n",
+        "      <td>               ['s', 'e', 'd', 'a', 't', 'e', 's']</td>\n",
+        "      <td>                         ['o', 'i', 'h', 'n', 'r']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> 5</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>9  </th>\n",
+        "      <td>    modernistic</td>\n",
+        "      <td> ['m', 'o', 'd', 'e', 'r', 'n', 'i', 's', 't', ...</td>\n",
+        "      <td>                         ['a', 'h', 'l', 'u', 'w']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td> 5</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 11</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>10 </th>\n",
+        "      <td>        grouchy</td>\n",
+        "      <td>               ['_', 'r', 'o', 'u', '_', 'h', '_']</td>\n",
+        "      <td> ['e', 't', 'a', 'i', 'n', 's', 'd', 'l', 'm', ...</td>\n",
+        "      <td>  4</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>11 </th>\n",
+        "      <td>           goop</td>\n",
+        "      <td>                              ['_', 'o', 'o', '_']</td>\n",
+        "      <td> ['e', 't', 'a', 'i', 'h', 'n', 's', 'r', 'd', ...</td>\n",
+        "      <td>  2</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  4</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>12 </th>\n",
+        "      <td>       theorems</td>\n",
+        "      <td>          ['t', 'h', 'e', 'o', 'r', 'e', 'm', 's']</td>\n",
+        "      <td>                    ['a', 'i', 'n', 'd', 'l', 'u']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 4</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>13 </th>\n",
+        "      <td>     panickiest</td>\n",
+        "      <td> ['_', 'a', 'n', 'i', 'c', '_', 'i', 'e', 's', ...</td>\n",
+        "      <td> ['o', 'h', 'r', 'd', 'l', 'u', 'm', 'w', 'y', ...</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>14 </th>\n",
+        "      <td>     rightfully</td>\n",
+        "      <td> ['r', 'i', 'g', 'h', 't', 'f', 'u', 'l', 'l', ...</td>\n",
+        "      <td>     ['e', 'a', 'o', 'n', 's', 'd', 'm', 'w', 'c']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 1</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>15 </th>\n",
+        "      <td>       esquires</td>\n",
+        "      <td>          ['e', 's', '_', 'u', 'i', 'r', 'e', 's']</td>\n",
+        "      <td> ['t', 'a', 'o', 'h', 'n', 'd', 'l', 'm', 'w', ...</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>16 </th>\n",
+        "      <td>         violet</td>\n",
+        "      <td>                    ['_', 'i', 'o', 'l', 'e', 't']</td>\n",
+        "      <td> ['a', 'h', 'n', 's', 'r', 'd', 'u', 'm', 'w', ...</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>17 </th>\n",
+        "      <td> dermatologists</td>\n",
+        "      <td> ['d', 'e', 'r', 'm', 'a', 't', 'o', 'l', 'o', ...</td>\n",
+        "      <td>               ['h', 'n', 'u', 'w', 'c', 'y', 'f']</td>\n",
+        "      <td> 14</td>\n",
+        "      <td> 3</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 14</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>18 </th>\n",
+        "      <td>          inane</td>\n",
+        "      <td>                         ['i', 'n', 'a', 'n', 'e']</td>\n",
+        "      <td>                                   ['t', 'o', 'h']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 7</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>19 </th>\n",
+        "      <td>        bonkers</td>\n",
+        "      <td>               ['_', 'o', 'n', '_', 'e', 'r', 's']</td>\n",
+        "      <td> ['t', 'a', 'i', 'h', 'd', 'l', 'u', 'm', 'w', ...</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>20 </th>\n",
+        "      <td>    reassigning</td>\n",
+        "      <td> ['r', 'e', 'a', 's', 's', 'i', '_', 'n', 'i', ...</td>\n",
+        "      <td> ['t', 'o', 'h', 'd', 'l', 'u', 'm', 'w', 'c', ...</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td> 11</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>21 </th>\n",
+        "      <td>      sweatshop</td>\n",
+        "      <td>     ['s', 'w', 'e', 'a', 't', 's', 'h', 'o', '_']</td>\n",
+        "      <td> ['i', 'n', 'r', 'd', 'l', 'u', 'm', 'c', 'y', ...</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  9</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>22 </th>\n",
+        "      <td>             ks</td>\n",
+        "      <td>                                        ['_', 's']</td>\n",
+        "      <td> ['e', 't', 'a', 'o', 'i', 'h', 'n', 'r', 'd', ...</td>\n",
+        "      <td>  1</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  2</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>23 </th>\n",
+        "      <td>       outcomes</td>\n",
+        "      <td>          ['o', 'u', 't', 'c', 'o', 'm', 'e', 's']</td>\n",
+        "      <td>          ['a', 'i', 'h', 'n', 'r', 'd', 'l', 'w']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 2</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>24 </th>\n",
+        "      <td>     parenthood</td>\n",
+        "      <td> ['_', 'a', 'r', 'e', 'n', 't', 'h', 'o', 'o', ...</td>\n",
+        "      <td> ['i', 's', 'l', 'u', 'm', 'w', 'c', 'y', 'f', ...</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>25 </th>\n",
+        "      <td>    frequencies</td>\n",
+        "      <td> ['f', 'r', 'e', '_', 'u', 'e', 'n', 'c', 'i', ...</td>\n",
+        "      <td> ['t', 'a', 'o', 'h', 'd', 'l', 'm', 'w', 'y', ...</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td> 11</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>26 </th>\n",
+        "      <td>         manias</td>\n",
+        "      <td>                    ['m', 'a', 'n', 'i', 'a', 's']</td>\n",
+        "      <td>          ['e', 't', 'o', 'h', 'r', 'd', 'l', 'u']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> 2</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>27 </th>\n",
+        "      <td>    resupplying</td>\n",
+        "      <td> ['r', 'e', 's', 'u', 'p', 'p', 'l', 'y', 'i', ...</td>\n",
+        "      <td>     ['t', 'a', 'o', 'h', 'd', 'm', 'w', 'c', 'f']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td> 1</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 11</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>28 </th>\n",
+        "      <td>   subcontinent</td>\n",
+        "      <td> ['s', 'u', '_', 'c', 'o', 'n', 't', 'i', 'n', ...</td>\n",
+        "      <td> ['a', 'h', 'r', 'd', 'l', 'm', 'w', 'y', 'f', ...</td>\n",
+        "      <td> 11</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td> 12</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>29 </th>\n",
+        "      <td>      baptismal</td>\n",
+        "      <td>     ['_', 'a', '_', 't', 'i', 's', 'm', 'a', 'l']</td>\n",
+        "      <td> ['e', 'o', 'h', 'n', 'r', 'd', 'u', 'w', 'c', ...</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  9</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>...</th>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>970</th>\n",
+        "      <td>          toxic</td>\n",
+        "      <td>                         ['t', 'o', '_', 'i', '_']</td>\n",
+        "      <td> ['e', 'a', 'h', 'n', 's', 'r', 'd', 'l', 'u', ...</td>\n",
+        "      <td>  3</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>971</th>\n",
+        "      <td>    brigantines</td>\n",
+        "      <td> ['_', 'r', 'i', '_', 'a', 'n', 't', 'i', 'n', ...</td>\n",
+        "      <td> ['o', 'h', 'd', 'l', 'u', 'm', 'w', 'c', 'y', ...</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td> 11</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>972</th>\n",
+        "      <td>        imagery</td>\n",
+        "      <td>               ['i', 'm', 'a', '_', 'e', 'r', '_']</td>\n",
+        "      <td> ['t', 'o', 'h', 'n', 's', 'd', 'l', 'u', 'w', ...</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>973</th>\n",
+        "      <td>    melancholic</td>\n",
+        "      <td> ['m', 'e', 'l', 'a', 'n', 'c', 'h', 'o', 'l', ...</td>\n",
+        "      <td>                    ['t', 's', 'r', 'd', 'u', 'w']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td> 4</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 11</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>974</th>\n",
+        "      <td>    enthusiasms</td>\n",
+        "      <td> ['e', 'n', 't', 'h', 'u', 's', 'i', 'a', 's', ...</td>\n",
+        "      <td>                              ['o', 'r', 'd', 'l']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td> 6</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 11</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>975</th>\n",
+        "      <td>        abraded</td>\n",
+        "      <td>               ['a', '_', 'r', 'a', 'd', 'e', 'd']</td>\n",
+        "      <td> ['t', 'o', 'i', 'h', 'n', 's', 'l', 'u', 'm', ...</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>976</th>\n",
+        "      <td>          lakes</td>\n",
+        "      <td>                         ['l', 'a', '_', 'e', 's']</td>\n",
+        "      <td> ['t', 'o', 'i', 'h', 'n', 'r', 'd', 'u', 'm', ...</td>\n",
+        "      <td>  4</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>977</th>\n",
+        "      <td> telepathically</td>\n",
+        "      <td> ['t', 'e', 'l', 'e', '_', 'a', 't', 'h', 'i', ...</td>\n",
+        "      <td> ['o', 'n', 's', 'r', 'd', 'u', 'm', 'w', 'f', ...</td>\n",
+        "      <td> 13</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td> 14</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>978</th>\n",
+        "      <td>         taking</td>\n",
+        "      <td>                    ['t', 'a', '_', 'i', 'n', '_']</td>\n",
+        "      <td> ['e', 'o', 'h', 's', 'r', 'd', 'l', 'u', 'm', ...</td>\n",
+        "      <td>  4</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>979</th>\n",
+        "      <td>       tomorrow</td>\n",
+        "      <td>          ['t', 'o', 'm', 'o', 'r', 'r', 'o', 'w']</td>\n",
+        "      <td>     ['e', 'a', 'i', 'h', 'n', 's', 'd', 'l', 'u']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 1</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>980</th>\n",
+        "      <td>         refile</td>\n",
+        "      <td>                    ['r', 'e', '_', 'i', 'l', 'e']</td>\n",
+        "      <td> ['t', 'a', 'o', 'h', 'n', 's', 'd', 'u', 'm', ...</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>981</th>\n",
+        "      <td>         unkind</td>\n",
+        "      <td>                    ['u', 'n', '_', 'i', 'n', 'd']</td>\n",
+        "      <td> ['e', 't', 'a', 'o', 'h', 's', 'r', 'l', 'm', ...</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>982</th>\n",
+        "      <td>      specimens</td>\n",
+        "      <td>     ['s', '_', 'e', 'c', 'i', 'm', 'e', 'n', 's']</td>\n",
+        "      <td> ['t', 'a', 'o', 'h', 'r', 'd', 'l', 'u', 'w', ...</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  9</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>983</th>\n",
+        "      <td>        regrets</td>\n",
+        "      <td>               ['r', 'e', '_', 'r', 'e', 't', 's']</td>\n",
+        "      <td> ['a', 'o', 'i', 'h', 'n', 'd', 'l', 'u', 'm', ...</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>984</th>\n",
+        "      <td>    remaindered</td>\n",
+        "      <td> ['r', 'e', 'm', 'a', 'i', 'n', 'd', 'e', 'r', ...</td>\n",
+        "      <td>                    ['t', 'o', 'h', 's', 'l', 'u']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td> 4</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 11</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>985</th>\n",
+        "      <td>        dignify</td>\n",
+        "      <td>               ['d', 'i', '_', 'n', 'i', '_', '_']</td>\n",
+        "      <td> ['e', 't', 'a', 'o', 'h', 's', 'r', 'l', 'u', ...</td>\n",
+        "      <td>  4</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>986</th>\n",
+        "      <td>      bandwagon</td>\n",
+        "      <td>     ['_', 'a', 'n', 'd', 'w', 'a', '_', 'o', 'n']</td>\n",
+        "      <td> ['e', 't', 'i', 'h', 's', 'r', 'l', 'u', 'm', ...</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  9</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>987</th>\n",
+        "      <td>     pacemakers</td>\n",
+        "      <td> ['_', 'a', 'c', 'e', 'm', 'a', '_', 'e', 'r', ...</td>\n",
+        "      <td> ['t', 'o', 'i', 'h', 'n', 'd', 'l', 'u', 'w', ...</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>988</th>\n",
+        "      <td>        dandles</td>\n",
+        "      <td>               ['d', 'a', 'n', 'd', 'l', 'e', 's']</td>\n",
+        "      <td>                         ['t', 'o', 'i', 'h', 'r']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> 5</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>989</th>\n",
+        "      <td>          white</td>\n",
+        "      <td>                         ['w', 'h', 'i', 't', 'e']</td>\n",
+        "      <td>     ['a', 'o', 'n', 's', 'r', 'd', 'l', 'u', 'm']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 1</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>990</th>\n",
+        "      <td>          arena</td>\n",
+        "      <td>                         ['a', 'r', 'e', 'n', 'a']</td>\n",
+        "      <td>                         ['t', 'o', 'i', 'h', 's']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 5</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>991</th>\n",
+        "      <td>        surreal</td>\n",
+        "      <td>               ['s', 'u', 'r', 'r', 'e', 'a', 'l']</td>\n",
+        "      <td>                    ['t', 'o', 'i', 'h', 'n', 'd']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> 4</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>992</th>\n",
+        "      <td>       gutsiest</td>\n",
+        "      <td>          ['_', 'u', 't', 's', 'i', 'e', 's', 't']</td>\n",
+        "      <td> ['a', 'o', 'h', 'n', 'r', 'd', 'l', 'm', 'w', ...</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>993</th>\n",
+        "      <td>     annulments</td>\n",
+        "      <td> ['a', 'n', 'n', 'u', 'l', 'm', 'e', 'n', 't', ...</td>\n",
+        "      <td>                         ['o', 'i', 'h', 'r', 'd']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 5</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>994</th>\n",
+        "      <td>     accretions</td>\n",
+        "      <td> ['a', 'c', 'c', 'r', 'e', 't', 'i', 'o', 'n', ...</td>\n",
+        "      <td>                    ['h', 'd', 'l', 'u', 'm', 'w']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 4</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>995</th>\n",
+        "      <td>         safari</td>\n",
+        "      <td>                    ['s', 'a', '_', 'a', 'r', 'i']</td>\n",
+        "      <td> ['e', 't', 'o', 'h', 'n', 'd', 'l', 'u', 'm', ...</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>996</th>\n",
+        "      <td>          recap</td>\n",
+        "      <td>                         ['r', 'e', '_', 'a', '_']</td>\n",
+        "      <td> ['t', 'o', 'i', 'h', 'n', 's', 'd', 'l', 'u', ...</td>\n",
+        "      <td>  3</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>997</th>\n",
+        "      <td>          torts</td>\n",
+        "      <td>                         ['t', 'o', 'r', 't', 's']</td>\n",
+        "      <td>                         ['e', 'a', 'i', 'h', 'n']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 5</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>998</th>\n",
+        "      <td>     tyrannised</td>\n",
+        "      <td> ['t', 'y', 'r', 'a', 'n', 'n', 'i', 's', 'e', ...</td>\n",
+        "      <td>               ['o', 'h', 'l', 'u', 'm', 'w', 'c']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 3</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>999</th>\n",
+        "      <td>    indubitable</td>\n",
+        "      <td> ['i', 'n', 'd', 'u', '_', 'i', 't', 'a', '_', ...</td>\n",
+        "      <td> ['o', 'h', 's', 'r', 'm', 'w', 'c', 'y', 'f', ...</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> 0</td>\n",
+        "      <td> False</td>\n",
+        "      <td> 11</td>\n",
+        "    </tr>\n",
+        "  </tbody>\n",
+        "</table>\n",
+        "<p>1000 rows \u00d7 7 columns</p>\n",
+        "</div>"
+       ],
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 10,
+       "text": [
+        "             target                                         discovered  \\\n",
+        "0        mouldering  ['m', 'o', 'u', 'l', 'd', 'e', 'r', 'i', 'n', ...   \n",
+        "1            deject                     ['d', 'e', '_', 'e', '_', 't']   \n",
+        "2         lipsticks      ['l', 'i', '_', 's', 't', 'i', '_', '_', 's']   \n",
+        "3        disparaged  ['d', 'i', 's', '_', 'a', 'r', 'a', '_', 'e', ...   \n",
+        "4            legion                     ['l', 'e', '_', 'i', 'o', 'n']   \n",
+        "5       fabricating  ['_', 'a', '_', 'r', 'i', 'c', 'a', 't', 'i', ...   \n",
+        "6           nicking                ['n', 'i', '_', '_', 'i', 'n', '_']   \n",
+        "7          actinium           ['a', 'c', 't', 'i', 'n', 'i', 'u', 'm']   \n",
+        "8           sedates                ['s', 'e', 'd', 'a', 't', 'e', 's']   \n",
+        "9       modernistic  ['m', 'o', 'd', 'e', 'r', 'n', 'i', 's', 't', ...   \n",
+        "10          grouchy                ['_', 'r', 'o', 'u', '_', 'h', '_']   \n",
+        "11             goop                               ['_', 'o', 'o', '_']   \n",
+        "12         theorems           ['t', 'h', 'e', 'o', 'r', 'e', 'm', 's']   \n",
+        "13       panickiest  ['_', 'a', 'n', 'i', 'c', '_', 'i', 'e', 's', ...   \n",
+        "14       rightfully  ['r', 'i', 'g', 'h', 't', 'f', 'u', 'l', 'l', ...   \n",
+        "15         esquires           ['e', 's', '_', 'u', 'i', 'r', 'e', 's']   \n",
+        "16           violet                     ['_', 'i', 'o', 'l', 'e', 't']   \n",
+        "17   dermatologists  ['d', 'e', 'r', 'm', 'a', 't', 'o', 'l', 'o', ...   \n",
+        "18            inane                          ['i', 'n', 'a', 'n', 'e']   \n",
+        "19          bonkers                ['_', 'o', 'n', '_', 'e', 'r', 's']   \n",
+        "20      reassigning  ['r', 'e', 'a', 's', 's', 'i', '_', 'n', 'i', ...   \n",
+        "21        sweatshop      ['s', 'w', 'e', 'a', 't', 's', 'h', 'o', '_']   \n",
+        "22               ks                                         ['_', 's']   \n",
+        "23         outcomes           ['o', 'u', 't', 'c', 'o', 'm', 'e', 's']   \n",
+        "24       parenthood  ['_', 'a', 'r', 'e', 'n', 't', 'h', 'o', 'o', ...   \n",
+        "25      frequencies  ['f', 'r', 'e', '_', 'u', 'e', 'n', 'c', 'i', ...   \n",
+        "26           manias                     ['m', 'a', 'n', 'i', 'a', 's']   \n",
+        "27      resupplying  ['r', 'e', 's', 'u', 'p', 'p', 'l', 'y', 'i', ...   \n",
+        "28     subcontinent  ['s', 'u', '_', 'c', 'o', 'n', 't', 'i', 'n', ...   \n",
+        "29        baptismal      ['_', 'a', '_', 't', 'i', 's', 'm', 'a', 'l']   \n",
+        "..              ...                                                ...   \n",
+        "970           toxic                          ['t', 'o', '_', 'i', '_']   \n",
+        "971     brigantines  ['_', 'r', 'i', '_', 'a', 'n', 't', 'i', 'n', ...   \n",
+        "972         imagery                ['i', 'm', 'a', '_', 'e', 'r', '_']   \n",
+        "973     melancholic  ['m', 'e', 'l', 'a', 'n', 'c', 'h', 'o', 'l', ...   \n",
+        "974     enthusiasms  ['e', 'n', 't', 'h', 'u', 's', 'i', 'a', 's', ...   \n",
+        "975         abraded                ['a', '_', 'r', 'a', 'd', 'e', 'd']   \n",
+        "976           lakes                          ['l', 'a', '_', 'e', 's']   \n",
+        "977  telepathically  ['t', 'e', 'l', 'e', '_', 'a', 't', 'h', 'i', ...   \n",
+        "978          taking                     ['t', 'a', '_', 'i', 'n', '_']   \n",
+        "979        tomorrow           ['t', 'o', 'm', 'o', 'r', 'r', 'o', 'w']   \n",
+        "980          refile                     ['r', 'e', '_', 'i', 'l', 'e']   \n",
+        "981          unkind                     ['u', 'n', '_', 'i', 'n', 'd']   \n",
+        "982       specimens      ['s', '_', 'e', 'c', 'i', 'm', 'e', 'n', 's']   \n",
+        "983         regrets                ['r', 'e', '_', 'r', 'e', 't', 's']   \n",
+        "984     remaindered  ['r', 'e', 'm', 'a', 'i', 'n', 'd', 'e', 'r', ...   \n",
+        "985         dignify                ['d', 'i', '_', 'n', 'i', '_', '_']   \n",
+        "986       bandwagon      ['_', 'a', 'n', 'd', 'w', 'a', '_', 'o', 'n']   \n",
+        "987      pacemakers  ['_', 'a', 'c', 'e', 'm', 'a', '_', 'e', 'r', ...   \n",
+        "988         dandles                ['d', 'a', 'n', 'd', 'l', 'e', 's']   \n",
+        "989           white                          ['w', 'h', 'i', 't', 'e']   \n",
+        "990           arena                          ['a', 'r', 'e', 'n', 'a']   \n",
+        "991         surreal                ['s', 'u', 'r', 'r', 'e', 'a', 'l']   \n",
+        "992        gutsiest           ['_', 'u', 't', 's', 'i', 'e', 's', 't']   \n",
+        "993      annulments  ['a', 'n', 'n', 'u', 'l', 'm', 'e', 'n', 't', ...   \n",
+        "994      accretions  ['a', 'c', 'c', 'r', 'e', 't', 'i', 'o', 'n', ...   \n",
+        "995          safari                     ['s', 'a', '_', 'a', 'r', 'i']   \n",
+        "996           recap                          ['r', 'e', '_', 'a', '_']   \n",
+        "997           torts                          ['t', 'o', 'r', 't', 's']   \n",
+        "998      tyrannised  ['t', 'y', 'r', 'a', 'n', 'n', 'i', 's', 'e', ...   \n",
+        "999     indubitable  ['i', 'n', 'd', 'u', '_', 'i', 't', 'a', '_', ...   \n",
+        "\n",
+        "                                         wrong letters  number of hits  \\\n",
+        "0             ['t', 'a', 'h', 's', 'w', 'c', 'y', 'f']              10   \n",
+        "1    ['a', 'o', 'i', 'h', 'n', 's', 'r', 'l', 'u', ...               4   \n",
+        "2    ['e', 'a', 'o', 'h', 'n', 'r', 'd', 'u', 'm', ...               6   \n",
+        "3    ['t', 'o', 'h', 'n', 'l', 'u', 'm', 'w', 'c', ...               8   \n",
+        "4    ['t', 'a', 'h', 's', 'r', 'd', 'u', 'm', 'w', ...               5   \n",
+        "5    ['e', 'o', 'h', 's', 'd', 'l', 'u', 'm', 'w', ...               8   \n",
+        "6    ['e', 't', 'a', 'o', 'h', 's', 'r', 'd', 'l', ...               4   \n",
+        "7             ['e', 'o', 'h', 's', 'r', 'd', 'l', 'w']               8   \n",
+        "8                            ['o', 'i', 'h', 'n', 'r']               7   \n",
+        "9                            ['a', 'h', 'l', 'u', 'w']              11   \n",
+        "10   ['e', 't', 'a', 'i', 'n', 's', 'd', 'l', 'm', ...               4   \n",
+        "11   ['e', 't', 'a', 'i', 'h', 'n', 's', 'r', 'd', ...               2   \n",
+        "12                      ['a', 'i', 'n', 'd', 'l', 'u']               8   \n",
+        "13   ['o', 'h', 'r', 'd', 'l', 'u', 'm', 'w', 'y', ...               8   \n",
+        "14       ['e', 'a', 'o', 'n', 's', 'd', 'm', 'w', 'c']              10   \n",
+        "15   ['t', 'a', 'o', 'h', 'n', 'd', 'l', 'm', 'w', ...               7   \n",
+        "16   ['a', 'h', 'n', 's', 'r', 'd', 'u', 'm', 'w', ...               5   \n",
+        "17                 ['h', 'n', 'u', 'w', 'c', 'y', 'f']              14   \n",
+        "18                                     ['t', 'o', 'h']               5   \n",
+        "19   ['t', 'a', 'i', 'h', 'd', 'l', 'u', 'm', 'w', ...               5   \n",
+        "20   ['t', 'o', 'h', 'd', 'l', 'u', 'm', 'w', 'c', ...               9   \n",
+        "21   ['i', 'n', 'r', 'd', 'l', 'u', 'm', 'c', 'y', ...               8   \n",
+        "22   ['e', 't', 'a', 'o', 'i', 'h', 'n', 'r', 'd', ...               1   \n",
+        "23            ['a', 'i', 'h', 'n', 'r', 'd', 'l', 'w']               8   \n",
+        "24   ['i', 's', 'l', 'u', 'm', 'w', 'c', 'y', 'f', ...               9   \n",
+        "25   ['t', 'a', 'o', 'h', 'd', 'l', 'm', 'w', 'y', ...              10   \n",
+        "26            ['e', 't', 'o', 'h', 'r', 'd', 'l', 'u']               6   \n",
+        "27       ['t', 'a', 'o', 'h', 'd', 'm', 'w', 'c', 'f']              11   \n",
+        "28   ['a', 'h', 'r', 'd', 'l', 'm', 'w', 'y', 'f', ...              11   \n",
+        "29   ['e', 'o', 'h', 'n', 'r', 'd', 'u', 'w', 'c', ...               7   \n",
+        "..                                                 ...             ...   \n",
+        "970  ['e', 'a', 'h', 'n', 's', 'r', 'd', 'l', 'u', ...               3   \n",
+        "971  ['o', 'h', 'd', 'l', 'u', 'm', 'w', 'c', 'y', ...               9   \n",
+        "972  ['t', 'o', 'h', 'n', 's', 'd', 'l', 'u', 'w', ...               5   \n",
+        "973                     ['t', 's', 'r', 'd', 'u', 'w']              11   \n",
+        "974                               ['o', 'r', 'd', 'l']              11   \n",
+        "975  ['t', 'o', 'i', 'h', 'n', 's', 'l', 'u', 'm', ...               6   \n",
+        "976  ['t', 'o', 'i', 'h', 'n', 'r', 'd', 'u', 'm', ...               4   \n",
+        "977  ['o', 'n', 's', 'r', 'd', 'u', 'm', 'w', 'f', ...              13   \n",
+        "978  ['e', 'o', 'h', 's', 'r', 'd', 'l', 'u', 'm', ...               4   \n",
+        "979      ['e', 'a', 'i', 'h', 'n', 's', 'd', 'l', 'u']               8   \n",
+        "980  ['t', 'a', 'o', 'h', 'n', 's', 'd', 'u', 'm', ...               5   \n",
+        "981  ['e', 't', 'a', 'o', 'h', 's', 'r', 'l', 'm', ...               5   \n",
+        "982  ['t', 'a', 'o', 'h', 'r', 'd', 'l', 'u', 'w', ...               8   \n",
+        "983  ['a', 'o', 'i', 'h', 'n', 'd', 'l', 'u', 'm', ...               6   \n",
+        "984                     ['t', 'o', 'h', 's', 'l', 'u']              11   \n",
+        "985  ['e', 't', 'a', 'o', 'h', 's', 'r', 'l', 'u', ...               4   \n",
+        "986  ['e', 't', 'i', 'h', 's', 'r', 'l', 'u', 'm', ...               7   \n",
+        "987  ['t', 'o', 'i', 'h', 'n', 'd', 'l', 'u', 'w', ...               8   \n",
+        "988                          ['t', 'o', 'i', 'h', 'r']               7   \n",
+        "989      ['a', 'o', 'n', 's', 'r', 'd', 'l', 'u', 'm']               5   \n",
+        "990                          ['t', 'o', 'i', 'h', 's']               5   \n",
+        "991                     ['t', 'o', 'i', 'h', 'n', 'd']               7   \n",
+        "992  ['a', 'o', 'h', 'n', 'r', 'd', 'l', 'm', 'w', ...               7   \n",
+        "993                          ['o', 'i', 'h', 'r', 'd']              10   \n",
+        "994                     ['h', 'd', 'l', 'u', 'm', 'w']              10   \n",
+        "995  ['e', 't', 'o', 'h', 'n', 'd', 'l', 'u', 'm', ...               5   \n",
+        "996  ['t', 'o', 'i', 'h', 'n', 's', 'd', 'l', 'u', ...               3   \n",
+        "997                          ['e', 'a', 'i', 'h', 'n']               5   \n",
+        "998                ['o', 'h', 'l', 'u', 'm', 'w', 'c']              10   \n",
+        "999  ['o', 'h', 's', 'r', 'm', 'w', 'c', 'y', 'f', ...               9   \n",
+        "\n",
+        "     lives remaining game won  word length  \n",
+        "0                  2     True           10  \n",
+        "1                  0    False            6  \n",
+        "2                  0    False            9  \n",
+        "3                  0    False           10  \n",
+        "4                  0    False            6  \n",
+        "5                  0    False           11  \n",
+        "6                  0    False            7  \n",
+        "7                  2     True            8  \n",
+        "8                  5     True            7  \n",
+        "9                  5     True           11  \n",
+        "10                 0    False            7  \n",
+        "11                 0    False            4  \n",
+        "12                 4     True            8  \n",
+        "13                 0    False           10  \n",
+        "14                 1     True           10  \n",
+        "15                 0    False            8  \n",
+        "16                 0    False            6  \n",
+        "17                 3     True           14  \n",
+        "18                 7     True            5  \n",
+        "19                 0    False            7  \n",
+        "20                 0    False           11  \n",
+        "21                 0    False            9  \n",
+        "22                 0    False            2  \n",
+        "23                 2     True            8  \n",
+        "24                 0    False           10  \n",
+        "25                 0    False           11  \n",
+        "26                 2     True            6  \n",
+        "27                 1     True           11  \n",
+        "28                 0    False           12  \n",
+        "29                 0    False            9  \n",
+        "..               ...      ...          ...  \n",
+        "970                0    False            5  \n",
+        "971                0    False           11  \n",
+        "972                0    False            7  \n",
+        "973                4     True           11  \n",
+        "974                6     True           11  \n",
+        "975                0    False            7  \n",
+        "976                0    False            5  \n",
+        "977                0    False           14  \n",
+        "978                0    False            6  \n",
+        "979                1     True            8  \n",
+        "980                0    False            6  \n",
+        "981                0    False            6  \n",
+        "982                0    False            9  \n",
+        "983                0    False            7  \n",
+        "984                4     True           11  \n",
+        "985                0    False            7  \n",
+        "986                0    False            9  \n",
+        "987                0    False           10  \n",
+        "988                5     True            7  \n",
+        "989                1     True            5  \n",
+        "990                5     True            5  \n",
+        "991                4     True            7  \n",
+        "992                0    False            8  \n",
+        "993                5     True           10  \n",
+        "994                4     True           10  \n",
+        "995                0    False            6  \n",
+        "996                0    False            5  \n",
+        "997                5     True            5  \n",
+        "998                3     True           10  \n",
+        "999                0    False           11  \n",
+        "\n",
+        "[1000 rows x 7 columns]"
+       ]
+      }
+     ],
+     "prompt_number": 10
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "fixed_order['lives remaining'].hist()"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 11,
+       "text": [
+        "<matplotlib.axes.AxesSubplot at 0x7f15a58c0780>"
+       ]
+      },
+      {
+       "metadata": {},
+       "output_type": "display_data",
+       "png": "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\ntnpo7g5vAAAAAElFTkSuQmCC\n",
+       "text": [
+        "<matplotlib.figure.Figure at 0x7f15a58e0fd0>"
+       ]
+      }
+     ],
+     "prompt_number": 11
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "fixed_order.groupby('lives remaining').size()"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 12,
+       "text": [
+        "lives remaining\n",
+        "0                  667\n",
+        "1                   86\n",
+        "2                   60\n",
+        "3                   59\n",
+        "4                   50\n",
+        "5                   35\n",
+        "6                   22\n",
+        "7                   15\n",
+        "8                    6\n",
+        "dtype: int64"
+       ]
+      }
+     ],
+     "prompt_number": 12
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "adaptive_pattern = pd.read_csv('adaptive_pattern.csv')\n",
+      "adaptive_pattern"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "html": [
+        "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
+        "<table border=\"1\" class=\"dataframe\">\n",
+        "  <thead>\n",
+        "    <tr style=\"text-align: right;\">\n",
+        "      <th></th>\n",
+        "      <th>target</th>\n",
+        "      <th>discovered</th>\n",
+        "      <th>wrong letters</th>\n",
+        "      <th>number of hits</th>\n",
+        "      <th>lives remaining</th>\n",
+        "      <th>game won</th>\n",
+        "    </tr>\n",
+        "  </thead>\n",
+        "  <tbody>\n",
+        "    <tr>\n",
+        "      <th>0  </th>\n",
+        "      <td>      toothsome</td>\n",
+        "      <td>     ['t', 'o', 'o', 't', 'h', 's', 'o', 'm', 'e']</td>\n",
+        "      <td>                     ['a', 'i']</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>1  </th>\n",
+        "      <td>     analgesics</td>\n",
+        "      <td> ['a', 'n', 'a', 'l', 'g', 'e', 's', 'i', 'c', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>2  </th>\n",
+        "      <td>     intrenched</td>\n",
+        "      <td> ['i', 'n', 't', 'r', 'e', 'n', 'c', 'h', 'e', ...</td>\n",
+        "      <td>                          ['s']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>3  </th>\n",
+        "      <td>         normal</td>\n",
+        "      <td>                    ['n', 'o', 'r', 'm', 'a', 'l']</td>\n",
+        "      <td>           ['e', 's', 'i', 'f']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>4  </th>\n",
+        "      <td>        debunks</td>\n",
+        "      <td>               ['d', 'e', 'b', 'u', 'n', 'k', 's']</td>\n",
+        "      <td>                          ['t']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>5  </th>\n",
+        "      <td>    satanically</td>\n",
+        "      <td> ['s', 'a', 't', 'a', 'n', 'i', 'c', 'a', 'l', ...</td>\n",
+        "      <td>                          ['e']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>6  </th>\n",
+        "      <td>       radicals</td>\n",
+        "      <td>          ['r', 'a', 'd', 'i', 'c', 'a', 'l', 's']</td>\n",
+        "      <td>                     ['e', 't']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>7  </th>\n",
+        "      <td>         erotic</td>\n",
+        "      <td>                    ['e', 'r', 'o', 't', 'i', 'c']</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>8  </th>\n",
+        "      <td>         double</td>\n",
+        "      <td>                    ['d', 'o', 'u', 'b', 'l', 'e']</td>\n",
+        "      <td>                ['a', 'm', 'r']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>9  </th>\n",
+        "      <td>         caviar</td>\n",
+        "      <td>                    ['c', 'a', 'v', 'i', 'a', 'r']</td>\n",
+        "      <td>           ['e', 's', 'n', 'l']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>10 </th>\n",
+        "      <td>    rigamaroles</td>\n",
+        "      <td> ['r', 'i', 'g', 'a', 'm', 'a', 'r', 'o', 'l', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 11</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>11 </th>\n",
+        "      <td>  disfranchises</td>\n",
+        "      <td> ['d', 'i', 's', 'f', 'r', 'a', 'n', 'c', 'h', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 13</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>12 </th>\n",
+        "      <td>     mushroomed</td>\n",
+        "      <td> ['m', 'u', 's', 'h', 'r', 'o', 'o', 'm', 'e', ...</td>\n",
+        "      <td>                          ['t']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>13 </th>\n",
+        "      <td>          rails</td>\n",
+        "      <td>                         ['r', 'a', 'i', 'l', 's']</td>\n",
+        "      <td> ['e', 'o', 't', 'm', 'f', 'w']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  4</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>14 </th>\n",
+        "      <td>         poised</td>\n",
+        "      <td>                    ['p', 'o', 'i', 's', 'e', 'd']</td>\n",
+        "      <td>           ['a', 'l', 't', 'k']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>15 </th>\n",
+        "      <td>    circulating</td>\n",
+        "      <td> ['c', 'i', 'r', 'c', 'u', 'l', 'a', 't', 'i', ...</td>\n",
+        "      <td>                          ['e']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>16 </th>\n",
+        "      <td>     yesteryear</td>\n",
+        "      <td> ['y', 'e', 's', 't', 'e', 'r', 'y', 'e', 'a', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>17 </th>\n",
+        "      <td>       chastest</td>\n",
+        "      <td>          ['c', 'h', 'a', 's', 't', 'e', 's', 't']</td>\n",
+        "      <td>                          ['m']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>18 </th>\n",
+        "      <td>        lenders</td>\n",
+        "      <td>               ['l', 'e', 'n', 'd', 'e', 'r', 's']</td>\n",
+        "      <td>                ['t', 'f', 'm']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>19 </th>\n",
+        "      <td>        upshots</td>\n",
+        "      <td>               ['u', 'p', 's', 'h', 'o', 't', 's']</td>\n",
+        "      <td>           ['e', 'i', 'a', 'n']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>20 </th>\n",
+        "      <td>       stridden</td>\n",
+        "      <td>          ['s', 't', 'r', 'i', 'd', 'd', 'e', 'n']</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>21 </th>\n",
+        "      <td>    trespassing</td>\n",
+        "      <td> ['t', 'r', 'e', 's', 'p', 'a', 's', 's', 'i', ...</td>\n",
+        "      <td>                          ['o']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>22 </th>\n",
+        "      <td>       muckrake</td>\n",
+        "      <td>          ['m', 'u', 'c', 'k', 'r', 'a', 'k', 'e']</td>\n",
+        "      <td>                          ['t']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>23 </th>\n",
+        "      <td>      bungalows</td>\n",
+        "      <td>     ['b', 'u', 'n', 'g', 'a', 'l', 'o', 'w', 's']</td>\n",
+        "      <td>                ['e', 'i', 't']</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>24 </th>\n",
+        "      <td>      rewinding</td>\n",
+        "      <td>     ['r', 'e', 'w', 'i', 'n', 'd', 'i', 'n', 'g']</td>\n",
+        "      <td>                          ['m']</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>25 </th>\n",
+        "      <td>   stepchildren</td>\n",
+        "      <td> ['s', 't', 'e', 'p', 'c', 'h', 'i', 'l', 'd', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 12</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>26 </th>\n",
+        "      <td>   courageously</td>\n",
+        "      <td> ['c', 'o', 'u', 'r', 'a', 'g', 'e', 'o', 'u', ...</td>\n",
+        "      <td>                          ['i']</td>\n",
+        "      <td> 12</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>27 </th>\n",
+        "      <td>   gladiatorial</td>\n",
+        "      <td> ['g', 'l', 'a', 'd', 'i', 'a', 't', 'o', 'r', ...</td>\n",
+        "      <td>                          ['e']</td>\n",
+        "      <td> 12</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>28 </th>\n",
+        "      <td>        unseals</td>\n",
+        "      <td>               ['u', 'n', 's', 'e', 'a', 'l', 's']</td>\n",
+        "      <td>                          ['t']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>29 </th>\n",
+        "      <td>      backaches</td>\n",
+        "      <td>     ['b', 'a', 'c', 'k', 'a', 'c', 'h', 'e', 's']</td>\n",
+        "      <td>                          ['i']</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>...</th>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>970</th>\n",
+        "      <td>    priestliest</td>\n",
+        "      <td> ['p', 'r', 'i', 'e', 's', 't', 'l', 'i', 'e', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 11</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>971</th>\n",
+        "      <td>      oversight</td>\n",
+        "      <td>     ['o', 'v', 'e', 'r', 's', 'i', 'g', 'h', 't']</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>972</th>\n",
+        "      <td>       nutshell</td>\n",
+        "      <td>          ['n', 'u', 't', 's', 'h', 'e', 'l', 'l']</td>\n",
+        "      <td>                          ['r']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>973</th>\n",
+        "      <td>         picker</td>\n",
+        "      <td>                    ['p', 'i', 'c', 'k', 'e', 'r']</td>\n",
+        "      <td>           ['d', 's', 't', 'g']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>974</th>\n",
+        "      <td>           prom</td>\n",
+        "      <td>                              ['p', 'r', 'o', 'm']</td>\n",
+        "      <td>                ['e', 's', 'l']</td>\n",
+        "      <td>  4</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>975</th>\n",
+        "      <td>          spoke</td>\n",
+        "      <td>                         ['s', 'p', 'o', 'k', 'e']</td>\n",
+        "      <td>           ['a', 'i', 't', 'r']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>976</th>\n",
+        "      <td>     videodiscs</td>\n",
+        "      <td> ['v', 'i', 'd', 'e', 'o', 'd', 'i', 's', 'c', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>977</th>\n",
+        "      <td>       braggart</td>\n",
+        "      <td>          ['b', 'r', 'a', 'g', 'g', 'a', 'r', 't']</td>\n",
+        "      <td>                     ['e', 'i']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>978</th>\n",
+        "      <td>       shindigs</td>\n",
+        "      <td>          ['s', 'h', 'i', 'n', 'd', 'i', 'g', 's']</td>\n",
+        "      <td>                          ['e']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>979</th>\n",
+        "      <td>   indorsements</td>\n",
+        "      <td> ['i', 'n', 'd', 'o', 'r', 's', 'e', 'm', 'e', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 12</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>980</th>\n",
+        "      <td>         audios</td>\n",
+        "      <td>                    ['a', 'u', 'd', 'i', 'o', 's']</td>\n",
+        "      <td>                          ['e']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>981</th>\n",
+        "      <td>       disrobes</td>\n",
+        "      <td>          ['d', 'i', 's', 'r', 'o', 'b', 'e', 's']</td>\n",
+        "      <td>                     ['t', 'm']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>982</th>\n",
+        "      <td>          drake</td>\n",
+        "      <td>                         ['d', 'r', 'a', 'k', 'e']</td>\n",
+        "      <td>      ['s', 'c', 't', 'g', 'p']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>983</th>\n",
+        "      <td>          penes</td>\n",
+        "      <td>                         ['p', 'e', 'n', 'e', 's']</td>\n",
+        "      <td>                          ['m']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>984</th>\n",
+        "      <td>     ecological</td>\n",
+        "      <td> ['e', 'c', 'o', 'l', 'o', 'g', 'i', 'c', 'a', ...</td>\n",
+        "      <td>                          ['s']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>985</th>\n",
+        "      <td>  consideration</td>\n",
+        "      <td> ['c', 'o', 'n', 's', 'i', 'd', 'e', 'r', 'a', ...</td>\n",
+        "      <td>                          ['f']</td>\n",
+        "      <td> 13</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>986</th>\n",
+        "      <td>       strolled</td>\n",
+        "      <td>          ['s', 't', 'r', 'o', 'l', 'l', 'e', 'd']</td>\n",
+        "      <td>                ['p', 'i', 'm']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>987</th>\n",
+        "      <td>     peacemaker</td>\n",
+        "      <td> ['p', 'e', 'a', 'c', 'e', 'm', 'a', 'k', 'e', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>988</th>\n",
+        "      <td>      chilliest</td>\n",
+        "      <td>     ['c', 'h', 'i', 'l', 'l', 'i', 'e', 's', 't']</td>\n",
+        "      <td>                          ['f']</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>989</th>\n",
+        "      <td>       neuritis</td>\n",
+        "      <td>          ['n', 'e', 'u', 'r', 'i', 't', 'i', 's']</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>990</th>\n",
+        "      <td>       quisling</td>\n",
+        "      <td>          ['q', 'u', 'i', 's', 'l', 'i', 'n', 'g']</td>\n",
+        "      <td>           ['e', 't', 'k', 'p']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>991</th>\n",
+        "      <td>    transplants</td>\n",
+        "      <td> ['t', 'r', 'a', 'n', 's', 'p', 'l', 'a', 'n', ...</td>\n",
+        "      <td>                ['e', 'i', 'o']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>992</th>\n",
+        "      <td>         bevies</td>\n",
+        "      <td>                    ['b', 'e', 'v', 'i', 'e', 's']</td>\n",
+        "      <td>                ['d', 'r', 'l']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>993</th>\n",
+        "      <td>          geeky</td>\n",
+        "      <td>                         ['g', 'e', 'e', 'k', 'y']</td>\n",
+        "      <td>           ['s', 'd', 't', 'f']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>994</th>\n",
+        "      <td> demonstrations</td>\n",
+        "      <td> ['d', 'e', 'm', 'o', 'n', 's', 't', 'r', 'a', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 14</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>995</th>\n",
+        "      <td>         dowses</td>\n",
+        "      <td>                    ['d', 'o', 'w', 's', 'e', 's']</td>\n",
+        "      <td>                     ['r', 'u']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>996</th>\n",
+        "      <td>     pummelling</td>\n",
+        "      <td> ['p', 'u', 'm', 'm', 'e', 'l', 'l', 'i', 'n', ...</td>\n",
+        "      <td>                ['s', 'r', 'o']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>997</th>\n",
+        "      <td>    earnestness</td>\n",
+        "      <td> ['e', 'a', 'r', 'n', 'e', 's', 't', 'n', 'e', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 11</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>998</th>\n",
+        "      <td> thermodynamics</td>\n",
+        "      <td> ['t', 'h', 'e', 'r', 'm', 'o', 'd', 'y', 'n', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 14</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>999</th>\n",
+        "      <td>         flurry</td>\n",
+        "      <td>                    ['f', 'l', 'u', 'r', 'r', 'y']</td>\n",
+        "      <td>      ['e', 's', 'i', 'a', 'o']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> True</td>\n",
+        "    </tr>\n",
+        "  </tbody>\n",
+        "</table>\n",
+        "<p>1000 rows \u00d7 6 columns</p>\n",
+        "</div>"
+       ],
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 18,
+       "text": [
+        "             target                                         discovered  \\\n",
+        "0         toothsome      ['t', 'o', 'o', 't', 'h', 's', 'o', 'm', 'e']   \n",
+        "1        analgesics  ['a', 'n', 'a', 'l', 'g', 'e', 's', 'i', 'c', ...   \n",
+        "2        intrenched  ['i', 'n', 't', 'r', 'e', 'n', 'c', 'h', 'e', ...   \n",
+        "3            normal                     ['n', 'o', 'r', 'm', 'a', 'l']   \n",
+        "4           debunks                ['d', 'e', 'b', 'u', 'n', 'k', 's']   \n",
+        "5       satanically  ['s', 'a', 't', 'a', 'n', 'i', 'c', 'a', 'l', ...   \n",
+        "6          radicals           ['r', 'a', 'd', 'i', 'c', 'a', 'l', 's']   \n",
+        "7            erotic                     ['e', 'r', 'o', 't', 'i', 'c']   \n",
+        "8            double                     ['d', 'o', 'u', 'b', 'l', 'e']   \n",
+        "9            caviar                     ['c', 'a', 'v', 'i', 'a', 'r']   \n",
+        "10      rigamaroles  ['r', 'i', 'g', 'a', 'm', 'a', 'r', 'o', 'l', ...   \n",
+        "11    disfranchises  ['d', 'i', 's', 'f', 'r', 'a', 'n', 'c', 'h', ...   \n",
+        "12       mushroomed  ['m', 'u', 's', 'h', 'r', 'o', 'o', 'm', 'e', ...   \n",
+        "13            rails                          ['r', 'a', 'i', 'l', 's']   \n",
+        "14           poised                     ['p', 'o', 'i', 's', 'e', 'd']   \n",
+        "15      circulating  ['c', 'i', 'r', 'c', 'u', 'l', 'a', 't', 'i', ...   \n",
+        "16       yesteryear  ['y', 'e', 's', 't', 'e', 'r', 'y', 'e', 'a', ...   \n",
+        "17         chastest           ['c', 'h', 'a', 's', 't', 'e', 's', 't']   \n",
+        "18          lenders                ['l', 'e', 'n', 'd', 'e', 'r', 's']   \n",
+        "19          upshots                ['u', 'p', 's', 'h', 'o', 't', 's']   \n",
+        "20         stridden           ['s', 't', 'r', 'i', 'd', 'd', 'e', 'n']   \n",
+        "21      trespassing  ['t', 'r', 'e', 's', 'p', 'a', 's', 's', 'i', ...   \n",
+        "22         muckrake           ['m', 'u', 'c', 'k', 'r', 'a', 'k', 'e']   \n",
+        "23        bungalows      ['b', 'u', 'n', 'g', 'a', 'l', 'o', 'w', 's']   \n",
+        "24        rewinding      ['r', 'e', 'w', 'i', 'n', 'd', 'i', 'n', 'g']   \n",
+        "25     stepchildren  ['s', 't', 'e', 'p', 'c', 'h', 'i', 'l', 'd', ...   \n",
+        "26     courageously  ['c', 'o', 'u', 'r', 'a', 'g', 'e', 'o', 'u', ...   \n",
+        "27     gladiatorial  ['g', 'l', 'a', 'd', 'i', 'a', 't', 'o', 'r', ...   \n",
+        "28          unseals                ['u', 'n', 's', 'e', 'a', 'l', 's']   \n",
+        "29        backaches      ['b', 'a', 'c', 'k', 'a', 'c', 'h', 'e', 's']   \n",
+        "..              ...                                                ...   \n",
+        "970     priestliest  ['p', 'r', 'i', 'e', 's', 't', 'l', 'i', 'e', ...   \n",
+        "971       oversight      ['o', 'v', 'e', 'r', 's', 'i', 'g', 'h', 't']   \n",
+        "972        nutshell           ['n', 'u', 't', 's', 'h', 'e', 'l', 'l']   \n",
+        "973          picker                     ['p', 'i', 'c', 'k', 'e', 'r']   \n",
+        "974            prom                               ['p', 'r', 'o', 'm']   \n",
+        "975           spoke                          ['s', 'p', 'o', 'k', 'e']   \n",
+        "976      videodiscs  ['v', 'i', 'd', 'e', 'o', 'd', 'i', 's', 'c', ...   \n",
+        "977        braggart           ['b', 'r', 'a', 'g', 'g', 'a', 'r', 't']   \n",
+        "978        shindigs           ['s', 'h', 'i', 'n', 'd', 'i', 'g', 's']   \n",
+        "979    indorsements  ['i', 'n', 'd', 'o', 'r', 's', 'e', 'm', 'e', ...   \n",
+        "980          audios                     ['a', 'u', 'd', 'i', 'o', 's']   \n",
+        "981        disrobes           ['d', 'i', 's', 'r', 'o', 'b', 'e', 's']   \n",
+        "982           drake                          ['d', 'r', 'a', 'k', 'e']   \n",
+        "983           penes                          ['p', 'e', 'n', 'e', 's']   \n",
+        "984      ecological  ['e', 'c', 'o', 'l', 'o', 'g', 'i', 'c', 'a', ...   \n",
+        "985   consideration  ['c', 'o', 'n', 's', 'i', 'd', 'e', 'r', 'a', ...   \n",
+        "986        strolled           ['s', 't', 'r', 'o', 'l', 'l', 'e', 'd']   \n",
+        "987      peacemaker  ['p', 'e', 'a', 'c', 'e', 'm', 'a', 'k', 'e', ...   \n",
+        "988       chilliest      ['c', 'h', 'i', 'l', 'l', 'i', 'e', 's', 't']   \n",
+        "989        neuritis           ['n', 'e', 'u', 'r', 'i', 't', 'i', 's']   \n",
+        "990        quisling           ['q', 'u', 'i', 's', 'l', 'i', 'n', 'g']   \n",
+        "991     transplants  ['t', 'r', 'a', 'n', 's', 'p', 'l', 'a', 'n', ...   \n",
+        "992          bevies                     ['b', 'e', 'v', 'i', 'e', 's']   \n",
+        "993           geeky                          ['g', 'e', 'e', 'k', 'y']   \n",
+        "994  demonstrations  ['d', 'e', 'm', 'o', 'n', 's', 't', 'r', 'a', ...   \n",
+        "995          dowses                     ['d', 'o', 'w', 's', 'e', 's']   \n",
+        "996      pummelling  ['p', 'u', 'm', 'm', 'e', 'l', 'l', 'i', 'n', ...   \n",
+        "997     earnestness  ['e', 'a', 'r', 'n', 'e', 's', 't', 'n', 'e', ...   \n",
+        "998  thermodynamics  ['t', 'h', 'e', 'r', 'm', 'o', 'd', 'y', 'n', ...   \n",
+        "999          flurry                     ['f', 'l', 'u', 'r', 'r', 'y']   \n",
+        "\n",
+        "                      wrong letters  number of hits  lives remaining game won  \n",
+        "0                        ['a', 'i']               9                8     True  \n",
+        "1                                []              10               10     True  \n",
+        "2                             ['s']              10                9     True  \n",
+        "3              ['e', 's', 'i', 'f']               6                6     True  \n",
+        "4                             ['t']               7                9     True  \n",
+        "5                             ['e']              11                9     True  \n",
+        "6                        ['e', 't']               8                8     True  \n",
+        "7                                []               6               10     True  \n",
+        "8                   ['a', 'm', 'r']               6                7     True  \n",
+        "9              ['e', 's', 'n', 'l']               6                6     True  \n",
+        "10                               []              11               10     True  \n",
+        "11                               []              13               10     True  \n",
+        "12                            ['t']              10                9     True  \n",
+        "13   ['e', 'o', 't', 'm', 'f', 'w']               5                4     True  \n",
+        "14             ['a', 'l', 't', 'k']               6                6     True  \n",
+        "15                            ['e']              11                9     True  \n",
+        "16                               []              10               10     True  \n",
+        "17                            ['m']               8                9     True  \n",
+        "18                  ['t', 'f', 'm']               7                7     True  \n",
+        "19             ['e', 'i', 'a', 'n']               7                6     True  \n",
+        "20                               []               8               10     True  \n",
+        "21                            ['o']              11                9     True  \n",
+        "22                            ['t']               8                9     True  \n",
+        "23                  ['e', 'i', 't']               9                7     True  \n",
+        "24                            ['m']               9                9     True  \n",
+        "25                               []              12               10     True  \n",
+        "26                            ['i']              12                9     True  \n",
+        "27                            ['e']              12                9     True  \n",
+        "28                            ['t']               7                9     True  \n",
+        "29                            ['i']               9                9     True  \n",
+        "..                              ...             ...              ...      ...  \n",
+        "970                              []              11               10     True  \n",
+        "971                              []               9               10     True  \n",
+        "972                           ['r']               8                9     True  \n",
+        "973            ['d', 's', 't', 'g']               6                6     True  \n",
+        "974                 ['e', 's', 'l']               4                7     True  \n",
+        "975            ['a', 'i', 't', 'r']               5                6     True  \n",
+        "976                              []              10               10     True  \n",
+        "977                      ['e', 'i']               8                8     True  \n",
+        "978                           ['e']               8                9     True  \n",
+        "979                              []              12               10     True  \n",
+        "980                           ['e']               6                9     True  \n",
+        "981                      ['t', 'm']               8                8     True  \n",
+        "982       ['s', 'c', 't', 'g', 'p']               5                5     True  \n",
+        "983                           ['m']               5                9     True  \n",
+        "984                           ['s']              10                9     True  \n",
+        "985                           ['f']              13                9     True  \n",
+        "986                 ['p', 'i', 'm']               8                7     True  \n",
+        "987                              []              10               10     True  \n",
+        "988                           ['f']               9                9     True  \n",
+        "989                              []               8               10     True  \n",
+        "990            ['e', 't', 'k', 'p']               8                6     True  \n",
+        "991                 ['e', 'i', 'o']              11                7     True  \n",
+        "992                 ['d', 'r', 'l']               6                7     True  \n",
+        "993            ['s', 'd', 't', 'f']               5                6     True  \n",
+        "994                              []              14               10     True  \n",
+        "995                      ['r', 'u']               6                8     True  \n",
+        "996                 ['s', 'r', 'o']              10                7     True  \n",
+        "997                              []              11               10     True  \n",
+        "998                              []              14               10     True  \n",
+        "999       ['e', 's', 'i', 'a', 'o']               6                5     True  \n",
+        "\n",
+        "[1000 rows x 6 columns]"
+       ]
+      }
+     ],
+     "prompt_number": 18
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "adaptive_pattern['word length'] = adaptive_pattern.apply(lambda r: len(r['target']), axis=1)\n",
+      "adaptive_pattern"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "html": [
+        "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
+        "<table border=\"1\" class=\"dataframe\">\n",
+        "  <thead>\n",
+        "    <tr style=\"text-align: right;\">\n",
+        "      <th></th>\n",
+        "      <th>target</th>\n",
+        "      <th>discovered</th>\n",
+        "      <th>wrong letters</th>\n",
+        "      <th>number of hits</th>\n",
+        "      <th>lives remaining</th>\n",
+        "      <th>game won</th>\n",
+        "      <th>word length</th>\n",
+        "    </tr>\n",
+        "  </thead>\n",
+        "  <tbody>\n",
+        "    <tr>\n",
+        "      <th>0  </th>\n",
+        "      <td>      toothsome</td>\n",
+        "      <td>     ['t', 'o', 'o', 't', 'h', 's', 'o', 'm', 'e']</td>\n",
+        "      <td>                     ['a', 'i']</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  9</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>1  </th>\n",
+        "      <td>     analgesics</td>\n",
+        "      <td> ['a', 'n', 'a', 'l', 'g', 'e', 's', 'i', 'c', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>2  </th>\n",
+        "      <td>     intrenched</td>\n",
+        "      <td> ['i', 'n', 't', 'r', 'e', 'n', 'c', 'h', 'e', ...</td>\n",
+        "      <td>                          ['s']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>3  </th>\n",
+        "      <td>         normal</td>\n",
+        "      <td>                    ['n', 'o', 'r', 'm', 'a', 'l']</td>\n",
+        "      <td>           ['e', 's', 'i', 'f']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>4  </th>\n",
+        "      <td>        debunks</td>\n",
+        "      <td>               ['d', 'e', 'b', 'u', 'n', 'k', 's']</td>\n",
+        "      <td>                          ['t']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>5  </th>\n",
+        "      <td>    satanically</td>\n",
+        "      <td> ['s', 'a', 't', 'a', 'n', 'i', 'c', 'a', 'l', ...</td>\n",
+        "      <td>                          ['e']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 11</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>6  </th>\n",
+        "      <td>       radicals</td>\n",
+        "      <td>          ['r', 'a', 'd', 'i', 'c', 'a', 'l', 's']</td>\n",
+        "      <td>                     ['e', 't']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>7  </th>\n",
+        "      <td>         erotic</td>\n",
+        "      <td>                    ['e', 'r', 'o', 't', 'i', 'c']</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>8  </th>\n",
+        "      <td>         double</td>\n",
+        "      <td>                    ['d', 'o', 'u', 'b', 'l', 'e']</td>\n",
+        "      <td>                ['a', 'm', 'r']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>9  </th>\n",
+        "      <td>         caviar</td>\n",
+        "      <td>                    ['c', 'a', 'v', 'i', 'a', 'r']</td>\n",
+        "      <td>           ['e', 's', 'n', 'l']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>10 </th>\n",
+        "      <td>    rigamaroles</td>\n",
+        "      <td> ['r', 'i', 'g', 'a', 'm', 'a', 'r', 'o', 'l', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 11</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 11</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>11 </th>\n",
+        "      <td>  disfranchises</td>\n",
+        "      <td> ['d', 'i', 's', 'f', 'r', 'a', 'n', 'c', 'h', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 13</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 13</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>12 </th>\n",
+        "      <td>     mushroomed</td>\n",
+        "      <td> ['m', 'u', 's', 'h', 'r', 'o', 'o', 'm', 'e', ...</td>\n",
+        "      <td>                          ['t']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>13 </th>\n",
+        "      <td>          rails</td>\n",
+        "      <td>                         ['r', 'a', 'i', 'l', 's']</td>\n",
+        "      <td> ['e', 'o', 't', 'm', 'f', 'w']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  4</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>14 </th>\n",
+        "      <td>         poised</td>\n",
+        "      <td>                    ['p', 'o', 'i', 's', 'e', 'd']</td>\n",
+        "      <td>           ['a', 'l', 't', 'k']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>15 </th>\n",
+        "      <td>    circulating</td>\n",
+        "      <td> ['c', 'i', 'r', 'c', 'u', 'l', 'a', 't', 'i', ...</td>\n",
+        "      <td>                          ['e']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 11</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>16 </th>\n",
+        "      <td>     yesteryear</td>\n",
+        "      <td> ['y', 'e', 's', 't', 'e', 'r', 'y', 'e', 'a', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>17 </th>\n",
+        "      <td>       chastest</td>\n",
+        "      <td>          ['c', 'h', 'a', 's', 't', 'e', 's', 't']</td>\n",
+        "      <td>                          ['m']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>18 </th>\n",
+        "      <td>        lenders</td>\n",
+        "      <td>               ['l', 'e', 'n', 'd', 'e', 'r', 's']</td>\n",
+        "      <td>                ['t', 'f', 'm']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>19 </th>\n",
+        "      <td>        upshots</td>\n",
+        "      <td>               ['u', 'p', 's', 'h', 'o', 't', 's']</td>\n",
+        "      <td>           ['e', 'i', 'a', 'n']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>20 </th>\n",
+        "      <td>       stridden</td>\n",
+        "      <td>          ['s', 't', 'r', 'i', 'd', 'd', 'e', 'n']</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>21 </th>\n",
+        "      <td>    trespassing</td>\n",
+        "      <td> ['t', 'r', 'e', 's', 'p', 'a', 's', 's', 'i', ...</td>\n",
+        "      <td>                          ['o']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 11</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>22 </th>\n",
+        "      <td>       muckrake</td>\n",
+        "      <td>          ['m', 'u', 'c', 'k', 'r', 'a', 'k', 'e']</td>\n",
+        "      <td>                          ['t']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>23 </th>\n",
+        "      <td>      bungalows</td>\n",
+        "      <td>     ['b', 'u', 'n', 'g', 'a', 'l', 'o', 'w', 's']</td>\n",
+        "      <td>                ['e', 'i', 't']</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  9</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>24 </th>\n",
+        "      <td>      rewinding</td>\n",
+        "      <td>     ['r', 'e', 'w', 'i', 'n', 'd', 'i', 'n', 'g']</td>\n",
+        "      <td>                          ['m']</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  9</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>25 </th>\n",
+        "      <td>   stepchildren</td>\n",
+        "      <td> ['s', 't', 'e', 'p', 'c', 'h', 'i', 'l', 'd', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 12</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 12</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>26 </th>\n",
+        "      <td>   courageously</td>\n",
+        "      <td> ['c', 'o', 'u', 'r', 'a', 'g', 'e', 'o', 'u', ...</td>\n",
+        "      <td>                          ['i']</td>\n",
+        "      <td> 12</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 12</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>27 </th>\n",
+        "      <td>   gladiatorial</td>\n",
+        "      <td> ['g', 'l', 'a', 'd', 'i', 'a', 't', 'o', 'r', ...</td>\n",
+        "      <td>                          ['e']</td>\n",
+        "      <td> 12</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 12</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>28 </th>\n",
+        "      <td>        unseals</td>\n",
+        "      <td>               ['u', 'n', 's', 'e', 'a', 'l', 's']</td>\n",
+        "      <td>                          ['t']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>29 </th>\n",
+        "      <td>      backaches</td>\n",
+        "      <td>     ['b', 'a', 'c', 'k', 'a', 'c', 'h', 'e', 's']</td>\n",
+        "      <td>                          ['i']</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  9</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>...</th>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>970</th>\n",
+        "      <td>    priestliest</td>\n",
+        "      <td> ['p', 'r', 'i', 'e', 's', 't', 'l', 'i', 'e', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 11</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 11</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>971</th>\n",
+        "      <td>      oversight</td>\n",
+        "      <td>     ['o', 'v', 'e', 'r', 's', 'i', 'g', 'h', 't']</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  9</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>972</th>\n",
+        "      <td>       nutshell</td>\n",
+        "      <td>          ['n', 'u', 't', 's', 'h', 'e', 'l', 'l']</td>\n",
+        "      <td>                          ['r']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>973</th>\n",
+        "      <td>         picker</td>\n",
+        "      <td>                    ['p', 'i', 'c', 'k', 'e', 'r']</td>\n",
+        "      <td>           ['d', 's', 't', 'g']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>974</th>\n",
+        "      <td>           prom</td>\n",
+        "      <td>                              ['p', 'r', 'o', 'm']</td>\n",
+        "      <td>                ['e', 's', 'l']</td>\n",
+        "      <td>  4</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  4</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>975</th>\n",
+        "      <td>          spoke</td>\n",
+        "      <td>                         ['s', 'p', 'o', 'k', 'e']</td>\n",
+        "      <td>           ['a', 'i', 't', 'r']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>976</th>\n",
+        "      <td>     videodiscs</td>\n",
+        "      <td> ['v', 'i', 'd', 'e', 'o', 'd', 'i', 's', 'c', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>977</th>\n",
+        "      <td>       braggart</td>\n",
+        "      <td>          ['b', 'r', 'a', 'g', 'g', 'a', 'r', 't']</td>\n",
+        "      <td>                     ['e', 'i']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>978</th>\n",
+        "      <td>       shindigs</td>\n",
+        "      <td>          ['s', 'h', 'i', 'n', 'd', 'i', 'g', 's']</td>\n",
+        "      <td>                          ['e']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>979</th>\n",
+        "      <td>   indorsements</td>\n",
+        "      <td> ['i', 'n', 'd', 'o', 'r', 's', 'e', 'm', 'e', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 12</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 12</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>980</th>\n",
+        "      <td>         audios</td>\n",
+        "      <td>                    ['a', 'u', 'd', 'i', 'o', 's']</td>\n",
+        "      <td>                          ['e']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>981</th>\n",
+        "      <td>       disrobes</td>\n",
+        "      <td>          ['d', 'i', 's', 'r', 'o', 'b', 'e', 's']</td>\n",
+        "      <td>                     ['t', 'm']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>982</th>\n",
+        "      <td>          drake</td>\n",
+        "      <td>                         ['d', 'r', 'a', 'k', 'e']</td>\n",
+        "      <td>      ['s', 'c', 't', 'g', 'p']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>983</th>\n",
+        "      <td>          penes</td>\n",
+        "      <td>                         ['p', 'e', 'n', 'e', 's']</td>\n",
+        "      <td>                          ['m']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>984</th>\n",
+        "      <td>     ecological</td>\n",
+        "      <td> ['e', 'c', 'o', 'l', 'o', 'g', 'i', 'c', 'a', ...</td>\n",
+        "      <td>                          ['s']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>985</th>\n",
+        "      <td>  consideration</td>\n",
+        "      <td> ['c', 'o', 'n', 's', 'i', 'd', 'e', 'r', 'a', ...</td>\n",
+        "      <td>                          ['f']</td>\n",
+        "      <td> 13</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 13</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>986</th>\n",
+        "      <td>       strolled</td>\n",
+        "      <td>          ['s', 't', 'r', 'o', 'l', 'l', 'e', 'd']</td>\n",
+        "      <td>                ['p', 'i', 'm']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>987</th>\n",
+        "      <td>     peacemaker</td>\n",
+        "      <td> ['p', 'e', 'a', 'c', 'e', 'm', 'a', 'k', 'e', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>988</th>\n",
+        "      <td>      chilliest</td>\n",
+        "      <td>     ['c', 'h', 'i', 'l', 'l', 'i', 'e', 's', 't']</td>\n",
+        "      <td>                          ['f']</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  9</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  9</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>989</th>\n",
+        "      <td>       neuritis</td>\n",
+        "      <td>          ['n', 'e', 'u', 'r', 'i', 't', 'i', 's']</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>990</th>\n",
+        "      <td>       quisling</td>\n",
+        "      <td>          ['q', 'u', 'i', 's', 'l', 'i', 'n', 'g']</td>\n",
+        "      <td>           ['e', 't', 'k', 'p']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>991</th>\n",
+        "      <td>    transplants</td>\n",
+        "      <td> ['t', 'r', 'a', 'n', 's', 'p', 'l', 'a', 'n', ...</td>\n",
+        "      <td>                ['e', 'i', 'o']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 11</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>992</th>\n",
+        "      <td>         bevies</td>\n",
+        "      <td>                    ['b', 'e', 'v', 'i', 'e', 's']</td>\n",
+        "      <td>                ['d', 'r', 'l']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>993</th>\n",
+        "      <td>          geeky</td>\n",
+        "      <td>                         ['g', 'e', 'e', 'k', 'y']</td>\n",
+        "      <td>           ['s', 'd', 't', 'f']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  6</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>994</th>\n",
+        "      <td> demonstrations</td>\n",
+        "      <td> ['d', 'e', 'm', 'o', 'n', 's', 't', 'r', 'a', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 14</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 14</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>995</th>\n",
+        "      <td>         dowses</td>\n",
+        "      <td>                    ['d', 'o', 'w', 's', 'e', 's']</td>\n",
+        "      <td>                     ['r', 'u']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>996</th>\n",
+        "      <td>     pummelling</td>\n",
+        "      <td> ['p', 'u', 'm', 'm', 'e', 'l', 'l', 'i', 'n', ...</td>\n",
+        "      <td>                ['s', 'r', 'o']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  7</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>997</th>\n",
+        "      <td>    earnestness</td>\n",
+        "      <td> ['e', 'a', 'r', 'n', 'e', 's', 't', 'n', 'e', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 11</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 11</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>998</th>\n",
+        "      <td> thermodynamics</td>\n",
+        "      <td> ['t', 'h', 'e', 'r', 'm', 'o', 'd', 'y', 'n', ...</td>\n",
+        "      <td>                             []</td>\n",
+        "      <td> 14</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> True</td>\n",
+        "      <td> 14</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>999</th>\n",
+        "      <td>         flurry</td>\n",
+        "      <td>                    ['f', 'l', 'u', 'r', 'r', 'y']</td>\n",
+        "      <td>      ['e', 's', 'i', 'a', 'o']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "  </tbody>\n",
+        "</table>\n",
+        "<p>1000 rows \u00d7 7 columns</p>\n",
+        "</div>"
+       ],
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 14,
+       "text": [
+        "             target                                         discovered  \\\n",
+        "0         toothsome      ['t', 'o', 'o', 't', 'h', 's', 'o', 'm', 'e']   \n",
+        "1        analgesics  ['a', 'n', 'a', 'l', 'g', 'e', 's', 'i', 'c', ...   \n",
+        "2        intrenched  ['i', 'n', 't', 'r', 'e', 'n', 'c', 'h', 'e', ...   \n",
+        "3            normal                     ['n', 'o', 'r', 'm', 'a', 'l']   \n",
+        "4           debunks                ['d', 'e', 'b', 'u', 'n', 'k', 's']   \n",
+        "5       satanically  ['s', 'a', 't', 'a', 'n', 'i', 'c', 'a', 'l', ...   \n",
+        "6          radicals           ['r', 'a', 'd', 'i', 'c', 'a', 'l', 's']   \n",
+        "7            erotic                     ['e', 'r', 'o', 't', 'i', 'c']   \n",
+        "8            double                     ['d', 'o', 'u', 'b', 'l', 'e']   \n",
+        "9            caviar                     ['c', 'a', 'v', 'i', 'a', 'r']   \n",
+        "10      rigamaroles  ['r', 'i', 'g', 'a', 'm', 'a', 'r', 'o', 'l', ...   \n",
+        "11    disfranchises  ['d', 'i', 's', 'f', 'r', 'a', 'n', 'c', 'h', ...   \n",
+        "12       mushroomed  ['m', 'u', 's', 'h', 'r', 'o', 'o', 'm', 'e', ...   \n",
+        "13            rails                          ['r', 'a', 'i', 'l', 's']   \n",
+        "14           poised                     ['p', 'o', 'i', 's', 'e', 'd']   \n",
+        "15      circulating  ['c', 'i', 'r', 'c', 'u', 'l', 'a', 't', 'i', ...   \n",
+        "16       yesteryear  ['y', 'e', 's', 't', 'e', 'r', 'y', 'e', 'a', ...   \n",
+        "17         chastest           ['c', 'h', 'a', 's', 't', 'e', 's', 't']   \n",
+        "18          lenders                ['l', 'e', 'n', 'd', 'e', 'r', 's']   \n",
+        "19          upshots                ['u', 'p', 's', 'h', 'o', 't', 's']   \n",
+        "20         stridden           ['s', 't', 'r', 'i', 'd', 'd', 'e', 'n']   \n",
+        "21      trespassing  ['t', 'r', 'e', 's', 'p', 'a', 's', 's', 'i', ...   \n",
+        "22         muckrake           ['m', 'u', 'c', 'k', 'r', 'a', 'k', 'e']   \n",
+        "23        bungalows      ['b', 'u', 'n', 'g', 'a', 'l', 'o', 'w', 's']   \n",
+        "24        rewinding      ['r', 'e', 'w', 'i', 'n', 'd', 'i', 'n', 'g']   \n",
+        "25     stepchildren  ['s', 't', 'e', 'p', 'c', 'h', 'i', 'l', 'd', ...   \n",
+        "26     courageously  ['c', 'o', 'u', 'r', 'a', 'g', 'e', 'o', 'u', ...   \n",
+        "27     gladiatorial  ['g', 'l', 'a', 'd', 'i', 'a', 't', 'o', 'r', ...   \n",
+        "28          unseals                ['u', 'n', 's', 'e', 'a', 'l', 's']   \n",
+        "29        backaches      ['b', 'a', 'c', 'k', 'a', 'c', 'h', 'e', 's']   \n",
+        "..              ...                                                ...   \n",
+        "970     priestliest  ['p', 'r', 'i', 'e', 's', 't', 'l', 'i', 'e', ...   \n",
+        "971       oversight      ['o', 'v', 'e', 'r', 's', 'i', 'g', 'h', 't']   \n",
+        "972        nutshell           ['n', 'u', 't', 's', 'h', 'e', 'l', 'l']   \n",
+        "973          picker                     ['p', 'i', 'c', 'k', 'e', 'r']   \n",
+        "974            prom                               ['p', 'r', 'o', 'm']   \n",
+        "975           spoke                          ['s', 'p', 'o', 'k', 'e']   \n",
+        "976      videodiscs  ['v', 'i', 'd', 'e', 'o', 'd', 'i', 's', 'c', ...   \n",
+        "977        braggart           ['b', 'r', 'a', 'g', 'g', 'a', 'r', 't']   \n",
+        "978        shindigs           ['s', 'h', 'i', 'n', 'd', 'i', 'g', 's']   \n",
+        "979    indorsements  ['i', 'n', 'd', 'o', 'r', 's', 'e', 'm', 'e', ...   \n",
+        "980          audios                     ['a', 'u', 'd', 'i', 'o', 's']   \n",
+        "981        disrobes           ['d', 'i', 's', 'r', 'o', 'b', 'e', 's']   \n",
+        "982           drake                          ['d', 'r', 'a', 'k', 'e']   \n",
+        "983           penes                          ['p', 'e', 'n', 'e', 's']   \n",
+        "984      ecological  ['e', 'c', 'o', 'l', 'o', 'g', 'i', 'c', 'a', ...   \n",
+        "985   consideration  ['c', 'o', 'n', 's', 'i', 'd', 'e', 'r', 'a', ...   \n",
+        "986        strolled           ['s', 't', 'r', 'o', 'l', 'l', 'e', 'd']   \n",
+        "987      peacemaker  ['p', 'e', 'a', 'c', 'e', 'm', 'a', 'k', 'e', ...   \n",
+        "988       chilliest      ['c', 'h', 'i', 'l', 'l', 'i', 'e', 's', 't']   \n",
+        "989        neuritis           ['n', 'e', 'u', 'r', 'i', 't', 'i', 's']   \n",
+        "990        quisling           ['q', 'u', 'i', 's', 'l', 'i', 'n', 'g']   \n",
+        "991     transplants  ['t', 'r', 'a', 'n', 's', 'p', 'l', 'a', 'n', ...   \n",
+        "992          bevies                     ['b', 'e', 'v', 'i', 'e', 's']   \n",
+        "993           geeky                          ['g', 'e', 'e', 'k', 'y']   \n",
+        "994  demonstrations  ['d', 'e', 'm', 'o', 'n', 's', 't', 'r', 'a', ...   \n",
+        "995          dowses                     ['d', 'o', 'w', 's', 'e', 's']   \n",
+        "996      pummelling  ['p', 'u', 'm', 'm', 'e', 'l', 'l', 'i', 'n', ...   \n",
+        "997     earnestness  ['e', 'a', 'r', 'n', 'e', 's', 't', 'n', 'e', ...   \n",
+        "998  thermodynamics  ['t', 'h', 'e', 'r', 'm', 'o', 'd', 'y', 'n', ...   \n",
+        "999          flurry                     ['f', 'l', 'u', 'r', 'r', 'y']   \n",
+        "\n",
+        "                      wrong letters  number of hits  lives remaining game won  \\\n",
+        "0                        ['a', 'i']               9                8     True   \n",
+        "1                                []              10               10     True   \n",
+        "2                             ['s']              10                9     True   \n",
+        "3              ['e', 's', 'i', 'f']               6                6     True   \n",
+        "4                             ['t']               7                9     True   \n",
+        "5                             ['e']              11                9     True   \n",
+        "6                        ['e', 't']               8                8     True   \n",
+        "7                                []               6               10     True   \n",
+        "8                   ['a', 'm', 'r']               6                7     True   \n",
+        "9              ['e', 's', 'n', 'l']               6                6     True   \n",
+        "10                               []              11               10     True   \n",
+        "11                               []              13               10     True   \n",
+        "12                            ['t']              10                9     True   \n",
+        "13   ['e', 'o', 't', 'm', 'f', 'w']               5                4     True   \n",
+        "14             ['a', 'l', 't', 'k']               6                6     True   \n",
+        "15                            ['e']              11                9     True   \n",
+        "16                               []              10               10     True   \n",
+        "17                            ['m']               8                9     True   \n",
+        "18                  ['t', 'f', 'm']               7                7     True   \n",
+        "19             ['e', 'i', 'a', 'n']               7                6     True   \n",
+        "20                               []               8               10     True   \n",
+        "21                            ['o']              11                9     True   \n",
+        "22                            ['t']               8                9     True   \n",
+        "23                  ['e', 'i', 't']               9                7     True   \n",
+        "24                            ['m']               9                9     True   \n",
+        "25                               []              12               10     True   \n",
+        "26                            ['i']              12                9     True   \n",
+        "27                            ['e']              12                9     True   \n",
+        "28                            ['t']               7                9     True   \n",
+        "29                            ['i']               9                9     True   \n",
+        "..                              ...             ...              ...      ...   \n",
+        "970                              []              11               10     True   \n",
+        "971                              []               9               10     True   \n",
+        "972                           ['r']               8                9     True   \n",
+        "973            ['d', 's', 't', 'g']               6                6     True   \n",
+        "974                 ['e', 's', 'l']               4                7     True   \n",
+        "975            ['a', 'i', 't', 'r']               5                6     True   \n",
+        "976                              []              10               10     True   \n",
+        "977                      ['e', 'i']               8                8     True   \n",
+        "978                           ['e']               8                9     True   \n",
+        "979                              []              12               10     True   \n",
+        "980                           ['e']               6                9     True   \n",
+        "981                      ['t', 'm']               8                8     True   \n",
+        "982       ['s', 'c', 't', 'g', 'p']               5                5     True   \n",
+        "983                           ['m']               5                9     True   \n",
+        "984                           ['s']              10                9     True   \n",
+        "985                           ['f']              13                9     True   \n",
+        "986                 ['p', 'i', 'm']               8                7     True   \n",
+        "987                              []              10               10     True   \n",
+        "988                           ['f']               9                9     True   \n",
+        "989                              []               8               10     True   \n",
+        "990            ['e', 't', 'k', 'p']               8                6     True   \n",
+        "991                 ['e', 'i', 'o']              11                7     True   \n",
+        "992                 ['d', 'r', 'l']               6                7     True   \n",
+        "993            ['s', 'd', 't', 'f']               5                6     True   \n",
+        "994                              []              14               10     True   \n",
+        "995                      ['r', 'u']               6                8     True   \n",
+        "996                 ['s', 'r', 'o']              10                7     True   \n",
+        "997                              []              11               10     True   \n",
+        "998                              []              14               10     True   \n",
+        "999       ['e', 's', 'i', 'a', 'o']               6                5     True   \n",
+        "\n",
+        "     word length  \n",
+        "0              9  \n",
+        "1             10  \n",
+        "2             10  \n",
+        "3              6  \n",
+        "4              7  \n",
+        "5             11  \n",
+        "6              8  \n",
+        "7              6  \n",
+        "8              6  \n",
+        "9              6  \n",
+        "10            11  \n",
+        "11            13  \n",
+        "12            10  \n",
+        "13             5  \n",
+        "14             6  \n",
+        "15            11  \n",
+        "16            10  \n",
+        "17             8  \n",
+        "18             7  \n",
+        "19             7  \n",
+        "20             8  \n",
+        "21            11  \n",
+        "22             8  \n",
+        "23             9  \n",
+        "24             9  \n",
+        "25            12  \n",
+        "26            12  \n",
+        "27            12  \n",
+        "28             7  \n",
+        "29             9  \n",
+        "..           ...  \n",
+        "970           11  \n",
+        "971            9  \n",
+        "972            8  \n",
+        "973            6  \n",
+        "974            4  \n",
+        "975            5  \n",
+        "976           10  \n",
+        "977            8  \n",
+        "978            8  \n",
+        "979           12  \n",
+        "980            6  \n",
+        "981            8  \n",
+        "982            5  \n",
+        "983            5  \n",
+        "984           10  \n",
+        "985           13  \n",
+        "986            8  \n",
+        "987           10  \n",
+        "988            9  \n",
+        "989            8  \n",
+        "990            8  \n",
+        "991           11  \n",
+        "992            6  \n",
+        "993            5  \n",
+        "994           14  \n",
+        "995            6  \n",
+        "996           10  \n",
+        "997           11  \n",
+        "998           14  \n",
+        "999            6  \n",
+        "\n",
+        "[1000 rows x 7 columns]"
+       ]
+      }
+     ],
+     "prompt_number": 14
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "adaptive_pattern['lives remaining'].hist()"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 15,
+       "text": [
+        "<matplotlib.axes.AxesSubplot at 0x7f1586fb5978>"
+       ]
+      },
+      {
+       "metadata": {},
+       "output_type": "display_data",
+       "png": "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\nwf8D25ze66lP9woAAAAASUVORK5CYII=\n",
+       "text": [
+        "<matplotlib.figure.Figure at 0x7f1586fb55f8>"
+       ]
+      }
+     ],
+     "prompt_number": 15
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "adaptive_pattern.groupby('lives remaining').size()"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 16,
+       "text": [
+        "lives remaining\n",
+        "0                   11\n",
+        "1                    5\n",
+        "2                    5\n",
+        "3                   22\n",
+        "4                   40\n",
+        "5                   42\n",
+        "6                   79\n",
+        "7                  109\n",
+        "8                  161\n",
+        "9                  290\n",
+        "10                 236\n",
+        "dtype: int64"
+       ]
+      }
+     ],
+     "prompt_number": 16
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "adaptive_split = pd.read_csv('adaptive_split.csv')\n",
+      "adaptive_split"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "html": [
+        "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
+        "<table border=\"1\" class=\"dataframe\">\n",
+        "  <thead>\n",
+        "    <tr style=\"text-align: right;\">\n",
+        "      <th></th>\n",
+        "      <th>target</th>\n",
+        "      <th>discovered</th>\n",
+        "      <th>wrong letters</th>\n",
+        "      <th>number of hits</th>\n",
+        "      <th>lives remaining</th>\n",
+        "      <th>game won</th>\n",
+        "    </tr>\n",
+        "  </thead>\n",
+        "  <tbody>\n",
+        "    <tr>\n",
+        "      <th>0  </th>\n",
+        "      <td>             punned</td>\n",
+        "      <td>                    ['p', 'u', 'n', 'n', 'e', 'd']</td>\n",
+        "      <td>                         ['s', 'r', 'l', 'a', 'i']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>1  </th>\n",
+        "      <td>              anode</td>\n",
+        "      <td>                         ['a', 'n', 'o', 'd', 'e']</td>\n",
+        "      <td>                                   ['s', 'l', 'b']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>2  </th>\n",
+        "      <td>             passes</td>\n",
+        "      <td>                    ['p', 'a', 's', 's', 'e', 's']</td>\n",
+        "      <td>                                        ['l', 'b']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>3  </th>\n",
+        "      <td>             maxing</td>\n",
+        "      <td>                    ['m', 'a', 'x', 'i', 'n', 'g']</td>\n",
+        "      <td>     ['s', 'r', 'd', 't', 'w', 'l', 'p', 'k', 'c']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  1</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>4  </th>\n",
+        "      <td>           quadrant</td>\n",
+        "      <td>          ['q', 'u', 'a', 'd', 'r', 'a', 'n', 't']</td>\n",
+        "      <td>                                                []</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>5  </th>\n",
+        "      <td>           polygamy</td>\n",
+        "      <td>          ['p', 'o', 'l', 'y', 'g', 'a', 'm', 'y']</td>\n",
+        "      <td>                              ['r', 'i', 's', 'd']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>6  </th>\n",
+        "      <td>      technologists</td>\n",
+        "      <td> ['t', 'e', 'c', 'h', 'n', 'o', 'l', 'o', 'g', ...</td>\n",
+        "      <td>                                             ['r']</td>\n",
+        "      <td> 13</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>7  </th>\n",
+        "      <td>             tussle</td>\n",
+        "      <td>                    ['t', 'u', 's', 's', 'l', 'e']</td>\n",
+        "      <td>                                             ['a']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>8  </th>\n",
+        "      <td>         explicitly</td>\n",
+        "      <td> ['e', 'x', 'p', 'l', 'i', 'c', 'i', 't', 'l', ...</td>\n",
+        "      <td>                         ['o', 'a', 'b', 's', 'm']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>9  </th>\n",
+        "      <td>         moderators</td>\n",
+        "      <td> ['m', 'o', 'd', 'e', 'r', 'a', 't', 'o', 'r', ...</td>\n",
+        "      <td>                                             ['u']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>10 </th>\n",
+        "      <td>              error</td>\n",
+        "      <td>                         ['e', 'r', 'r', 'o', 'r']</td>\n",
+        "      <td>                         ['s', 't', 'n', 'l', 'y']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>11 </th>\n",
+        "      <td>            stamped</td>\n",
+        "      <td>               ['s', 't', 'a', 'm', 'p', 'e', 'd']</td>\n",
+        "      <td>                         ['r', 'i', 'l', 'b', 'c']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>12 </th>\n",
+        "      <td>              dress</td>\n",
+        "      <td>                         ['d', 'r', 'e', 's', 's']</td>\n",
+        "      <td>                                                []</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>13 </th>\n",
+        "      <td>           truckled</td>\n",
+        "      <td>          ['t', 'r', 'u', 'c', 'k', 'l', 'e', 'd']</td>\n",
+        "      <td>                         ['s', 'i', 'a', 'b', 'p']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>14 </th>\n",
+        "      <td>      accommodation</td>\n",
+        "      <td> ['a', 'c', 'c', 'o', 'm', 'm', 'o', 'd', 'a', ...</td>\n",
+        "      <td>                                        ['s', 'g']</td>\n",
+        "      <td> 13</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>15 </th>\n",
+        "      <td>             reload</td>\n",
+        "      <td>                    ['r', 'e', 'l', 'o', 'a', 'd']</td>\n",
+        "      <td>                                        ['s', 'i']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>16 </th>\n",
+        "      <td>         confounded</td>\n",
+        "      <td> ['c', 'o', 'n', 'f', 'o', 'u', 'n', 'd', 'e', ...</td>\n",
+        "      <td>                                             ['p']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>17 </th>\n",
+        "      <td>         racketeers</td>\n",
+        "      <td> ['r', 'a', 'c', 'k', 'e', 't', 'e', 'e', 'r', ...</td>\n",
+        "      <td>                                        ['o', 'l']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>18 </th>\n",
+        "      <td>        ignoramuses</td>\n",
+        "      <td> ['i', 'g', 'n', 'o', 'r', 'a', 'm', 'u', 's', ...</td>\n",
+        "      <td>                                             ['l']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>19 </th>\n",
+        "      <td>              party</td>\n",
+        "      <td>                         ['p', 'a', 'r', 't', 'y']</td>\n",
+        "      <td>                              ['s', 'e', 'n', 'd']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>20 </th>\n",
+        "      <td>               rill</td>\n",
+        "      <td>                              ['r', 'i', 'l', 'l']</td>\n",
+        "      <td>                    ['e', 's', 'a', 'o', 'u', 'n']</td>\n",
+        "      <td>  4</td>\n",
+        "      <td>  4</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>21 </th>\n",
+        "      <td>             player</td>\n",
+        "      <td>                    ['p', 'l', 'a', 'y', 'e', 'r']</td>\n",
+        "      <td>                                        ['s', 'm']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>22 </th>\n",
+        "      <td>          protester</td>\n",
+        "      <td>     ['p', 'r', 'o', 't', 'e', 's', 't', 'e', 'r']</td>\n",
+        "      <td>                                   ['i', 'd', 'l']</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>23 </th>\n",
+        "      <td>          asphalted</td>\n",
+        "      <td>     ['a', 's', 'p', 'h', 'a', 'l', 't', 'e', 'd']</td>\n",
+        "      <td>                                        ['r', 'i']</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>24 </th>\n",
+        "      <td>           uniforms</td>\n",
+        "      <td>          ['u', 'n', 'i', 'f', 'o', 'r', 'm', 's']</td>\n",
+        "      <td>                                   ['a', 't', 'p']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>25 </th>\n",
+        "      <td>         coniferous</td>\n",
+        "      <td> ['c', 'o', 'n', 'i', 'f', 'e', 'r', 'o', 'u', ...</td>\n",
+        "      <td>                                                []</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>26 </th>\n",
+        "      <td>         dishearten</td>\n",
+        "      <td> ['d', 'i', 's', 'h', 'e', 'a', 'r', 't', 'e', ...</td>\n",
+        "      <td>                                   ['o', 'l', 'g']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>27 </th>\n",
+        "      <td>              scull</td>\n",
+        "      <td>                         ['s', 'c', 'u', 'l', 'l']</td>\n",
+        "      <td>                         ['e', 'a', 'o', 'i', 'n']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>28 </th>\n",
+        "      <td>             virgin</td>\n",
+        "      <td>                    ['v', 'i', 'r', 'g', 'i', 'n']</td>\n",
+        "      <td>                                   ['s', 'a', 'd']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>29 </th>\n",
+        "      <td>       licentiously</td>\n",
+        "      <td> ['l', 'i', 'c', 'e', 'n', 't', 'i', 'o', 'u', ...</td>\n",
+        "      <td>                                                []</td>\n",
+        "      <td> 12</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>...</th>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>970</th>\n",
+        "      <td>         grindstone</td>\n",
+        "      <td> ['g', 'r', 'i', 'n', 'd', 's', 't', 'o', 'n', ...</td>\n",
+        "      <td>                                   ['a', 'u', 'p']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>971</th>\n",
+        "      <td>       bankruptcies</td>\n",
+        "      <td> ['b', 'a', 'n', 'k', 'r', 'u', 'p', 't', 'c', ...</td>\n",
+        "      <td>                                                []</td>\n",
+        "      <td> 12</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>972</th>\n",
+        "      <td>             smalls</td>\n",
+        "      <td>                    ['s', 'm', 'a', 'l', 'l', 's']</td>\n",
+        "      <td>                              ['e', 't', 'k', 'w']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>973</th>\n",
+        "      <td>            limping</td>\n",
+        "      <td>               ['l', 'i', 'm', 'p', 'i', 'n', 'g']</td>\n",
+        "      <td>               ['s', 'r', 'e', 'a', 'o', 'u', 'k']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  3</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>974</th>\n",
+        "      <td>        interfacing</td>\n",
+        "      <td> ['i', 'n', 't', 'e', 'r', 'f', 'a', 'c', 'i', ...</td>\n",
+        "      <td>                              ['o', 'l', 'd', 's']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>975</th>\n",
+        "      <td>               mint</td>\n",
+        "      <td>                              ['_', '_', 'n', 't']</td>\n",
+        "      <td> ['e', 's', 'a', 'o', 'u', 'd', 'k', 'l', 'p', ...</td>\n",
+        "      <td>  2</td>\n",
+        "      <td>  0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>976</th>\n",
+        "      <td>       romanticises</td>\n",
+        "      <td> ['r', 'o', 'm', 'a', 'n', 't', 'i', 'c', 'i', ...</td>\n",
+        "      <td>                                             ['d']</td>\n",
+        "      <td> 12</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>977</th>\n",
+        "      <td>           cleavage</td>\n",
+        "      <td>          ['c', 'l', 'e', 'a', 'v', 'a', 'g', 'e']</td>\n",
+        "      <td>                                        ['r', 's']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>978</th>\n",
+        "      <td>            revival</td>\n",
+        "      <td>               ['r', 'e', 'v', 'i', 'v', 'a', 'l']</td>\n",
+        "      <td>                              ['s', 'n', 'c', 'm']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>979</th>\n",
+        "      <td>            praying</td>\n",
+        "      <td>               ['p', 'r', 'a', 'y', 'i', 'n', 'g']</td>\n",
+        "      <td>                              ['s', 'd', 'c', 'b']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>980</th>\n",
+        "      <td>             troupe</td>\n",
+        "      <td>                    ['t', 'r', 'o', 'u', 'p', 'e']</td>\n",
+        "      <td>                              ['s', 'g', 'a', 'l']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>981</th>\n",
+        "      <td>             public</td>\n",
+        "      <td>                    ['p', 'u', 'b', 'l', 'i', 'c']</td>\n",
+        "      <td>                    ['s', 'r', 'd', 'n', 'a', 'e']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  4</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>982</th>\n",
+        "      <td>         generating</td>\n",
+        "      <td> ['g', 'e', 'n', 'e', 'r', 'a', 't', 'i', 'n', ...</td>\n",
+        "      <td>                                        ['o', 'l']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>983</th>\n",
+        "      <td>            sallies</td>\n",
+        "      <td>               ['s', 'a', 'l', 'l', 'i', 'e', 's']</td>\n",
+        "      <td>                                             ['r']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>984</th>\n",
+        "      <td>              yacht</td>\n",
+        "      <td>                         ['y', 'a', 'c', 'h', 't']</td>\n",
+        "      <td>                                        ['s', 'e']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>985</th>\n",
+        "      <td>            armpits</td>\n",
+        "      <td>               ['a', 'r', 'm', 'p', 'i', 't', 's']</td>\n",
+        "      <td>                                             ['o']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>986</th>\n",
+        "      <td>            oblongs</td>\n",
+        "      <td>               ['o', 'b', 'l', 'o', 'n', 'g', 's']</td>\n",
+        "      <td>                                   ['r', 'i', 'a']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>987</th>\n",
+        "      <td>          developed</td>\n",
+        "      <td>     ['d', 'e', 'v', 'e', 'l', 'o', 'p', 'e', 'd']</td>\n",
+        "      <td>                         ['t', 'a', 'r', 'n', 'i']</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>988</th>\n",
+        "      <td>           demolish</td>\n",
+        "      <td>          ['d', 'e', 'm', 'o', 'l', 'i', 's', 'h']</td>\n",
+        "      <td>                                   ['r', 'a', 't']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>989</th>\n",
+        "      <td>            pincers</td>\n",
+        "      <td>               ['p', 'i', 'n', 'c', 'e', 'r', 's']</td>\n",
+        "      <td>                         ['a', 'o', 't', 'd', 'l']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>990</th>\n",
+        "      <td> telecommunications</td>\n",
+        "      <td> ['t', 'e', 'l', 'e', 'c', 'o', 'm', 'm', 'u', ...</td>\n",
+        "      <td>                                        ['p', 'r']</td>\n",
+        "      <td> 18</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>991</th>\n",
+        "      <td>             dabble</td>\n",
+        "      <td>                    ['d', 'a', 'b', 'b', 'l', 'e']</td>\n",
+        "      <td>                         ['s', 'r', 'i', 'n', 'y']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>992</th>\n",
+        "      <td>          morticing</td>\n",
+        "      <td>     ['m', 'o', 'r', 't', 'i', 'c', 'i', 'n', 'g']</td>\n",
+        "      <td>                              ['a', 's', 'f', 'd']</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>993</th>\n",
+        "      <td>              weals</td>\n",
+        "      <td>                         ['w', 'e', 'a', 'l', 's']</td>\n",
+        "      <td>                         ['r', 'd', 'p', 'm', 'h']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>994</th>\n",
+        "      <td>              dryer</td>\n",
+        "      <td>                         ['d', 'r', 'y', 'e', 'r']</td>\n",
+        "      <td>                                        ['s', 'i']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>995</th>\n",
+        "      <td>     inconclusively</td>\n",
+        "      <td> ['i', 'n', 'c', 'o', 'n', 'c', 'l', 'u', 's', ...</td>\n",
+        "      <td>                                             ['d']</td>\n",
+        "      <td> 14</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>996</th>\n",
+        "      <td>          bubbliest</td>\n",
+        "      <td>     ['_', '_', '_', '_', '_', '_', '_', '_', 't']</td>\n",
+        "      <td> ['n', 'r', 'o', 'c', 'a', 'm', 'h', 'p', 'f', ...</td>\n",
+        "      <td>  1</td>\n",
+        "      <td>  0</td>\n",
+        "      <td> False</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>997</th>\n",
+        "      <td>             graded</td>\n",
+        "      <td>                    ['g', 'r', 'a', 'd', 'e', 'd']</td>\n",
+        "      <td>                    ['s', 'c', 'v', 'y', 't', 'z']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  4</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>998</th>\n",
+        "      <td>           carriage</td>\n",
+        "      <td>          ['c', 'a', 'r', 'r', 'i', 'a', 'g', 'e']</td>\n",
+        "      <td>                                   ['s', 'l', 'd']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>999</th>\n",
+        "      <td>         datelining</td>\n",
+        "      <td> ['d', 'a', 't', 'e', 'l', 'i', 'n', 'i', 'n', ...</td>\n",
+        "      <td>                                        ['o', 's']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "    </tr>\n",
+        "  </tbody>\n",
+        "</table>\n",
+        "<p>1000 rows \u00d7 6 columns</p>\n",
+        "</div>"
+       ],
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 19,
+       "text": [
+        "                 target                                         discovered  \\\n",
+        "0                punned                     ['p', 'u', 'n', 'n', 'e', 'd']   \n",
+        "1                 anode                          ['a', 'n', 'o', 'd', 'e']   \n",
+        "2                passes                     ['p', 'a', 's', 's', 'e', 's']   \n",
+        "3                maxing                     ['m', 'a', 'x', 'i', 'n', 'g']   \n",
+        "4              quadrant           ['q', 'u', 'a', 'd', 'r', 'a', 'n', 't']   \n",
+        "5              polygamy           ['p', 'o', 'l', 'y', 'g', 'a', 'm', 'y']   \n",
+        "6         technologists  ['t', 'e', 'c', 'h', 'n', 'o', 'l', 'o', 'g', ...   \n",
+        "7                tussle                     ['t', 'u', 's', 's', 'l', 'e']   \n",
+        "8            explicitly  ['e', 'x', 'p', 'l', 'i', 'c', 'i', 't', 'l', ...   \n",
+        "9            moderators  ['m', 'o', 'd', 'e', 'r', 'a', 't', 'o', 'r', ...   \n",
+        "10                error                          ['e', 'r', 'r', 'o', 'r']   \n",
+        "11              stamped                ['s', 't', 'a', 'm', 'p', 'e', 'd']   \n",
+        "12                dress                          ['d', 'r', 'e', 's', 's']   \n",
+        "13             truckled           ['t', 'r', 'u', 'c', 'k', 'l', 'e', 'd']   \n",
+        "14        accommodation  ['a', 'c', 'c', 'o', 'm', 'm', 'o', 'd', 'a', ...   \n",
+        "15               reload                     ['r', 'e', 'l', 'o', 'a', 'd']   \n",
+        "16           confounded  ['c', 'o', 'n', 'f', 'o', 'u', 'n', 'd', 'e', ...   \n",
+        "17           racketeers  ['r', 'a', 'c', 'k', 'e', 't', 'e', 'e', 'r', ...   \n",
+        "18          ignoramuses  ['i', 'g', 'n', 'o', 'r', 'a', 'm', 'u', 's', ...   \n",
+        "19                party                          ['p', 'a', 'r', 't', 'y']   \n",
+        "20                 rill                               ['r', 'i', 'l', 'l']   \n",
+        "21               player                     ['p', 'l', 'a', 'y', 'e', 'r']   \n",
+        "22            protester      ['p', 'r', 'o', 't', 'e', 's', 't', 'e', 'r']   \n",
+        "23            asphalted      ['a', 's', 'p', 'h', 'a', 'l', 't', 'e', 'd']   \n",
+        "24             uniforms           ['u', 'n', 'i', 'f', 'o', 'r', 'm', 's']   \n",
+        "25           coniferous  ['c', 'o', 'n', 'i', 'f', 'e', 'r', 'o', 'u', ...   \n",
+        "26           dishearten  ['d', 'i', 's', 'h', 'e', 'a', 'r', 't', 'e', ...   \n",
+        "27                scull                          ['s', 'c', 'u', 'l', 'l']   \n",
+        "28               virgin                     ['v', 'i', 'r', 'g', 'i', 'n']   \n",
+        "29         licentiously  ['l', 'i', 'c', 'e', 'n', 't', 'i', 'o', 'u', ...   \n",
+        "..                  ...                                                ...   \n",
+        "970          grindstone  ['g', 'r', 'i', 'n', 'd', 's', 't', 'o', 'n', ...   \n",
+        "971        bankruptcies  ['b', 'a', 'n', 'k', 'r', 'u', 'p', 't', 'c', ...   \n",
+        "972              smalls                     ['s', 'm', 'a', 'l', 'l', 's']   \n",
+        "973             limping                ['l', 'i', 'm', 'p', 'i', 'n', 'g']   \n",
+        "974         interfacing  ['i', 'n', 't', 'e', 'r', 'f', 'a', 'c', 'i', ...   \n",
+        "975                mint                               ['_', '_', 'n', 't']   \n",
+        "976        romanticises  ['r', 'o', 'm', 'a', 'n', 't', 'i', 'c', 'i', ...   \n",
+        "977            cleavage           ['c', 'l', 'e', 'a', 'v', 'a', 'g', 'e']   \n",
+        "978             revival                ['r', 'e', 'v', 'i', 'v', 'a', 'l']   \n",
+        "979             praying                ['p', 'r', 'a', 'y', 'i', 'n', 'g']   \n",
+        "980              troupe                     ['t', 'r', 'o', 'u', 'p', 'e']   \n",
+        "981              public                     ['p', 'u', 'b', 'l', 'i', 'c']   \n",
+        "982          generating  ['g', 'e', 'n', 'e', 'r', 'a', 't', 'i', 'n', ...   \n",
+        "983             sallies                ['s', 'a', 'l', 'l', 'i', 'e', 's']   \n",
+        "984               yacht                          ['y', 'a', 'c', 'h', 't']   \n",
+        "985             armpits                ['a', 'r', 'm', 'p', 'i', 't', 's']   \n",
+        "986             oblongs                ['o', 'b', 'l', 'o', 'n', 'g', 's']   \n",
+        "987           developed      ['d', 'e', 'v', 'e', 'l', 'o', 'p', 'e', 'd']   \n",
+        "988            demolish           ['d', 'e', 'm', 'o', 'l', 'i', 's', 'h']   \n",
+        "989             pincers                ['p', 'i', 'n', 'c', 'e', 'r', 's']   \n",
+        "990  telecommunications  ['t', 'e', 'l', 'e', 'c', 'o', 'm', 'm', 'u', ...   \n",
+        "991              dabble                     ['d', 'a', 'b', 'b', 'l', 'e']   \n",
+        "992           morticing      ['m', 'o', 'r', 't', 'i', 'c', 'i', 'n', 'g']   \n",
+        "993               weals                          ['w', 'e', 'a', 'l', 's']   \n",
+        "994               dryer                          ['d', 'r', 'y', 'e', 'r']   \n",
+        "995      inconclusively  ['i', 'n', 'c', 'o', 'n', 'c', 'l', 'u', 's', ...   \n",
+        "996           bubbliest      ['_', '_', '_', '_', '_', '_', '_', '_', 't']   \n",
+        "997              graded                     ['g', 'r', 'a', 'd', 'e', 'd']   \n",
+        "998            carriage           ['c', 'a', 'r', 'r', 'i', 'a', 'g', 'e']   \n",
+        "999          datelining  ['d', 'a', 't', 'e', 'l', 'i', 'n', 'i', 'n', ...   \n",
+        "\n",
+        "                                         wrong letters  number of hits  \\\n",
+        "0                            ['s', 'r', 'l', 'a', 'i']               6   \n",
+        "1                                      ['s', 'l', 'b']               5   \n",
+        "2                                           ['l', 'b']               6   \n",
+        "3        ['s', 'r', 'd', 't', 'w', 'l', 'p', 'k', 'c']               6   \n",
+        "4                                                   []               8   \n",
+        "5                                 ['r', 'i', 's', 'd']               8   \n",
+        "6                                                ['r']              13   \n",
+        "7                                                ['a']               6   \n",
+        "8                            ['o', 'a', 'b', 's', 'm']              10   \n",
+        "9                                                ['u']              10   \n",
+        "10                           ['s', 't', 'n', 'l', 'y']               5   \n",
+        "11                           ['r', 'i', 'l', 'b', 'c']               7   \n",
+        "12                                                  []               5   \n",
+        "13                           ['s', 'i', 'a', 'b', 'p']               8   \n",
+        "14                                          ['s', 'g']              13   \n",
+        "15                                          ['s', 'i']               6   \n",
+        "16                                               ['p']              10   \n",
+        "17                                          ['o', 'l']              10   \n",
+        "18                                               ['l']              11   \n",
+        "19                                ['s', 'e', 'n', 'd']               5   \n",
+        "20                      ['e', 's', 'a', 'o', 'u', 'n']               4   \n",
+        "21                                          ['s', 'm']               6   \n",
+        "22                                     ['i', 'd', 'l']               9   \n",
+        "23                                          ['r', 'i']               9   \n",
+        "24                                     ['a', 't', 'p']               8   \n",
+        "25                                                  []              10   \n",
+        "26                                     ['o', 'l', 'g']              10   \n",
+        "27                           ['e', 'a', 'o', 'i', 'n']               5   \n",
+        "28                                     ['s', 'a', 'd']               6   \n",
+        "29                                                  []              12   \n",
+        "..                                                 ...             ...   \n",
+        "970                                    ['a', 'u', 'p']              10   \n",
+        "971                                                 []              12   \n",
+        "972                               ['e', 't', 'k', 'w']               6   \n",
+        "973                ['s', 'r', 'e', 'a', 'o', 'u', 'k']               7   \n",
+        "974                               ['o', 'l', 'd', 's']              11   \n",
+        "975  ['e', 's', 'a', 'o', 'u', 'd', 'k', 'l', 'p', ...               2   \n",
+        "976                                              ['d']              12   \n",
+        "977                                         ['r', 's']               8   \n",
+        "978                               ['s', 'n', 'c', 'm']               7   \n",
+        "979                               ['s', 'd', 'c', 'b']               7   \n",
+        "980                               ['s', 'g', 'a', 'l']               6   \n",
+        "981                     ['s', 'r', 'd', 'n', 'a', 'e']               6   \n",
+        "982                                         ['o', 'l']              10   \n",
+        "983                                              ['r']               7   \n",
+        "984                                         ['s', 'e']               5   \n",
+        "985                                              ['o']               7   \n",
+        "986                                    ['r', 'i', 'a']               7   \n",
+        "987                          ['t', 'a', 'r', 'n', 'i']               9   \n",
+        "988                                    ['r', 'a', 't']               8   \n",
+        "989                          ['a', 'o', 't', 'd', 'l']               7   \n",
+        "990                                         ['p', 'r']              18   \n",
+        "991                          ['s', 'r', 'i', 'n', 'y']               6   \n",
+        "992                               ['a', 's', 'f', 'd']               9   \n",
+        "993                          ['r', 'd', 'p', 'm', 'h']               5   \n",
+        "994                                         ['s', 'i']               5   \n",
+        "995                                              ['d']              14   \n",
+        "996  ['n', 'r', 'o', 'c', 'a', 'm', 'h', 'p', 'f', ...               1   \n",
+        "997                     ['s', 'c', 'v', 'y', 't', 'z']               6   \n",
+        "998                                    ['s', 'l', 'd']               8   \n",
+        "999                                         ['o', 's']              10   \n",
+        "\n",
+        "     lives remaining game won  \n",
+        "0                  5     True  \n",
+        "1                  7     True  \n",
+        "2                  8     True  \n",
+        "3                  1     True  \n",
+        "4                 10     True  \n",
+        "5                  6     True  \n",
+        "6                  9     True  \n",
+        "7                  9     True  \n",
+        "8                  5     True  \n",
+        "9                  9     True  \n",
+        "10                 5     True  \n",
+        "11                 5     True  \n",
+        "12                10     True  \n",
+        "13                 5     True  \n",
+        "14                 8     True  \n",
+        "15                 8     True  \n",
+        "16                 9     True  \n",
+        "17                 8     True  \n",
+        "18                 9     True  \n",
+        "19                 6     True  \n",
+        "20                 4     True  \n",
+        "21                 8     True  \n",
+        "22                 7     True  \n",
+        "23                 8     True  \n",
+        "24                 7     True  \n",
+        "25                10     True  \n",
+        "26                 7     True  \n",
+        "27                 5     True  \n",
+        "28                 7     True  \n",
+        "29                10     True  \n",
+        "..               ...      ...  \n",
+        "970                7     True  \n",
+        "971               10     True  \n",
+        "972                6     True  \n",
+        "973                3     True  \n",
+        "974                6     True  \n",
+        "975                0    False  \n",
+        "976                9     True  \n",
+        "977                8     True  \n",
+        "978                6     True  \n",
+        "979                6     True  \n",
+        "980                6     True  \n",
+        "981                4     True  \n",
+        "982                8     True  \n",
+        "983                9     True  \n",
+        "984                8     True  \n",
+        "985                9     True  \n",
+        "986                7     True  \n",
+        "987                5     True  \n",
+        "988                7     True  \n",
+        "989                5     True  \n",
+        "990                8     True  \n",
+        "991                5     True  \n",
+        "992                6     True  \n",
+        "993                5     True  \n",
+        "994                8     True  \n",
+        "995                9     True  \n",
+        "996                0    False  \n",
+        "997                4     True  \n",
+        "998                7     True  \n",
+        "999                8     True  \n",
+        "\n",
+        "[1000 rows x 6 columns]"
+       ]
+      }
+     ],
+     "prompt_number": 19
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "adaptive_split['word length'] = adaptive_split.apply(lambda r: len(r['target']), axis=1)\n",
+      "adaptive_split"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "html": [
+        "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
+        "<table border=\"1\" class=\"dataframe\">\n",
+        "  <thead>\n",
+        "    <tr style=\"text-align: right;\">\n",
+        "      <th></th>\n",
+        "      <th>target</th>\n",
+        "      <th>discovered</th>\n",
+        "      <th>wrong letters</th>\n",
+        "      <th>number of hits</th>\n",
+        "      <th>lives remaining</th>\n",
+        "      <th>game won</th>\n",
+        "      <th>word length</th>\n",
+        "    </tr>\n",
+        "  </thead>\n",
+        "  <tbody>\n",
+        "    <tr>\n",
+        "      <th>0  </th>\n",
+        "      <td>             punned</td>\n",
+        "      <td>                    ['p', 'u', 'n', 'n', 'e', 'd']</td>\n",
+        "      <td>                         ['s', 'r', 'l', 'a', 'i']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>1  </th>\n",
+        "      <td>              anode</td>\n",
+        "      <td>                         ['a', 'n', 'o', 'd', 'e']</td>\n",
+        "      <td>                                   ['s', 'l', 'b']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>2  </th>\n",
+        "      <td>             passes</td>\n",
+        "      <td>                    ['p', 'a', 's', 's', 'e', 's']</td>\n",
+        "      <td>                                        ['l', 'b']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>3  </th>\n",
+        "      <td>             maxing</td>\n",
+        "      <td>                    ['m', 'a', 'x', 'i', 'n', 'g']</td>\n",
+        "      <td>     ['s', 'r', 'd', 't', 'w', 'l', 'p', 'k', 'c']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  1</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>4  </th>\n",
+        "      <td>           quadrant</td>\n",
+        "      <td>          ['q', 'u', 'a', 'd', 'r', 'a', 'n', 't']</td>\n",
+        "      <td>                                                []</td>\n",
+        "      <td>  8</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>5  </th>\n",
+        "      <td>           polygamy</td>\n",
+        "      <td>          ['p', 'o', 'l', 'y', 'g', 'a', 'm', 'y']</td>\n",
+        "      <td>                              ['r', 'i', 's', 'd']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>6  </th>\n",
+        "      <td>      technologists</td>\n",
+        "      <td> ['t', 'e', 'c', 'h', 'n', 'o', 'l', 'o', 'g', ...</td>\n",
+        "      <td>                                             ['r']</td>\n",
+        "      <td> 13</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 13</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>7  </th>\n",
+        "      <td>             tussle</td>\n",
+        "      <td>                    ['t', 'u', 's', 's', 'l', 'e']</td>\n",
+        "      <td>                                             ['a']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>8  </th>\n",
+        "      <td>         explicitly</td>\n",
+        "      <td> ['e', 'x', 'p', 'l', 'i', 'c', 'i', 't', 'l', ...</td>\n",
+        "      <td>                         ['o', 'a', 'b', 's', 'm']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>9  </th>\n",
+        "      <td>         moderators</td>\n",
+        "      <td> ['m', 'o', 'd', 'e', 'r', 'a', 't', 'o', 'r', ...</td>\n",
+        "      <td>                                             ['u']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>10 </th>\n",
+        "      <td>              error</td>\n",
+        "      <td>                         ['e', 'r', 'r', 'o', 'r']</td>\n",
+        "      <td>                         ['s', 't', 'n', 'l', 'y']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>11 </th>\n",
+        "      <td>            stamped</td>\n",
+        "      <td>               ['s', 't', 'a', 'm', 'p', 'e', 'd']</td>\n",
+        "      <td>                         ['r', 'i', 'l', 'b', 'c']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>12 </th>\n",
+        "      <td>              dress</td>\n",
+        "      <td>                         ['d', 'r', 'e', 's', 's']</td>\n",
+        "      <td>                                                []</td>\n",
+        "      <td>  5</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>13 </th>\n",
+        "      <td>           truckled</td>\n",
+        "      <td>          ['t', 'r', 'u', 'c', 'k', 'l', 'e', 'd']</td>\n",
+        "      <td>                         ['s', 'i', 'a', 'b', 'p']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>14 </th>\n",
+        "      <td>      accommodation</td>\n",
+        "      <td> ['a', 'c', 'c', 'o', 'm', 'm', 'o', 'd', 'a', ...</td>\n",
+        "      <td>                                        ['s', 'g']</td>\n",
+        "      <td> 13</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 13</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>15 </th>\n",
+        "      <td>             reload</td>\n",
+        "      <td>                    ['r', 'e', 'l', 'o', 'a', 'd']</td>\n",
+        "      <td>                                        ['s', 'i']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>16 </th>\n",
+        "      <td>         confounded</td>\n",
+        "      <td> ['c', 'o', 'n', 'f', 'o', 'u', 'n', 'd', 'e', ...</td>\n",
+        "      <td>                                             ['p']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>17 </th>\n",
+        "      <td>         racketeers</td>\n",
+        "      <td> ['r', 'a', 'c', 'k', 'e', 't', 'e', 'e', 'r', ...</td>\n",
+        "      <td>                                        ['o', 'l']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>18 </th>\n",
+        "      <td>        ignoramuses</td>\n",
+        "      <td> ['i', 'g', 'n', 'o', 'r', 'a', 'm', 'u', 's', ...</td>\n",
+        "      <td>                                             ['l']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 11</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>19 </th>\n",
+        "      <td>              party</td>\n",
+        "      <td>                         ['p', 'a', 'r', 't', 'y']</td>\n",
+        "      <td>                              ['s', 'e', 'n', 'd']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>20 </th>\n",
+        "      <td>               rill</td>\n",
+        "      <td>                              ['r', 'i', 'l', 'l']</td>\n",
+        "      <td>                    ['e', 's', 'a', 'o', 'u', 'n']</td>\n",
+        "      <td>  4</td>\n",
+        "      <td>  4</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  4</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>21 </th>\n",
+        "      <td>             player</td>\n",
+        "      <td>                    ['p', 'l', 'a', 'y', 'e', 'r']</td>\n",
+        "      <td>                                        ['s', 'm']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>22 </th>\n",
+        "      <td>          protester</td>\n",
+        "      <td>     ['p', 'r', 'o', 't', 'e', 's', 't', 'e', 'r']</td>\n",
+        "      <td>                                   ['i', 'd', 'l']</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  9</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>23 </th>\n",
+        "      <td>          asphalted</td>\n",
+        "      <td>     ['a', 's', 'p', 'h', 'a', 'l', 't', 'e', 'd']</td>\n",
+        "      <td>                                        ['r', 'i']</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  9</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>24 </th>\n",
+        "      <td>           uniforms</td>\n",
+        "      <td>          ['u', 'n', 'i', 'f', 'o', 'r', 'm', 's']</td>\n",
+        "      <td>                                   ['a', 't', 'p']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>25 </th>\n",
+        "      <td>         coniferous</td>\n",
+        "      <td> ['c', 'o', 'n', 'i', 'f', 'e', 'r', 'o', 'u', ...</td>\n",
+        "      <td>                                                []</td>\n",
+        "      <td> 10</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>26 </th>\n",
+        "      <td>         dishearten</td>\n",
+        "      <td> ['d', 'i', 's', 'h', 'e', 'a', 'r', 't', 'e', ...</td>\n",
+        "      <td>                                   ['o', 'l', 'g']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>27 </th>\n",
+        "      <td>              scull</td>\n",
+        "      <td>                         ['s', 'c', 'u', 'l', 'l']</td>\n",
+        "      <td>                         ['e', 'a', 'o', 'i', 'n']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>28 </th>\n",
+        "      <td>             virgin</td>\n",
+        "      <td>                    ['v', 'i', 'r', 'g', 'i', 'n']</td>\n",
+        "      <td>                                   ['s', 'a', 'd']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>29 </th>\n",
+        "      <td>       licentiously</td>\n",
+        "      <td> ['l', 'i', 'c', 'e', 'n', 't', 'i', 'o', 'u', ...</td>\n",
+        "      <td>                                                []</td>\n",
+        "      <td> 12</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 12</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>...</th>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "      <td>...</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>970</th>\n",
+        "      <td>         grindstone</td>\n",
+        "      <td> ['g', 'r', 'i', 'n', 'd', 's', 't', 'o', 'n', ...</td>\n",
+        "      <td>                                   ['a', 'u', 'p']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>971</th>\n",
+        "      <td>       bankruptcies</td>\n",
+        "      <td> ['b', 'a', 'n', 'k', 'r', 'u', 'p', 't', 'c', ...</td>\n",
+        "      <td>                                                []</td>\n",
+        "      <td> 12</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 12</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>972</th>\n",
+        "      <td>             smalls</td>\n",
+        "      <td>                    ['s', 'm', 'a', 'l', 'l', 's']</td>\n",
+        "      <td>                              ['e', 't', 'k', 'w']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>973</th>\n",
+        "      <td>            limping</td>\n",
+        "      <td>               ['l', 'i', 'm', 'p', 'i', 'n', 'g']</td>\n",
+        "      <td>               ['s', 'r', 'e', 'a', 'o', 'u', 'k']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  3</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>974</th>\n",
+        "      <td>        interfacing</td>\n",
+        "      <td> ['i', 'n', 't', 'e', 'r', 'f', 'a', 'c', 'i', ...</td>\n",
+        "      <td>                              ['o', 'l', 'd', 's']</td>\n",
+        "      <td> 11</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 11</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>975</th>\n",
+        "      <td>               mint</td>\n",
+        "      <td>                              ['_', '_', 'n', 't']</td>\n",
+        "      <td> ['e', 's', 'a', 'o', 'u', 'd', 'k', 'l', 'p', ...</td>\n",
+        "      <td>  2</td>\n",
+        "      <td>  0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  4</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>976</th>\n",
+        "      <td>       romanticises</td>\n",
+        "      <td> ['r', 'o', 'm', 'a', 'n', 't', 'i', 'c', 'i', ...</td>\n",
+        "      <td>                                             ['d']</td>\n",
+        "      <td> 12</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 12</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>977</th>\n",
+        "      <td>           cleavage</td>\n",
+        "      <td>          ['c', 'l', 'e', 'a', 'v', 'a', 'g', 'e']</td>\n",
+        "      <td>                                        ['r', 's']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>978</th>\n",
+        "      <td>            revival</td>\n",
+        "      <td>               ['r', 'e', 'v', 'i', 'v', 'a', 'l']</td>\n",
+        "      <td>                              ['s', 'n', 'c', 'm']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>979</th>\n",
+        "      <td>            praying</td>\n",
+        "      <td>               ['p', 'r', 'a', 'y', 'i', 'n', 'g']</td>\n",
+        "      <td>                              ['s', 'd', 'c', 'b']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>980</th>\n",
+        "      <td>             troupe</td>\n",
+        "      <td>                    ['t', 'r', 'o', 'u', 'p', 'e']</td>\n",
+        "      <td>                              ['s', 'g', 'a', 'l']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>981</th>\n",
+        "      <td>             public</td>\n",
+        "      <td>                    ['p', 'u', 'b', 'l', 'i', 'c']</td>\n",
+        "      <td>                    ['s', 'r', 'd', 'n', 'a', 'e']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  4</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>982</th>\n",
+        "      <td>         generating</td>\n",
+        "      <td> ['g', 'e', 'n', 'e', 'r', 'a', 't', 'i', 'n', ...</td>\n",
+        "      <td>                                        ['o', 'l']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>983</th>\n",
+        "      <td>            sallies</td>\n",
+        "      <td>               ['s', 'a', 'l', 'l', 'i', 'e', 's']</td>\n",
+        "      <td>                                             ['r']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>984</th>\n",
+        "      <td>              yacht</td>\n",
+        "      <td>                         ['y', 'a', 'c', 'h', 't']</td>\n",
+        "      <td>                                        ['s', 'e']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>985</th>\n",
+        "      <td>            armpits</td>\n",
+        "      <td>               ['a', 'r', 'm', 'p', 'i', 't', 's']</td>\n",
+        "      <td>                                             ['o']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>986</th>\n",
+        "      <td>            oblongs</td>\n",
+        "      <td>               ['o', 'b', 'l', 'o', 'n', 'g', 's']</td>\n",
+        "      <td>                                   ['r', 'i', 'a']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>987</th>\n",
+        "      <td>          developed</td>\n",
+        "      <td>     ['d', 'e', 'v', 'e', 'l', 'o', 'p', 'e', 'd']</td>\n",
+        "      <td>                         ['t', 'a', 'r', 'n', 'i']</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  9</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>988</th>\n",
+        "      <td>           demolish</td>\n",
+        "      <td>          ['d', 'e', 'm', 'o', 'l', 'i', 's', 'h']</td>\n",
+        "      <td>                                   ['r', 'a', 't']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>989</th>\n",
+        "      <td>            pincers</td>\n",
+        "      <td>               ['p', 'i', 'n', 'c', 'e', 'r', 's']</td>\n",
+        "      <td>                         ['a', 'o', 't', 'd', 'l']</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  7</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>990</th>\n",
+        "      <td> telecommunications</td>\n",
+        "      <td> ['t', 'e', 'l', 'e', 'c', 'o', 'm', 'm', 'u', ...</td>\n",
+        "      <td>                                        ['p', 'r']</td>\n",
+        "      <td> 18</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 18</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>991</th>\n",
+        "      <td>             dabble</td>\n",
+        "      <td>                    ['d', 'a', 'b', 'b', 'l', 'e']</td>\n",
+        "      <td>                         ['s', 'r', 'i', 'n', 'y']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>992</th>\n",
+        "      <td>          morticing</td>\n",
+        "      <td>     ['m', 'o', 'r', 't', 'i', 'c', 'i', 'n', 'g']</td>\n",
+        "      <td>                              ['a', 's', 'f', 'd']</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  9</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>993</th>\n",
+        "      <td>              weals</td>\n",
+        "      <td>                         ['w', 'e', 'a', 'l', 's']</td>\n",
+        "      <td>                         ['r', 'd', 'p', 'm', 'h']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>994</th>\n",
+        "      <td>              dryer</td>\n",
+        "      <td>                         ['d', 'r', 'y', 'e', 'r']</td>\n",
+        "      <td>                                        ['s', 'i']</td>\n",
+        "      <td>  5</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  5</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>995</th>\n",
+        "      <td>     inconclusively</td>\n",
+        "      <td> ['i', 'n', 'c', 'o', 'n', 'c', 'l', 'u', 's', ...</td>\n",
+        "      <td>                                             ['d']</td>\n",
+        "      <td> 14</td>\n",
+        "      <td>  9</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 14</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>996</th>\n",
+        "      <td>          bubbliest</td>\n",
+        "      <td>     ['_', '_', '_', '_', '_', '_', '_', '_', 't']</td>\n",
+        "      <td> ['n', 'r', 'o', 'c', 'a', 'm', 'h', 'p', 'f', ...</td>\n",
+        "      <td>  1</td>\n",
+        "      <td>  0</td>\n",
+        "      <td> False</td>\n",
+        "      <td>  9</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>997</th>\n",
+        "      <td>             graded</td>\n",
+        "      <td>                    ['g', 'r', 'a', 'd', 'e', 'd']</td>\n",
+        "      <td>                    ['s', 'c', 'v', 'y', 't', 'z']</td>\n",
+        "      <td>  6</td>\n",
+        "      <td>  4</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  6</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>998</th>\n",
+        "      <td>           carriage</td>\n",
+        "      <td>          ['c', 'a', 'r', 'r', 'i', 'a', 'g', 'e']</td>\n",
+        "      <td>                                   ['s', 'l', 'd']</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  7</td>\n",
+        "      <td>  True</td>\n",
+        "      <td>  8</td>\n",
+        "    </tr>\n",
+        "    <tr>\n",
+        "      <th>999</th>\n",
+        "      <td>         datelining</td>\n",
+        "      <td> ['d', 'a', 't', 'e', 'l', 'i', 'n', 'i', 'n', ...</td>\n",
+        "      <td>                                        ['o', 's']</td>\n",
+        "      <td> 10</td>\n",
+        "      <td>  8</td>\n",
+        "      <td>  True</td>\n",
+        "      <td> 10</td>\n",
+        "    </tr>\n",
+        "  </tbody>\n",
+        "</table>\n",
+        "<p>1000 rows \u00d7 7 columns</p>\n",
+        "</div>"
+       ],
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 20,
+       "text": [
+        "                 target                                         discovered  \\\n",
+        "0                punned                     ['p', 'u', 'n', 'n', 'e', 'd']   \n",
+        "1                 anode                          ['a', 'n', 'o', 'd', 'e']   \n",
+        "2                passes                     ['p', 'a', 's', 's', 'e', 's']   \n",
+        "3                maxing                     ['m', 'a', 'x', 'i', 'n', 'g']   \n",
+        "4              quadrant           ['q', 'u', 'a', 'd', 'r', 'a', 'n', 't']   \n",
+        "5              polygamy           ['p', 'o', 'l', 'y', 'g', 'a', 'm', 'y']   \n",
+        "6         technologists  ['t', 'e', 'c', 'h', 'n', 'o', 'l', 'o', 'g', ...   \n",
+        "7                tussle                     ['t', 'u', 's', 's', 'l', 'e']   \n",
+        "8            explicitly  ['e', 'x', 'p', 'l', 'i', 'c', 'i', 't', 'l', ...   \n",
+        "9            moderators  ['m', 'o', 'd', 'e', 'r', 'a', 't', 'o', 'r', ...   \n",
+        "10                error                          ['e', 'r', 'r', 'o', 'r']   \n",
+        "11              stamped                ['s', 't', 'a', 'm', 'p', 'e', 'd']   \n",
+        "12                dress                          ['d', 'r', 'e', 's', 's']   \n",
+        "13             truckled           ['t', 'r', 'u', 'c', 'k', 'l', 'e', 'd']   \n",
+        "14        accommodation  ['a', 'c', 'c', 'o', 'm', 'm', 'o', 'd', 'a', ...   \n",
+        "15               reload                     ['r', 'e', 'l', 'o', 'a', 'd']   \n",
+        "16           confounded  ['c', 'o', 'n', 'f', 'o', 'u', 'n', 'd', 'e', ...   \n",
+        "17           racketeers  ['r', 'a', 'c', 'k', 'e', 't', 'e', 'e', 'r', ...   \n",
+        "18          ignoramuses  ['i', 'g', 'n', 'o', 'r', 'a', 'm', 'u', 's', ...   \n",
+        "19                party                          ['p', 'a', 'r', 't', 'y']   \n",
+        "20                 rill                               ['r', 'i', 'l', 'l']   \n",
+        "21               player                     ['p', 'l', 'a', 'y', 'e', 'r']   \n",
+        "22            protester      ['p', 'r', 'o', 't', 'e', 's', 't', 'e', 'r']   \n",
+        "23            asphalted      ['a', 's', 'p', 'h', 'a', 'l', 't', 'e', 'd']   \n",
+        "24             uniforms           ['u', 'n', 'i', 'f', 'o', 'r', 'm', 's']   \n",
+        "25           coniferous  ['c', 'o', 'n', 'i', 'f', 'e', 'r', 'o', 'u', ...   \n",
+        "26           dishearten  ['d', 'i', 's', 'h', 'e', 'a', 'r', 't', 'e', ...   \n",
+        "27                scull                          ['s', 'c', 'u', 'l', 'l']   \n",
+        "28               virgin                     ['v', 'i', 'r', 'g', 'i', 'n']   \n",
+        "29         licentiously  ['l', 'i', 'c', 'e', 'n', 't', 'i', 'o', 'u', ...   \n",
+        "..                  ...                                                ...   \n",
+        "970          grindstone  ['g', 'r', 'i', 'n', 'd', 's', 't', 'o', 'n', ...   \n",
+        "971        bankruptcies  ['b', 'a', 'n', 'k', 'r', 'u', 'p', 't', 'c', ...   \n",
+        "972              smalls                     ['s', 'm', 'a', 'l', 'l', 's']   \n",
+        "973             limping                ['l', 'i', 'm', 'p', 'i', 'n', 'g']   \n",
+        "974         interfacing  ['i', 'n', 't', 'e', 'r', 'f', 'a', 'c', 'i', ...   \n",
+        "975                mint                               ['_', '_', 'n', 't']   \n",
+        "976        romanticises  ['r', 'o', 'm', 'a', 'n', 't', 'i', 'c', 'i', ...   \n",
+        "977            cleavage           ['c', 'l', 'e', 'a', 'v', 'a', 'g', 'e']   \n",
+        "978             revival                ['r', 'e', 'v', 'i', 'v', 'a', 'l']   \n",
+        "979             praying                ['p', 'r', 'a', 'y', 'i', 'n', 'g']   \n",
+        "980              troupe                     ['t', 'r', 'o', 'u', 'p', 'e']   \n",
+        "981              public                     ['p', 'u', 'b', 'l', 'i', 'c']   \n",
+        "982          generating  ['g', 'e', 'n', 'e', 'r', 'a', 't', 'i', 'n', ...   \n",
+        "983             sallies                ['s', 'a', 'l', 'l', 'i', 'e', 's']   \n",
+        "984               yacht                          ['y', 'a', 'c', 'h', 't']   \n",
+        "985             armpits                ['a', 'r', 'm', 'p', 'i', 't', 's']   \n",
+        "986             oblongs                ['o', 'b', 'l', 'o', 'n', 'g', 's']   \n",
+        "987           developed      ['d', 'e', 'v', 'e', 'l', 'o', 'p', 'e', 'd']   \n",
+        "988            demolish           ['d', 'e', 'm', 'o', 'l', 'i', 's', 'h']   \n",
+        "989             pincers                ['p', 'i', 'n', 'c', 'e', 'r', 's']   \n",
+        "990  telecommunications  ['t', 'e', 'l', 'e', 'c', 'o', 'm', 'm', 'u', ...   \n",
+        "991              dabble                     ['d', 'a', 'b', 'b', 'l', 'e']   \n",
+        "992           morticing      ['m', 'o', 'r', 't', 'i', 'c', 'i', 'n', 'g']   \n",
+        "993               weals                          ['w', 'e', 'a', 'l', 's']   \n",
+        "994               dryer                          ['d', 'r', 'y', 'e', 'r']   \n",
+        "995      inconclusively  ['i', 'n', 'c', 'o', 'n', 'c', 'l', 'u', 's', ...   \n",
+        "996           bubbliest      ['_', '_', '_', '_', '_', '_', '_', '_', 't']   \n",
+        "997              graded                     ['g', 'r', 'a', 'd', 'e', 'd']   \n",
+        "998            carriage           ['c', 'a', 'r', 'r', 'i', 'a', 'g', 'e']   \n",
+        "999          datelining  ['d', 'a', 't', 'e', 'l', 'i', 'n', 'i', 'n', ...   \n",
+        "\n",
+        "                                         wrong letters  number of hits  \\\n",
+        "0                            ['s', 'r', 'l', 'a', 'i']               6   \n",
+        "1                                      ['s', 'l', 'b']               5   \n",
+        "2                                           ['l', 'b']               6   \n",
+        "3        ['s', 'r', 'd', 't', 'w', 'l', 'p', 'k', 'c']               6   \n",
+        "4                                                   []               8   \n",
+        "5                                 ['r', 'i', 's', 'd']               8   \n",
+        "6                                                ['r']              13   \n",
+        "7                                                ['a']               6   \n",
+        "8                            ['o', 'a', 'b', 's', 'm']              10   \n",
+        "9                                                ['u']              10   \n",
+        "10                           ['s', 't', 'n', 'l', 'y']               5   \n",
+        "11                           ['r', 'i', 'l', 'b', 'c']               7   \n",
+        "12                                                  []               5   \n",
+        "13                           ['s', 'i', 'a', 'b', 'p']               8   \n",
+        "14                                          ['s', 'g']              13   \n",
+        "15                                          ['s', 'i']               6   \n",
+        "16                                               ['p']              10   \n",
+        "17                                          ['o', 'l']              10   \n",
+        "18                                               ['l']              11   \n",
+        "19                                ['s', 'e', 'n', 'd']               5   \n",
+        "20                      ['e', 's', 'a', 'o', 'u', 'n']               4   \n",
+        "21                                          ['s', 'm']               6   \n",
+        "22                                     ['i', 'd', 'l']               9   \n",
+        "23                                          ['r', 'i']               9   \n",
+        "24                                     ['a', 't', 'p']               8   \n",
+        "25                                                  []              10   \n",
+        "26                                     ['o', 'l', 'g']              10   \n",
+        "27                           ['e', 'a', 'o', 'i', 'n']               5   \n",
+        "28                                     ['s', 'a', 'd']               6   \n",
+        "29                                                  []              12   \n",
+        "..                                                 ...             ...   \n",
+        "970                                    ['a', 'u', 'p']              10   \n",
+        "971                                                 []              12   \n",
+        "972                               ['e', 't', 'k', 'w']               6   \n",
+        "973                ['s', 'r', 'e', 'a', 'o', 'u', 'k']               7   \n",
+        "974                               ['o', 'l', 'd', 's']              11   \n",
+        "975  ['e', 's', 'a', 'o', 'u', 'd', 'k', 'l', 'p', ...               2   \n",
+        "976                                              ['d']              12   \n",
+        "977                                         ['r', 's']               8   \n",
+        "978                               ['s', 'n', 'c', 'm']               7   \n",
+        "979                               ['s', 'd', 'c', 'b']               7   \n",
+        "980                               ['s', 'g', 'a', 'l']               6   \n",
+        "981                     ['s', 'r', 'd', 'n', 'a', 'e']               6   \n",
+        "982                                         ['o', 'l']              10   \n",
+        "983                                              ['r']               7   \n",
+        "984                                         ['s', 'e']               5   \n",
+        "985                                              ['o']               7   \n",
+        "986                                    ['r', 'i', 'a']               7   \n",
+        "987                          ['t', 'a', 'r', 'n', 'i']               9   \n",
+        "988                                    ['r', 'a', 't']               8   \n",
+        "989                          ['a', 'o', 't', 'd', 'l']               7   \n",
+        "990                                         ['p', 'r']              18   \n",
+        "991                          ['s', 'r', 'i', 'n', 'y']               6   \n",
+        "992                               ['a', 's', 'f', 'd']               9   \n",
+        "993                          ['r', 'd', 'p', 'm', 'h']               5   \n",
+        "994                                         ['s', 'i']               5   \n",
+        "995                                              ['d']              14   \n",
+        "996  ['n', 'r', 'o', 'c', 'a', 'm', 'h', 'p', 'f', ...               1   \n",
+        "997                     ['s', 'c', 'v', 'y', 't', 'z']               6   \n",
+        "998                                    ['s', 'l', 'd']               8   \n",
+        "999                                         ['o', 's']              10   \n",
+        "\n",
+        "     lives remaining game won  word length  \n",
+        "0                  5     True            6  \n",
+        "1                  7     True            5  \n",
+        "2                  8     True            6  \n",
+        "3                  1     True            6  \n",
+        "4                 10     True            8  \n",
+        "5                  6     True            8  \n",
+        "6                  9     True           13  \n",
+        "7                  9     True            6  \n",
+        "8                  5     True           10  \n",
+        "9                  9     True           10  \n",
+        "10                 5     True            5  \n",
+        "11                 5     True            7  \n",
+        "12                10     True            5  \n",
+        "13                 5     True            8  \n",
+        "14                 8     True           13  \n",
+        "15                 8     True            6  \n",
+        "16                 9     True           10  \n",
+        "17                 8     True           10  \n",
+        "18                 9     True           11  \n",
+        "19                 6     True            5  \n",
+        "20                 4     True            4  \n",
+        "21                 8     True            6  \n",
+        "22                 7     True            9  \n",
+        "23                 8     True            9  \n",
+        "24                 7     True            8  \n",
+        "25                10     True           10  \n",
+        "26                 7     True           10  \n",
+        "27                 5     True            5  \n",
+        "28                 7     True            6  \n",
+        "29                10     True           12  \n",
+        "..               ...      ...          ...  \n",
+        "970                7     True           10  \n",
+        "971               10     True           12  \n",
+        "972                6     True            6  \n",
+        "973                3     True            7  \n",
+        "974                6     True           11  \n",
+        "975                0    False            4  \n",
+        "976                9     True           12  \n",
+        "977                8     True            8  \n",
+        "978                6     True            7  \n",
+        "979                6     True            7  \n",
+        "980                6     True            6  \n",
+        "981                4     True            6  \n",
+        "982                8     True           10  \n",
+        "983                9     True            7  \n",
+        "984                8     True            5  \n",
+        "985                9     True            7  \n",
+        "986                7     True            7  \n",
+        "987                5     True            9  \n",
+        "988                7     True            8  \n",
+        "989                5     True            7  \n",
+        "990                8     True           18  \n",
+        "991                5     True            6  \n",
+        "992                6     True            9  \n",
+        "993                5     True            5  \n",
+        "994                8     True            5  \n",
+        "995                9     True           14  \n",
+        "996                0    False            9  \n",
+        "997                4     True            6  \n",
+        "998                7     True            8  \n",
+        "999                8     True           10  \n",
+        "\n",
+        "[1000 rows x 7 columns]"
+       ]
+      }
+     ],
+     "prompt_number": 20
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "adaptive_split['lives remaining'].hist()"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 21,
+       "text": [
+        "<matplotlib.axes.AxesSubplot at 0x7f1586ed5470>"
+       ]
+      },
+      {
+       "metadata": {},
+       "output_type": "display_data",
+       "png": "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\nLwAAAABJRU5ErkJggg==\n",
+       "text": [
+        "<matplotlib.figure.Figure at 0x7f1586eb5da0>"
+       ]
+      }
+     ],
+     "prompt_number": 21
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "adaptive_split.groupby('lives remaining').size()"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 22,
+       "text": [
+        "lives remaining\n",
+        "0                   19\n",
+        "1                    9\n",
+        "2                   22\n",
+        "3                   56\n",
+        "4                   68\n",
+        "5                  105\n",
+        "6                  165\n",
+        "7                  172\n",
+        "8                  183\n",
+        "9                  124\n",
+        "10                  77\n",
+        "dtype: int64"
+       ]
+      }
+     ],
+     "prompt_number": 22
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 75
+    }
+   ],
+   "metadata": {}
+  }
+ ]
+}
\ No newline at end of file
diff --git a/hangman/06-hangman-logging.ipynb b/hangman/06-hangman-logging.ipynb
deleted file mode 100644 (file)
index b14dd0f..0000000
+++ /dev/null
@@ -1,5128 +0,0 @@
-{
- "metadata": {
-  "name": "",
-  "signature": "sha256:319787fef945fe728683c1bd9cbdb783efff5e79fec8332f433ebca77395f16d"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
-  {
-   "cells": [
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "from hangman import *\n",
-      "import csv"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 5
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "with open('fixed_alphabetical.csv', 'w', newline='') as csvfile:\n",
-      "    gamewriter = csv.writer(csvfile)\n",
-      "    gamewriter.writerow([\"target\", \"discovered\", \"wrong letters\", \"number of hits\", \"lives remaining\", \"game won\"])\n",
-      "    for _ in range(100):\n",
-      "        g = Game(random.choice(WORDS), player=PlayerAlphabetical())\n",
-      "        g.play_game()\n",
-      "        gamewriter.writerow([g.target, g.discovered, g.wrong_letters, \n",
-      "                                len([l for l in g.discovered if l != '_']),\n",
-      "                                g.lives, g.game_won])"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 63
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "players = [(PlayerAlphabetical, None, 'fixed_alphabetical.csv'), \n",
-      "           (PlayerAlphabeticalReversed, None, 'fixed_alphabetical_reversed.csv'), \n",
-      "           (PlayerFreqOrdered, None, 'fixed_order.csv'),\n",
-      "           (PlayerDictFreqOrdered, None, 'fixed_dict_order.csv'),\n",
-      "           (PlayerAdaptiveLength, WORDS, 'adaptive_length.csv'),\n",
-      "           (PlayerAdaptiveIncludedLetters, WORDS, 'adaptive_included.csv'),\n",
-      "           (PlayerAdaptiveExcludedLetters, WORDS, 'adaptive_excluded.csv'),\n",
-      "           (PlayerAdaptivePattern, WORDS, 'adaptive_pattern.csv'),\n",
-      "           (PlayerAdaptiveSplit, WORDS, 'adaptive_split.csv')]\n",
-      "\n",
-      "games_per_player = 1000\n",
-      "\n",
-      "for p, a, f in players:\n",
-      "    with open(f, 'w', newline='') as csvfile:\n",
-      "        gamewriter = csv.writer(csvfile)\n",
-      "        gamewriter.writerow([\"target\", \"discovered\", \"wrong letters\", \"number of hits\", \"lives remaining\", \"game won\"])\n",
-      "        for _ in range(games_per_player):\n",
-      "            if a:\n",
-      "                player = p(a)\n",
-      "            else:\n",
-      "                player=p()\n",
-      "            g = Game(random.choice(WORDS), player=player)\n",
-      "            g.play_game()\n",
-      "            gamewriter.writerow([g.target, g.discovered, g.wrong_letters, \n",
-      "                                len([l for l in g.discovered if l != '_']),\n",
-      "                                g.lives, g.game_won])"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 64
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "players = [(PlayerAdaptiveSplit, WORDS, 'adaptive_split.csv')]\n",
-      "\n",
-      "games_per_player = 1000\n",
-      "\n",
-      "for p, a, f in players:\n",
-      "    with open(f, 'w', newline='') as csvfile:\n",
-      "        gamewriter = csv.writer(csvfile)\n",
-      "        gamewriter.writerow([\"target\", \"discovered\", \"wrong letters\", \"number of hits\", \"lives remaining\", \"game won\"])\n",
-      "        for _ in range(games_per_player):\n",
-      "            if a:\n",
-      "                player = p(a)\n",
-      "            else:\n",
-      "                player=p()\n",
-      "            g = Game(random.choice(WORDS), player=player)\n",
-      "            g.play_game()\n",
-      "            gamewriter.writerow([g.target, g.discovered, g.wrong_letters, \n",
-      "                                len([l for l in g.discovered if l != '_']),\n",
-      "                                g.lives, g.game_won])"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 6
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "import pandas as pd\n",
-      "import matplotlib as mpl\n",
-      "import matplotlib.pyplot as plt\n",
-      "%matplotlib inline"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 7
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "fixed_order = pd.read_csv('fixed_order.csv')\n",
-      "fixed_order"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "html": [
-        "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
-        "<table border=\"1\" class=\"dataframe\">\n",
-        "  <thead>\n",
-        "    <tr style=\"text-align: right;\">\n",
-        "      <th></th>\n",
-        "      <th>target</th>\n",
-        "      <th>discovered</th>\n",
-        "      <th>wrong letters</th>\n",
-        "      <th>number of hits</th>\n",
-        "      <th>lives remaining</th>\n",
-        "      <th>game won</th>\n",
-        "    </tr>\n",
-        "  </thead>\n",
-        "  <tbody>\n",
-        "    <tr>\n",
-        "      <th>0  </th>\n",
-        "      <td>     mouldering</td>\n",
-        "      <td> ['m', 'o', 'u', 'l', 'd', 'e', 'r', 'i', 'n', ...</td>\n",
-        "      <td>          ['t', 'a', 'h', 's', 'w', 'c', 'y', 'f']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 2</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>1  </th>\n",
-        "      <td>         deject</td>\n",
-        "      <td>                    ['d', 'e', '_', 'e', '_', 't']</td>\n",
-        "      <td> ['a', 'o', 'i', 'h', 'n', 's', 'r', 'l', 'u', ...</td>\n",
-        "      <td>  4</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>2  </th>\n",
-        "      <td>      lipsticks</td>\n",
-        "      <td>     ['l', 'i', '_', 's', 't', 'i', '_', '_', 's']</td>\n",
-        "      <td> ['e', 'a', 'o', 'h', 'n', 'r', 'd', 'u', 'm', ...</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>3  </th>\n",
-        "      <td>     disparaged</td>\n",
-        "      <td> ['d', 'i', 's', '_', 'a', 'r', 'a', '_', 'e', ...</td>\n",
-        "      <td> ['t', 'o', 'h', 'n', 'l', 'u', 'm', 'w', 'c', ...</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>4  </th>\n",
-        "      <td>         legion</td>\n",
-        "      <td>                    ['l', 'e', '_', 'i', 'o', 'n']</td>\n",
-        "      <td> ['t', 'a', 'h', 's', 'r', 'd', 'u', 'm', 'w', ...</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>5  </th>\n",
-        "      <td>    fabricating</td>\n",
-        "      <td> ['_', 'a', '_', 'r', 'i', 'c', 'a', 't', 'i', ...</td>\n",
-        "      <td> ['e', 'o', 'h', 's', 'd', 'l', 'u', 'm', 'w', ...</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>6  </th>\n",
-        "      <td>        nicking</td>\n",
-        "      <td>               ['n', 'i', '_', '_', 'i', 'n', '_']</td>\n",
-        "      <td> ['e', 't', 'a', 'o', 'h', 's', 'r', 'd', 'l', ...</td>\n",
-        "      <td>  4</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>7  </th>\n",
-        "      <td>       actinium</td>\n",
-        "      <td>          ['a', 'c', 't', 'i', 'n', 'i', 'u', 'm']</td>\n",
-        "      <td>          ['e', 'o', 'h', 's', 'r', 'd', 'l', 'w']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 2</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>8  </th>\n",
-        "      <td>        sedates</td>\n",
-        "      <td>               ['s', 'e', 'd', 'a', 't', 'e', 's']</td>\n",
-        "      <td>                         ['o', 'i', 'h', 'n', 'r']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> 5</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>9  </th>\n",
-        "      <td>    modernistic</td>\n",
-        "      <td> ['m', 'o', 'd', 'e', 'r', 'n', 'i', 's', 't', ...</td>\n",
-        "      <td>                         ['a', 'h', 'l', 'u', 'w']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td> 5</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>10 </th>\n",
-        "      <td>        grouchy</td>\n",
-        "      <td>               ['_', 'r', 'o', 'u', '_', 'h', '_']</td>\n",
-        "      <td> ['e', 't', 'a', 'i', 'n', 's', 'd', 'l', 'm', ...</td>\n",
-        "      <td>  4</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>11 </th>\n",
-        "      <td>           goop</td>\n",
-        "      <td>                              ['_', 'o', 'o', '_']</td>\n",
-        "      <td> ['e', 't', 'a', 'i', 'h', 'n', 's', 'r', 'd', ...</td>\n",
-        "      <td>  2</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>12 </th>\n",
-        "      <td>       theorems</td>\n",
-        "      <td>          ['t', 'h', 'e', 'o', 'r', 'e', 'm', 's']</td>\n",
-        "      <td>                    ['a', 'i', 'n', 'd', 'l', 'u']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 4</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>13 </th>\n",
-        "      <td>     panickiest</td>\n",
-        "      <td> ['_', 'a', 'n', 'i', 'c', '_', 'i', 'e', 's', ...</td>\n",
-        "      <td> ['o', 'h', 'r', 'd', 'l', 'u', 'm', 'w', 'y', ...</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>14 </th>\n",
-        "      <td>     rightfully</td>\n",
-        "      <td> ['r', 'i', 'g', 'h', 't', 'f', 'u', 'l', 'l', ...</td>\n",
-        "      <td>     ['e', 'a', 'o', 'n', 's', 'd', 'm', 'w', 'c']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 1</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>15 </th>\n",
-        "      <td>       esquires</td>\n",
-        "      <td>          ['e', 's', '_', 'u', 'i', 'r', 'e', 's']</td>\n",
-        "      <td> ['t', 'a', 'o', 'h', 'n', 'd', 'l', 'm', 'w', ...</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>16 </th>\n",
-        "      <td>         violet</td>\n",
-        "      <td>                    ['_', 'i', 'o', 'l', 'e', 't']</td>\n",
-        "      <td> ['a', 'h', 'n', 's', 'r', 'd', 'u', 'm', 'w', ...</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>17 </th>\n",
-        "      <td> dermatologists</td>\n",
-        "      <td> ['d', 'e', 'r', 'm', 'a', 't', 'o', 'l', 'o', ...</td>\n",
-        "      <td>               ['h', 'n', 'u', 'w', 'c', 'y', 'f']</td>\n",
-        "      <td> 14</td>\n",
-        "      <td> 3</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>18 </th>\n",
-        "      <td>          inane</td>\n",
-        "      <td>                         ['i', 'n', 'a', 'n', 'e']</td>\n",
-        "      <td>                                   ['t', 'o', 'h']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 7</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>19 </th>\n",
-        "      <td>        bonkers</td>\n",
-        "      <td>               ['_', 'o', 'n', '_', 'e', 'r', 's']</td>\n",
-        "      <td> ['t', 'a', 'i', 'h', 'd', 'l', 'u', 'm', 'w', ...</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>20 </th>\n",
-        "      <td>    reassigning</td>\n",
-        "      <td> ['r', 'e', 'a', 's', 's', 'i', '_', 'n', 'i', ...</td>\n",
-        "      <td> ['t', 'o', 'h', 'd', 'l', 'u', 'm', 'w', 'c', ...</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>21 </th>\n",
-        "      <td>      sweatshop</td>\n",
-        "      <td>     ['s', 'w', 'e', 'a', 't', 's', 'h', 'o', '_']</td>\n",
-        "      <td> ['i', 'n', 'r', 'd', 'l', 'u', 'm', 'c', 'y', ...</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>22 </th>\n",
-        "      <td>             ks</td>\n",
-        "      <td>                                        ['_', 's']</td>\n",
-        "      <td> ['e', 't', 'a', 'o', 'i', 'h', 'n', 'r', 'd', ...</td>\n",
-        "      <td>  1</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>23 </th>\n",
-        "      <td>       outcomes</td>\n",
-        "      <td>          ['o', 'u', 't', 'c', 'o', 'm', 'e', 's']</td>\n",
-        "      <td>          ['a', 'i', 'h', 'n', 'r', 'd', 'l', 'w']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 2</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>24 </th>\n",
-        "      <td>     parenthood</td>\n",
-        "      <td> ['_', 'a', 'r', 'e', 'n', 't', 'h', 'o', 'o', ...</td>\n",
-        "      <td> ['i', 's', 'l', 'u', 'm', 'w', 'c', 'y', 'f', ...</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>25 </th>\n",
-        "      <td>    frequencies</td>\n",
-        "      <td> ['f', 'r', 'e', '_', 'u', 'e', 'n', 'c', 'i', ...</td>\n",
-        "      <td> ['t', 'a', 'o', 'h', 'd', 'l', 'm', 'w', 'y', ...</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>26 </th>\n",
-        "      <td>         manias</td>\n",
-        "      <td>                    ['m', 'a', 'n', 'i', 'a', 's']</td>\n",
-        "      <td>          ['e', 't', 'o', 'h', 'r', 'd', 'l', 'u']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> 2</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>27 </th>\n",
-        "      <td>    resupplying</td>\n",
-        "      <td> ['r', 'e', 's', 'u', 'p', 'p', 'l', 'y', 'i', ...</td>\n",
-        "      <td>     ['t', 'a', 'o', 'h', 'd', 'm', 'w', 'c', 'f']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td> 1</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>28 </th>\n",
-        "      <td>   subcontinent</td>\n",
-        "      <td> ['s', 'u', '_', 'c', 'o', 'n', 't', 'i', 'n', ...</td>\n",
-        "      <td> ['a', 'h', 'r', 'd', 'l', 'm', 'w', 'y', 'f', ...</td>\n",
-        "      <td> 11</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>29 </th>\n",
-        "      <td>      baptismal</td>\n",
-        "      <td>     ['_', 'a', '_', 't', 'i', 's', 'm', 'a', 'l']</td>\n",
-        "      <td> ['e', 'o', 'h', 'n', 'r', 'd', 'u', 'w', 'c', ...</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>...</th>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>970</th>\n",
-        "      <td>          toxic</td>\n",
-        "      <td>                         ['t', 'o', '_', 'i', '_']</td>\n",
-        "      <td> ['e', 'a', 'h', 'n', 's', 'r', 'd', 'l', 'u', ...</td>\n",
-        "      <td>  3</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>971</th>\n",
-        "      <td>    brigantines</td>\n",
-        "      <td> ['_', 'r', 'i', '_', 'a', 'n', 't', 'i', 'n', ...</td>\n",
-        "      <td> ['o', 'h', 'd', 'l', 'u', 'm', 'w', 'c', 'y', ...</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>972</th>\n",
-        "      <td>        imagery</td>\n",
-        "      <td>               ['i', 'm', 'a', '_', 'e', 'r', '_']</td>\n",
-        "      <td> ['t', 'o', 'h', 'n', 's', 'd', 'l', 'u', 'w', ...</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>973</th>\n",
-        "      <td>    melancholic</td>\n",
-        "      <td> ['m', 'e', 'l', 'a', 'n', 'c', 'h', 'o', 'l', ...</td>\n",
-        "      <td>                    ['t', 's', 'r', 'd', 'u', 'w']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td> 4</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>974</th>\n",
-        "      <td>    enthusiasms</td>\n",
-        "      <td> ['e', 'n', 't', 'h', 'u', 's', 'i', 'a', 's', ...</td>\n",
-        "      <td>                              ['o', 'r', 'd', 'l']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td> 6</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>975</th>\n",
-        "      <td>        abraded</td>\n",
-        "      <td>               ['a', '_', 'r', 'a', 'd', 'e', 'd']</td>\n",
-        "      <td> ['t', 'o', 'i', 'h', 'n', 's', 'l', 'u', 'm', ...</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>976</th>\n",
-        "      <td>          lakes</td>\n",
-        "      <td>                         ['l', 'a', '_', 'e', 's']</td>\n",
-        "      <td> ['t', 'o', 'i', 'h', 'n', 'r', 'd', 'u', 'm', ...</td>\n",
-        "      <td>  4</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>977</th>\n",
-        "      <td> telepathically</td>\n",
-        "      <td> ['t', 'e', 'l', 'e', '_', 'a', 't', 'h', 'i', ...</td>\n",
-        "      <td> ['o', 'n', 's', 'r', 'd', 'u', 'm', 'w', 'f', ...</td>\n",
-        "      <td> 13</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>978</th>\n",
-        "      <td>         taking</td>\n",
-        "      <td>                    ['t', 'a', '_', 'i', 'n', '_']</td>\n",
-        "      <td> ['e', 'o', 'h', 's', 'r', 'd', 'l', 'u', 'm', ...</td>\n",
-        "      <td>  4</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>979</th>\n",
-        "      <td>       tomorrow</td>\n",
-        "      <td>          ['t', 'o', 'm', 'o', 'r', 'r', 'o', 'w']</td>\n",
-        "      <td>     ['e', 'a', 'i', 'h', 'n', 's', 'd', 'l', 'u']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 1</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>980</th>\n",
-        "      <td>         refile</td>\n",
-        "      <td>                    ['r', 'e', '_', 'i', 'l', 'e']</td>\n",
-        "      <td> ['t', 'a', 'o', 'h', 'n', 's', 'd', 'u', 'm', ...</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>981</th>\n",
-        "      <td>         unkind</td>\n",
-        "      <td>                    ['u', 'n', '_', 'i', 'n', 'd']</td>\n",
-        "      <td> ['e', 't', 'a', 'o', 'h', 's', 'r', 'l', 'm', ...</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>982</th>\n",
-        "      <td>      specimens</td>\n",
-        "      <td>     ['s', '_', 'e', 'c', 'i', 'm', 'e', 'n', 's']</td>\n",
-        "      <td> ['t', 'a', 'o', 'h', 'r', 'd', 'l', 'u', 'w', ...</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>983</th>\n",
-        "      <td>        regrets</td>\n",
-        "      <td>               ['r', 'e', '_', 'r', 'e', 't', 's']</td>\n",
-        "      <td> ['a', 'o', 'i', 'h', 'n', 'd', 'l', 'u', 'm', ...</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>984</th>\n",
-        "      <td>    remaindered</td>\n",
-        "      <td> ['r', 'e', 'm', 'a', 'i', 'n', 'd', 'e', 'r', ...</td>\n",
-        "      <td>                    ['t', 'o', 'h', 's', 'l', 'u']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td> 4</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>985</th>\n",
-        "      <td>        dignify</td>\n",
-        "      <td>               ['d', 'i', '_', 'n', 'i', '_', '_']</td>\n",
-        "      <td> ['e', 't', 'a', 'o', 'h', 's', 'r', 'l', 'u', ...</td>\n",
-        "      <td>  4</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>986</th>\n",
-        "      <td>      bandwagon</td>\n",
-        "      <td>     ['_', 'a', 'n', 'd', 'w', 'a', '_', 'o', 'n']</td>\n",
-        "      <td> ['e', 't', 'i', 'h', 's', 'r', 'l', 'u', 'm', ...</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>987</th>\n",
-        "      <td>     pacemakers</td>\n",
-        "      <td> ['_', 'a', 'c', 'e', 'm', 'a', '_', 'e', 'r', ...</td>\n",
-        "      <td> ['t', 'o', 'i', 'h', 'n', 'd', 'l', 'u', 'w', ...</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>988</th>\n",
-        "      <td>        dandles</td>\n",
-        "      <td>               ['d', 'a', 'n', 'd', 'l', 'e', 's']</td>\n",
-        "      <td>                         ['t', 'o', 'i', 'h', 'r']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> 5</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>989</th>\n",
-        "      <td>          white</td>\n",
-        "      <td>                         ['w', 'h', 'i', 't', 'e']</td>\n",
-        "      <td>     ['a', 'o', 'n', 's', 'r', 'd', 'l', 'u', 'm']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 1</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>990</th>\n",
-        "      <td>          arena</td>\n",
-        "      <td>                         ['a', 'r', 'e', 'n', 'a']</td>\n",
-        "      <td>                         ['t', 'o', 'i', 'h', 's']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 5</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>991</th>\n",
-        "      <td>        surreal</td>\n",
-        "      <td>               ['s', 'u', 'r', 'r', 'e', 'a', 'l']</td>\n",
-        "      <td>                    ['t', 'o', 'i', 'h', 'n', 'd']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> 4</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>992</th>\n",
-        "      <td>       gutsiest</td>\n",
-        "      <td>          ['_', 'u', 't', 's', 'i', 'e', 's', 't']</td>\n",
-        "      <td> ['a', 'o', 'h', 'n', 'r', 'd', 'l', 'm', 'w', ...</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>993</th>\n",
-        "      <td>     annulments</td>\n",
-        "      <td> ['a', 'n', 'n', 'u', 'l', 'm', 'e', 'n', 't', ...</td>\n",
-        "      <td>                         ['o', 'i', 'h', 'r', 'd']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 5</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>994</th>\n",
-        "      <td>     accretions</td>\n",
-        "      <td> ['a', 'c', 'c', 'r', 'e', 't', 'i', 'o', 'n', ...</td>\n",
-        "      <td>                    ['h', 'd', 'l', 'u', 'm', 'w']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 4</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>995</th>\n",
-        "      <td>         safari</td>\n",
-        "      <td>                    ['s', 'a', '_', 'a', 'r', 'i']</td>\n",
-        "      <td> ['e', 't', 'o', 'h', 'n', 'd', 'l', 'u', 'm', ...</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>996</th>\n",
-        "      <td>          recap</td>\n",
-        "      <td>                         ['r', 'e', '_', 'a', '_']</td>\n",
-        "      <td> ['t', 'o', 'i', 'h', 'n', 's', 'd', 'l', 'u', ...</td>\n",
-        "      <td>  3</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>997</th>\n",
-        "      <td>          torts</td>\n",
-        "      <td>                         ['t', 'o', 'r', 't', 's']</td>\n",
-        "      <td>                         ['e', 'a', 'i', 'h', 'n']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 5</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>998</th>\n",
-        "      <td>     tyrannised</td>\n",
-        "      <td> ['t', 'y', 'r', 'a', 'n', 'n', 'i', 's', 'e', ...</td>\n",
-        "      <td>               ['o', 'h', 'l', 'u', 'm', 'w', 'c']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 3</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>999</th>\n",
-        "      <td>    indubitable</td>\n",
-        "      <td> ['i', 'n', 'd', 'u', '_', 'i', 't', 'a', '_', ...</td>\n",
-        "      <td> ['o', 'h', 's', 'r', 'm', 'w', 'c', 'y', 'f', ...</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "  </tbody>\n",
-        "</table>\n",
-        "<p>1000 rows \u00d7 6 columns</p>\n",
-        "</div>"
-       ],
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 8,
-       "text": [
-        "             target                                         discovered  \\\n",
-        "0        mouldering  ['m', 'o', 'u', 'l', 'd', 'e', 'r', 'i', 'n', ...   \n",
-        "1            deject                     ['d', 'e', '_', 'e', '_', 't']   \n",
-        "2         lipsticks      ['l', 'i', '_', 's', 't', 'i', '_', '_', 's']   \n",
-        "3        disparaged  ['d', 'i', 's', '_', 'a', 'r', 'a', '_', 'e', ...   \n",
-        "4            legion                     ['l', 'e', '_', 'i', 'o', 'n']   \n",
-        "5       fabricating  ['_', 'a', '_', 'r', 'i', 'c', 'a', 't', 'i', ...   \n",
-        "6           nicking                ['n', 'i', '_', '_', 'i', 'n', '_']   \n",
-        "7          actinium           ['a', 'c', 't', 'i', 'n', 'i', 'u', 'm']   \n",
-        "8           sedates                ['s', 'e', 'd', 'a', 't', 'e', 's']   \n",
-        "9       modernistic  ['m', 'o', 'd', 'e', 'r', 'n', 'i', 's', 't', ...   \n",
-        "10          grouchy                ['_', 'r', 'o', 'u', '_', 'h', '_']   \n",
-        "11             goop                               ['_', 'o', 'o', '_']   \n",
-        "12         theorems           ['t', 'h', 'e', 'o', 'r', 'e', 'm', 's']   \n",
-        "13       panickiest  ['_', 'a', 'n', 'i', 'c', '_', 'i', 'e', 's', ...   \n",
-        "14       rightfully  ['r', 'i', 'g', 'h', 't', 'f', 'u', 'l', 'l', ...   \n",
-        "15         esquires           ['e', 's', '_', 'u', 'i', 'r', 'e', 's']   \n",
-        "16           violet                     ['_', 'i', 'o', 'l', 'e', 't']   \n",
-        "17   dermatologists  ['d', 'e', 'r', 'm', 'a', 't', 'o', 'l', 'o', ...   \n",
-        "18            inane                          ['i', 'n', 'a', 'n', 'e']   \n",
-        "19          bonkers                ['_', 'o', 'n', '_', 'e', 'r', 's']   \n",
-        "20      reassigning  ['r', 'e', 'a', 's', 's', 'i', '_', 'n', 'i', ...   \n",
-        "21        sweatshop      ['s', 'w', 'e', 'a', 't', 's', 'h', 'o', '_']   \n",
-        "22               ks                                         ['_', 's']   \n",
-        "23         outcomes           ['o', 'u', 't', 'c', 'o', 'm', 'e', 's']   \n",
-        "24       parenthood  ['_', 'a', 'r', 'e', 'n', 't', 'h', 'o', 'o', ...   \n",
-        "25      frequencies  ['f', 'r', 'e', '_', 'u', 'e', 'n', 'c', 'i', ...   \n",
-        "26           manias                     ['m', 'a', 'n', 'i', 'a', 's']   \n",
-        "27      resupplying  ['r', 'e', 's', 'u', 'p', 'p', 'l', 'y', 'i', ...   \n",
-        "28     subcontinent  ['s', 'u', '_', 'c', 'o', 'n', 't', 'i', 'n', ...   \n",
-        "29        baptismal      ['_', 'a', '_', 't', 'i', 's', 'm', 'a', 'l']   \n",
-        "..              ...                                                ...   \n",
-        "970           toxic                          ['t', 'o', '_', 'i', '_']   \n",
-        "971     brigantines  ['_', 'r', 'i', '_', 'a', 'n', 't', 'i', 'n', ...   \n",
-        "972         imagery                ['i', 'm', 'a', '_', 'e', 'r', '_']   \n",
-        "973     melancholic  ['m', 'e', 'l', 'a', 'n', 'c', 'h', 'o', 'l', ...   \n",
-        "974     enthusiasms  ['e', 'n', 't', 'h', 'u', 's', 'i', 'a', 's', ...   \n",
-        "975         abraded                ['a', '_', 'r', 'a', 'd', 'e', 'd']   \n",
-        "976           lakes                          ['l', 'a', '_', 'e', 's']   \n",
-        "977  telepathically  ['t', 'e', 'l', 'e', '_', 'a', 't', 'h', 'i', ...   \n",
-        "978          taking                     ['t', 'a', '_', 'i', 'n', '_']   \n",
-        "979        tomorrow           ['t', 'o', 'm', 'o', 'r', 'r', 'o', 'w']   \n",
-        "980          refile                     ['r', 'e', '_', 'i', 'l', 'e']   \n",
-        "981          unkind                     ['u', 'n', '_', 'i', 'n', 'd']   \n",
-        "982       specimens      ['s', '_', 'e', 'c', 'i', 'm', 'e', 'n', 's']   \n",
-        "983         regrets                ['r', 'e', '_', 'r', 'e', 't', 's']   \n",
-        "984     remaindered  ['r', 'e', 'm', 'a', 'i', 'n', 'd', 'e', 'r', ...   \n",
-        "985         dignify                ['d', 'i', '_', 'n', 'i', '_', '_']   \n",
-        "986       bandwagon      ['_', 'a', 'n', 'd', 'w', 'a', '_', 'o', 'n']   \n",
-        "987      pacemakers  ['_', 'a', 'c', 'e', 'm', 'a', '_', 'e', 'r', ...   \n",
-        "988         dandles                ['d', 'a', 'n', 'd', 'l', 'e', 's']   \n",
-        "989           white                          ['w', 'h', 'i', 't', 'e']   \n",
-        "990           arena                          ['a', 'r', 'e', 'n', 'a']   \n",
-        "991         surreal                ['s', 'u', 'r', 'r', 'e', 'a', 'l']   \n",
-        "992        gutsiest           ['_', 'u', 't', 's', 'i', 'e', 's', 't']   \n",
-        "993      annulments  ['a', 'n', 'n', 'u', 'l', 'm', 'e', 'n', 't', ...   \n",
-        "994      accretions  ['a', 'c', 'c', 'r', 'e', 't', 'i', 'o', 'n', ...   \n",
-        "995          safari                     ['s', 'a', '_', 'a', 'r', 'i']   \n",
-        "996           recap                          ['r', 'e', '_', 'a', '_']   \n",
-        "997           torts                          ['t', 'o', 'r', 't', 's']   \n",
-        "998      tyrannised  ['t', 'y', 'r', 'a', 'n', 'n', 'i', 's', 'e', ...   \n",
-        "999     indubitable  ['i', 'n', 'd', 'u', '_', 'i', 't', 'a', '_', ...   \n",
-        "\n",
-        "                                         wrong letters  number of hits  \\\n",
-        "0             ['t', 'a', 'h', 's', 'w', 'c', 'y', 'f']              10   \n",
-        "1    ['a', 'o', 'i', 'h', 'n', 's', 'r', 'l', 'u', ...               4   \n",
-        "2    ['e', 'a', 'o', 'h', 'n', 'r', 'd', 'u', 'm', ...               6   \n",
-        "3    ['t', 'o', 'h', 'n', 'l', 'u', 'm', 'w', 'c', ...               8   \n",
-        "4    ['t', 'a', 'h', 's', 'r', 'd', 'u', 'm', 'w', ...               5   \n",
-        "5    ['e', 'o', 'h', 's', 'd', 'l', 'u', 'm', 'w', ...               8   \n",
-        "6    ['e', 't', 'a', 'o', 'h', 's', 'r', 'd', 'l', ...               4   \n",
-        "7             ['e', 'o', 'h', 's', 'r', 'd', 'l', 'w']               8   \n",
-        "8                            ['o', 'i', 'h', 'n', 'r']               7   \n",
-        "9                            ['a', 'h', 'l', 'u', 'w']              11   \n",
-        "10   ['e', 't', 'a', 'i', 'n', 's', 'd', 'l', 'm', ...               4   \n",
-        "11   ['e', 't', 'a', 'i', 'h', 'n', 's', 'r', 'd', ...               2   \n",
-        "12                      ['a', 'i', 'n', 'd', 'l', 'u']               8   \n",
-        "13   ['o', 'h', 'r', 'd', 'l', 'u', 'm', 'w', 'y', ...               8   \n",
-        "14       ['e', 'a', 'o', 'n', 's', 'd', 'm', 'w', 'c']              10   \n",
-        "15   ['t', 'a', 'o', 'h', 'n', 'd', 'l', 'm', 'w', ...               7   \n",
-        "16   ['a', 'h', 'n', 's', 'r', 'd', 'u', 'm', 'w', ...               5   \n",
-        "17                 ['h', 'n', 'u', 'w', 'c', 'y', 'f']              14   \n",
-        "18                                     ['t', 'o', 'h']               5   \n",
-        "19   ['t', 'a', 'i', 'h', 'd', 'l', 'u', 'm', 'w', ...               5   \n",
-        "20   ['t', 'o', 'h', 'd', 'l', 'u', 'm', 'w', 'c', ...               9   \n",
-        "21   ['i', 'n', 'r', 'd', 'l', 'u', 'm', 'c', 'y', ...               8   \n",
-        "22   ['e', 't', 'a', 'o', 'i', 'h', 'n', 'r', 'd', ...               1   \n",
-        "23            ['a', 'i', 'h', 'n', 'r', 'd', 'l', 'w']               8   \n",
-        "24   ['i', 's', 'l', 'u', 'm', 'w', 'c', 'y', 'f', ...               9   \n",
-        "25   ['t', 'a', 'o', 'h', 'd', 'l', 'm', 'w', 'y', ...              10   \n",
-        "26            ['e', 't', 'o', 'h', 'r', 'd', 'l', 'u']               6   \n",
-        "27       ['t', 'a', 'o', 'h', 'd', 'm', 'w', 'c', 'f']              11   \n",
-        "28   ['a', 'h', 'r', 'd', 'l', 'm', 'w', 'y', 'f', ...              11   \n",
-        "29   ['e', 'o', 'h', 'n', 'r', 'd', 'u', 'w', 'c', ...               7   \n",
-        "..                                                 ...             ...   \n",
-        "970  ['e', 'a', 'h', 'n', 's', 'r', 'd', 'l', 'u', ...               3   \n",
-        "971  ['o', 'h', 'd', 'l', 'u', 'm', 'w', 'c', 'y', ...               9   \n",
-        "972  ['t', 'o', 'h', 'n', 's', 'd', 'l', 'u', 'w', ...               5   \n",
-        "973                     ['t', 's', 'r', 'd', 'u', 'w']              11   \n",
-        "974                               ['o', 'r', 'd', 'l']              11   \n",
-        "975  ['t', 'o', 'i', 'h', 'n', 's', 'l', 'u', 'm', ...               6   \n",
-        "976  ['t', 'o', 'i', 'h', 'n', 'r', 'd', 'u', 'm', ...               4   \n",
-        "977  ['o', 'n', 's', 'r', 'd', 'u', 'm', 'w', 'f', ...              13   \n",
-        "978  ['e', 'o', 'h', 's', 'r', 'd', 'l', 'u', 'm', ...               4   \n",
-        "979      ['e', 'a', 'i', 'h', 'n', 's', 'd', 'l', 'u']               8   \n",
-        "980  ['t', 'a', 'o', 'h', 'n', 's', 'd', 'u', 'm', ...               5   \n",
-        "981  ['e', 't', 'a', 'o', 'h', 's', 'r', 'l', 'm', ...               5   \n",
-        "982  ['t', 'a', 'o', 'h', 'r', 'd', 'l', 'u', 'w', ...               8   \n",
-        "983  ['a', 'o', 'i', 'h', 'n', 'd', 'l', 'u', 'm', ...               6   \n",
-        "984                     ['t', 'o', 'h', 's', 'l', 'u']              11   \n",
-        "985  ['e', 't', 'a', 'o', 'h', 's', 'r', 'l', 'u', ...               4   \n",
-        "986  ['e', 't', 'i', 'h', 's', 'r', 'l', 'u', 'm', ...               7   \n",
-        "987  ['t', 'o', 'i', 'h', 'n', 'd', 'l', 'u', 'w', ...               8   \n",
-        "988                          ['t', 'o', 'i', 'h', 'r']               7   \n",
-        "989      ['a', 'o', 'n', 's', 'r', 'd', 'l', 'u', 'm']               5   \n",
-        "990                          ['t', 'o', 'i', 'h', 's']               5   \n",
-        "991                     ['t', 'o', 'i', 'h', 'n', 'd']               7   \n",
-        "992  ['a', 'o', 'h', 'n', 'r', 'd', 'l', 'm', 'w', ...               7   \n",
-        "993                          ['o', 'i', 'h', 'r', 'd']              10   \n",
-        "994                     ['h', 'd', 'l', 'u', 'm', 'w']              10   \n",
-        "995  ['e', 't', 'o', 'h', 'n', 'd', 'l', 'u', 'm', ...               5   \n",
-        "996  ['t', 'o', 'i', 'h', 'n', 's', 'd', 'l', 'u', ...               3   \n",
-        "997                          ['e', 'a', 'i', 'h', 'n']               5   \n",
-        "998                ['o', 'h', 'l', 'u', 'm', 'w', 'c']              10   \n",
-        "999  ['o', 'h', 's', 'r', 'm', 'w', 'c', 'y', 'f', ...               9   \n",
-        "\n",
-        "     lives remaining game won  \n",
-        "0                  2     True  \n",
-        "1                  0    False  \n",
-        "2                  0    False  \n",
-        "3                  0    False  \n",
-        "4                  0    False  \n",
-        "5                  0    False  \n",
-        "6                  0    False  \n",
-        "7                  2     True  \n",
-        "8                  5     True  \n",
-        "9                  5     True  \n",
-        "10                 0    False  \n",
-        "11                 0    False  \n",
-        "12                 4     True  \n",
-        "13                 0    False  \n",
-        "14                 1     True  \n",
-        "15                 0    False  \n",
-        "16                 0    False  \n",
-        "17                 3     True  \n",
-        "18                 7     True  \n",
-        "19                 0    False  \n",
-        "20                 0    False  \n",
-        "21                 0    False  \n",
-        "22                 0    False  \n",
-        "23                 2     True  \n",
-        "24                 0    False  \n",
-        "25                 0    False  \n",
-        "26                 2     True  \n",
-        "27                 1     True  \n",
-        "28                 0    False  \n",
-        "29                 0    False  \n",
-        "..               ...      ...  \n",
-        "970                0    False  \n",
-        "971                0    False  \n",
-        "972                0    False  \n",
-        "973                4     True  \n",
-        "974                6     True  \n",
-        "975                0    False  \n",
-        "976                0    False  \n",
-        "977                0    False  \n",
-        "978                0    False  \n",
-        "979                1     True  \n",
-        "980                0    False  \n",
-        "981                0    False  \n",
-        "982                0    False  \n",
-        "983                0    False  \n",
-        "984                4     True  \n",
-        "985                0    False  \n",
-        "986                0    False  \n",
-        "987                0    False  \n",
-        "988                5     True  \n",
-        "989                1     True  \n",
-        "990                5     True  \n",
-        "991                4     True  \n",
-        "992                0    False  \n",
-        "993                5     True  \n",
-        "994                4     True  \n",
-        "995                0    False  \n",
-        "996                0    False  \n",
-        "997                5     True  \n",
-        "998                3     True  \n",
-        "999                0    False  \n",
-        "\n",
-        "[1000 rows x 6 columns]"
-       ]
-      }
-     ],
-     "prompt_number": 8
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "len(fixed_order['discovered'][0].split(','))"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 9,
-       "text": [
-        "10"
-       ]
-      }
-     ],
-     "prompt_number": 9
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "fixed_order['word length'] = fixed_order.apply(lambda r: len(r['target']), axis=1)\n",
-      "fixed_order"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "html": [
-        "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
-        "<table border=\"1\" class=\"dataframe\">\n",
-        "  <thead>\n",
-        "    <tr style=\"text-align: right;\">\n",
-        "      <th></th>\n",
-        "      <th>target</th>\n",
-        "      <th>discovered</th>\n",
-        "      <th>wrong letters</th>\n",
-        "      <th>number of hits</th>\n",
-        "      <th>lives remaining</th>\n",
-        "      <th>game won</th>\n",
-        "      <th>word length</th>\n",
-        "    </tr>\n",
-        "  </thead>\n",
-        "  <tbody>\n",
-        "    <tr>\n",
-        "      <th>0  </th>\n",
-        "      <td>     mouldering</td>\n",
-        "      <td> ['m', 'o', 'u', 'l', 'd', 'e', 'r', 'i', 'n', ...</td>\n",
-        "      <td>          ['t', 'a', 'h', 's', 'w', 'c', 'y', 'f']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 2</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>1  </th>\n",
-        "      <td>         deject</td>\n",
-        "      <td>                    ['d', 'e', '_', 'e', '_', 't']</td>\n",
-        "      <td> ['a', 'o', 'i', 'h', 'n', 's', 'r', 'l', 'u', ...</td>\n",
-        "      <td>  4</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>2  </th>\n",
-        "      <td>      lipsticks</td>\n",
-        "      <td>     ['l', 'i', '_', 's', 't', 'i', '_', '_', 's']</td>\n",
-        "      <td> ['e', 'a', 'o', 'h', 'n', 'r', 'd', 'u', 'm', ...</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  9</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>3  </th>\n",
-        "      <td>     disparaged</td>\n",
-        "      <td> ['d', 'i', 's', '_', 'a', 'r', 'a', '_', 'e', ...</td>\n",
-        "      <td> ['t', 'o', 'h', 'n', 'l', 'u', 'm', 'w', 'c', ...</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>4  </th>\n",
-        "      <td>         legion</td>\n",
-        "      <td>                    ['l', 'e', '_', 'i', 'o', 'n']</td>\n",
-        "      <td> ['t', 'a', 'h', 's', 'r', 'd', 'u', 'm', 'w', ...</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>5  </th>\n",
-        "      <td>    fabricating</td>\n",
-        "      <td> ['_', 'a', '_', 'r', 'i', 'c', 'a', 't', 'i', ...</td>\n",
-        "      <td> ['e', 'o', 'h', 's', 'd', 'l', 'u', 'm', 'w', ...</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td> 11</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>6  </th>\n",
-        "      <td>        nicking</td>\n",
-        "      <td>               ['n', 'i', '_', '_', 'i', 'n', '_']</td>\n",
-        "      <td> ['e', 't', 'a', 'o', 'h', 's', 'r', 'd', 'l', ...</td>\n",
-        "      <td>  4</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>7  </th>\n",
-        "      <td>       actinium</td>\n",
-        "      <td>          ['a', 'c', 't', 'i', 'n', 'i', 'u', 'm']</td>\n",
-        "      <td>          ['e', 'o', 'h', 's', 'r', 'd', 'l', 'w']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 2</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>8  </th>\n",
-        "      <td>        sedates</td>\n",
-        "      <td>               ['s', 'e', 'd', 'a', 't', 'e', 's']</td>\n",
-        "      <td>                         ['o', 'i', 'h', 'n', 'r']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> 5</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>9  </th>\n",
-        "      <td>    modernistic</td>\n",
-        "      <td> ['m', 'o', 'd', 'e', 'r', 'n', 'i', 's', 't', ...</td>\n",
-        "      <td>                         ['a', 'h', 'l', 'u', 'w']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td> 5</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 11</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>10 </th>\n",
-        "      <td>        grouchy</td>\n",
-        "      <td>               ['_', 'r', 'o', 'u', '_', 'h', '_']</td>\n",
-        "      <td> ['e', 't', 'a', 'i', 'n', 's', 'd', 'l', 'm', ...</td>\n",
-        "      <td>  4</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>11 </th>\n",
-        "      <td>           goop</td>\n",
-        "      <td>                              ['_', 'o', 'o', '_']</td>\n",
-        "      <td> ['e', 't', 'a', 'i', 'h', 'n', 's', 'r', 'd', ...</td>\n",
-        "      <td>  2</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  4</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>12 </th>\n",
-        "      <td>       theorems</td>\n",
-        "      <td>          ['t', 'h', 'e', 'o', 'r', 'e', 'm', 's']</td>\n",
-        "      <td>                    ['a', 'i', 'n', 'd', 'l', 'u']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 4</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>13 </th>\n",
-        "      <td>     panickiest</td>\n",
-        "      <td> ['_', 'a', 'n', 'i', 'c', '_', 'i', 'e', 's', ...</td>\n",
-        "      <td> ['o', 'h', 'r', 'd', 'l', 'u', 'm', 'w', 'y', ...</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>14 </th>\n",
-        "      <td>     rightfully</td>\n",
-        "      <td> ['r', 'i', 'g', 'h', 't', 'f', 'u', 'l', 'l', ...</td>\n",
-        "      <td>     ['e', 'a', 'o', 'n', 's', 'd', 'm', 'w', 'c']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 1</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>15 </th>\n",
-        "      <td>       esquires</td>\n",
-        "      <td>          ['e', 's', '_', 'u', 'i', 'r', 'e', 's']</td>\n",
-        "      <td> ['t', 'a', 'o', 'h', 'n', 'd', 'l', 'm', 'w', ...</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>16 </th>\n",
-        "      <td>         violet</td>\n",
-        "      <td>                    ['_', 'i', 'o', 'l', 'e', 't']</td>\n",
-        "      <td> ['a', 'h', 'n', 's', 'r', 'd', 'u', 'm', 'w', ...</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>17 </th>\n",
-        "      <td> dermatologists</td>\n",
-        "      <td> ['d', 'e', 'r', 'm', 'a', 't', 'o', 'l', 'o', ...</td>\n",
-        "      <td>               ['h', 'n', 'u', 'w', 'c', 'y', 'f']</td>\n",
-        "      <td> 14</td>\n",
-        "      <td> 3</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 14</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>18 </th>\n",
-        "      <td>          inane</td>\n",
-        "      <td>                         ['i', 'n', 'a', 'n', 'e']</td>\n",
-        "      <td>                                   ['t', 'o', 'h']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 7</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>19 </th>\n",
-        "      <td>        bonkers</td>\n",
-        "      <td>               ['_', 'o', 'n', '_', 'e', 'r', 's']</td>\n",
-        "      <td> ['t', 'a', 'i', 'h', 'd', 'l', 'u', 'm', 'w', ...</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>20 </th>\n",
-        "      <td>    reassigning</td>\n",
-        "      <td> ['r', 'e', 'a', 's', 's', 'i', '_', 'n', 'i', ...</td>\n",
-        "      <td> ['t', 'o', 'h', 'd', 'l', 'u', 'm', 'w', 'c', ...</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td> 11</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>21 </th>\n",
-        "      <td>      sweatshop</td>\n",
-        "      <td>     ['s', 'w', 'e', 'a', 't', 's', 'h', 'o', '_']</td>\n",
-        "      <td> ['i', 'n', 'r', 'd', 'l', 'u', 'm', 'c', 'y', ...</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  9</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>22 </th>\n",
-        "      <td>             ks</td>\n",
-        "      <td>                                        ['_', 's']</td>\n",
-        "      <td> ['e', 't', 'a', 'o', 'i', 'h', 'n', 'r', 'd', ...</td>\n",
-        "      <td>  1</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  2</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>23 </th>\n",
-        "      <td>       outcomes</td>\n",
-        "      <td>          ['o', 'u', 't', 'c', 'o', 'm', 'e', 's']</td>\n",
-        "      <td>          ['a', 'i', 'h', 'n', 'r', 'd', 'l', 'w']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 2</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>24 </th>\n",
-        "      <td>     parenthood</td>\n",
-        "      <td> ['_', 'a', 'r', 'e', 'n', 't', 'h', 'o', 'o', ...</td>\n",
-        "      <td> ['i', 's', 'l', 'u', 'm', 'w', 'c', 'y', 'f', ...</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>25 </th>\n",
-        "      <td>    frequencies</td>\n",
-        "      <td> ['f', 'r', 'e', '_', 'u', 'e', 'n', 'c', 'i', ...</td>\n",
-        "      <td> ['t', 'a', 'o', 'h', 'd', 'l', 'm', 'w', 'y', ...</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td> 11</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>26 </th>\n",
-        "      <td>         manias</td>\n",
-        "      <td>                    ['m', 'a', 'n', 'i', 'a', 's']</td>\n",
-        "      <td>          ['e', 't', 'o', 'h', 'r', 'd', 'l', 'u']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> 2</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>27 </th>\n",
-        "      <td>    resupplying</td>\n",
-        "      <td> ['r', 'e', 's', 'u', 'p', 'p', 'l', 'y', 'i', ...</td>\n",
-        "      <td>     ['t', 'a', 'o', 'h', 'd', 'm', 'w', 'c', 'f']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td> 1</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 11</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>28 </th>\n",
-        "      <td>   subcontinent</td>\n",
-        "      <td> ['s', 'u', '_', 'c', 'o', 'n', 't', 'i', 'n', ...</td>\n",
-        "      <td> ['a', 'h', 'r', 'd', 'l', 'm', 'w', 'y', 'f', ...</td>\n",
-        "      <td> 11</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td> 12</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>29 </th>\n",
-        "      <td>      baptismal</td>\n",
-        "      <td>     ['_', 'a', '_', 't', 'i', 's', 'm', 'a', 'l']</td>\n",
-        "      <td> ['e', 'o', 'h', 'n', 'r', 'd', 'u', 'w', 'c', ...</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  9</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>...</th>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>970</th>\n",
-        "      <td>          toxic</td>\n",
-        "      <td>                         ['t', 'o', '_', 'i', '_']</td>\n",
-        "      <td> ['e', 'a', 'h', 'n', 's', 'r', 'd', 'l', 'u', ...</td>\n",
-        "      <td>  3</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>971</th>\n",
-        "      <td>    brigantines</td>\n",
-        "      <td> ['_', 'r', 'i', '_', 'a', 'n', 't', 'i', 'n', ...</td>\n",
-        "      <td> ['o', 'h', 'd', 'l', 'u', 'm', 'w', 'c', 'y', ...</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td> 11</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>972</th>\n",
-        "      <td>        imagery</td>\n",
-        "      <td>               ['i', 'm', 'a', '_', 'e', 'r', '_']</td>\n",
-        "      <td> ['t', 'o', 'h', 'n', 's', 'd', 'l', 'u', 'w', ...</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>973</th>\n",
-        "      <td>    melancholic</td>\n",
-        "      <td> ['m', 'e', 'l', 'a', 'n', 'c', 'h', 'o', 'l', ...</td>\n",
-        "      <td>                    ['t', 's', 'r', 'd', 'u', 'w']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td> 4</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 11</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>974</th>\n",
-        "      <td>    enthusiasms</td>\n",
-        "      <td> ['e', 'n', 't', 'h', 'u', 's', 'i', 'a', 's', ...</td>\n",
-        "      <td>                              ['o', 'r', 'd', 'l']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td> 6</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 11</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>975</th>\n",
-        "      <td>        abraded</td>\n",
-        "      <td>               ['a', '_', 'r', 'a', 'd', 'e', 'd']</td>\n",
-        "      <td> ['t', 'o', 'i', 'h', 'n', 's', 'l', 'u', 'm', ...</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>976</th>\n",
-        "      <td>          lakes</td>\n",
-        "      <td>                         ['l', 'a', '_', 'e', 's']</td>\n",
-        "      <td> ['t', 'o', 'i', 'h', 'n', 'r', 'd', 'u', 'm', ...</td>\n",
-        "      <td>  4</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>977</th>\n",
-        "      <td> telepathically</td>\n",
-        "      <td> ['t', 'e', 'l', 'e', '_', 'a', 't', 'h', 'i', ...</td>\n",
-        "      <td> ['o', 'n', 's', 'r', 'd', 'u', 'm', 'w', 'f', ...</td>\n",
-        "      <td> 13</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td> 14</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>978</th>\n",
-        "      <td>         taking</td>\n",
-        "      <td>                    ['t', 'a', '_', 'i', 'n', '_']</td>\n",
-        "      <td> ['e', 'o', 'h', 's', 'r', 'd', 'l', 'u', 'm', ...</td>\n",
-        "      <td>  4</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>979</th>\n",
-        "      <td>       tomorrow</td>\n",
-        "      <td>          ['t', 'o', 'm', 'o', 'r', 'r', 'o', 'w']</td>\n",
-        "      <td>     ['e', 'a', 'i', 'h', 'n', 's', 'd', 'l', 'u']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 1</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>980</th>\n",
-        "      <td>         refile</td>\n",
-        "      <td>                    ['r', 'e', '_', 'i', 'l', 'e']</td>\n",
-        "      <td> ['t', 'a', 'o', 'h', 'n', 's', 'd', 'u', 'm', ...</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>981</th>\n",
-        "      <td>         unkind</td>\n",
-        "      <td>                    ['u', 'n', '_', 'i', 'n', 'd']</td>\n",
-        "      <td> ['e', 't', 'a', 'o', 'h', 's', 'r', 'l', 'm', ...</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>982</th>\n",
-        "      <td>      specimens</td>\n",
-        "      <td>     ['s', '_', 'e', 'c', 'i', 'm', 'e', 'n', 's']</td>\n",
-        "      <td> ['t', 'a', 'o', 'h', 'r', 'd', 'l', 'u', 'w', ...</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  9</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>983</th>\n",
-        "      <td>        regrets</td>\n",
-        "      <td>               ['r', 'e', '_', 'r', 'e', 't', 's']</td>\n",
-        "      <td> ['a', 'o', 'i', 'h', 'n', 'd', 'l', 'u', 'm', ...</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>984</th>\n",
-        "      <td>    remaindered</td>\n",
-        "      <td> ['r', 'e', 'm', 'a', 'i', 'n', 'd', 'e', 'r', ...</td>\n",
-        "      <td>                    ['t', 'o', 'h', 's', 'l', 'u']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td> 4</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 11</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>985</th>\n",
-        "      <td>        dignify</td>\n",
-        "      <td>               ['d', 'i', '_', 'n', 'i', '_', '_']</td>\n",
-        "      <td> ['e', 't', 'a', 'o', 'h', 's', 'r', 'l', 'u', ...</td>\n",
-        "      <td>  4</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>986</th>\n",
-        "      <td>      bandwagon</td>\n",
-        "      <td>     ['_', 'a', 'n', 'd', 'w', 'a', '_', 'o', 'n']</td>\n",
-        "      <td> ['e', 't', 'i', 'h', 's', 'r', 'l', 'u', 'm', ...</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  9</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>987</th>\n",
-        "      <td>     pacemakers</td>\n",
-        "      <td> ['_', 'a', 'c', 'e', 'm', 'a', '_', 'e', 'r', ...</td>\n",
-        "      <td> ['t', 'o', 'i', 'h', 'n', 'd', 'l', 'u', 'w', ...</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>988</th>\n",
-        "      <td>        dandles</td>\n",
-        "      <td>               ['d', 'a', 'n', 'd', 'l', 'e', 's']</td>\n",
-        "      <td>                         ['t', 'o', 'i', 'h', 'r']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> 5</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>989</th>\n",
-        "      <td>          white</td>\n",
-        "      <td>                         ['w', 'h', 'i', 't', 'e']</td>\n",
-        "      <td>     ['a', 'o', 'n', 's', 'r', 'd', 'l', 'u', 'm']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 1</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>990</th>\n",
-        "      <td>          arena</td>\n",
-        "      <td>                         ['a', 'r', 'e', 'n', 'a']</td>\n",
-        "      <td>                         ['t', 'o', 'i', 'h', 's']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 5</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>991</th>\n",
-        "      <td>        surreal</td>\n",
-        "      <td>               ['s', 'u', 'r', 'r', 'e', 'a', 'l']</td>\n",
-        "      <td>                    ['t', 'o', 'i', 'h', 'n', 'd']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> 4</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>992</th>\n",
-        "      <td>       gutsiest</td>\n",
-        "      <td>          ['_', 'u', 't', 's', 'i', 'e', 's', 't']</td>\n",
-        "      <td> ['a', 'o', 'h', 'n', 'r', 'd', 'l', 'm', 'w', ...</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>993</th>\n",
-        "      <td>     annulments</td>\n",
-        "      <td> ['a', 'n', 'n', 'u', 'l', 'm', 'e', 'n', 't', ...</td>\n",
-        "      <td>                         ['o', 'i', 'h', 'r', 'd']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 5</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>994</th>\n",
-        "      <td>     accretions</td>\n",
-        "      <td> ['a', 'c', 'c', 'r', 'e', 't', 'i', 'o', 'n', ...</td>\n",
-        "      <td>                    ['h', 'd', 'l', 'u', 'm', 'w']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 4</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>995</th>\n",
-        "      <td>         safari</td>\n",
-        "      <td>                    ['s', 'a', '_', 'a', 'r', 'i']</td>\n",
-        "      <td> ['e', 't', 'o', 'h', 'n', 'd', 'l', 'u', 'm', ...</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>996</th>\n",
-        "      <td>          recap</td>\n",
-        "      <td>                         ['r', 'e', '_', 'a', '_']</td>\n",
-        "      <td> ['t', 'o', 'i', 'h', 'n', 's', 'd', 'l', 'u', ...</td>\n",
-        "      <td>  3</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>997</th>\n",
-        "      <td>          torts</td>\n",
-        "      <td>                         ['t', 'o', 'r', 't', 's']</td>\n",
-        "      <td>                         ['e', 'a', 'i', 'h', 'n']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 5</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>998</th>\n",
-        "      <td>     tyrannised</td>\n",
-        "      <td> ['t', 'y', 'r', 'a', 'n', 'n', 'i', 's', 'e', ...</td>\n",
-        "      <td>               ['o', 'h', 'l', 'u', 'm', 'w', 'c']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 3</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>999</th>\n",
-        "      <td>    indubitable</td>\n",
-        "      <td> ['i', 'n', 'd', 'u', '_', 'i', 't', 'a', '_', ...</td>\n",
-        "      <td> ['o', 'h', 's', 'r', 'm', 'w', 'c', 'y', 'f', ...</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> 0</td>\n",
-        "      <td> False</td>\n",
-        "      <td> 11</td>\n",
-        "    </tr>\n",
-        "  </tbody>\n",
-        "</table>\n",
-        "<p>1000 rows \u00d7 7 columns</p>\n",
-        "</div>"
-       ],
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 10,
-       "text": [
-        "             target                                         discovered  \\\n",
-        "0        mouldering  ['m', 'o', 'u', 'l', 'd', 'e', 'r', 'i', 'n', ...   \n",
-        "1            deject                     ['d', 'e', '_', 'e', '_', 't']   \n",
-        "2         lipsticks      ['l', 'i', '_', 's', 't', 'i', '_', '_', 's']   \n",
-        "3        disparaged  ['d', 'i', 's', '_', 'a', 'r', 'a', '_', 'e', ...   \n",
-        "4            legion                     ['l', 'e', '_', 'i', 'o', 'n']   \n",
-        "5       fabricating  ['_', 'a', '_', 'r', 'i', 'c', 'a', 't', 'i', ...   \n",
-        "6           nicking                ['n', 'i', '_', '_', 'i', 'n', '_']   \n",
-        "7          actinium           ['a', 'c', 't', 'i', 'n', 'i', 'u', 'm']   \n",
-        "8           sedates                ['s', 'e', 'd', 'a', 't', 'e', 's']   \n",
-        "9       modernistic  ['m', 'o', 'd', 'e', 'r', 'n', 'i', 's', 't', ...   \n",
-        "10          grouchy                ['_', 'r', 'o', 'u', '_', 'h', '_']   \n",
-        "11             goop                               ['_', 'o', 'o', '_']   \n",
-        "12         theorems           ['t', 'h', 'e', 'o', 'r', 'e', 'm', 's']   \n",
-        "13       panickiest  ['_', 'a', 'n', 'i', 'c', '_', 'i', 'e', 's', ...   \n",
-        "14       rightfully  ['r', 'i', 'g', 'h', 't', 'f', 'u', 'l', 'l', ...   \n",
-        "15         esquires           ['e', 's', '_', 'u', 'i', 'r', 'e', 's']   \n",
-        "16           violet                     ['_', 'i', 'o', 'l', 'e', 't']   \n",
-        "17   dermatologists  ['d', 'e', 'r', 'm', 'a', 't', 'o', 'l', 'o', ...   \n",
-        "18            inane                          ['i', 'n', 'a', 'n', 'e']   \n",
-        "19          bonkers                ['_', 'o', 'n', '_', 'e', 'r', 's']   \n",
-        "20      reassigning  ['r', 'e', 'a', 's', 's', 'i', '_', 'n', 'i', ...   \n",
-        "21        sweatshop      ['s', 'w', 'e', 'a', 't', 's', 'h', 'o', '_']   \n",
-        "22               ks                                         ['_', 's']   \n",
-        "23         outcomes           ['o', 'u', 't', 'c', 'o', 'm', 'e', 's']   \n",
-        "24       parenthood  ['_', 'a', 'r', 'e', 'n', 't', 'h', 'o', 'o', ...   \n",
-        "25      frequencies  ['f', 'r', 'e', '_', 'u', 'e', 'n', 'c', 'i', ...   \n",
-        "26           manias                     ['m', 'a', 'n', 'i', 'a', 's']   \n",
-        "27      resupplying  ['r', 'e', 's', 'u', 'p', 'p', 'l', 'y', 'i', ...   \n",
-        "28     subcontinent  ['s', 'u', '_', 'c', 'o', 'n', 't', 'i', 'n', ...   \n",
-        "29        baptismal      ['_', 'a', '_', 't', 'i', 's', 'm', 'a', 'l']   \n",
-        "..              ...                                                ...   \n",
-        "970           toxic                          ['t', 'o', '_', 'i', '_']   \n",
-        "971     brigantines  ['_', 'r', 'i', '_', 'a', 'n', 't', 'i', 'n', ...   \n",
-        "972         imagery                ['i', 'm', 'a', '_', 'e', 'r', '_']   \n",
-        "973     melancholic  ['m', 'e', 'l', 'a', 'n', 'c', 'h', 'o', 'l', ...   \n",
-        "974     enthusiasms  ['e', 'n', 't', 'h', 'u', 's', 'i', 'a', 's', ...   \n",
-        "975         abraded                ['a', '_', 'r', 'a', 'd', 'e', 'd']   \n",
-        "976           lakes                          ['l', 'a', '_', 'e', 's']   \n",
-        "977  telepathically  ['t', 'e', 'l', 'e', '_', 'a', 't', 'h', 'i', ...   \n",
-        "978          taking                     ['t', 'a', '_', 'i', 'n', '_']   \n",
-        "979        tomorrow           ['t', 'o', 'm', 'o', 'r', 'r', 'o', 'w']   \n",
-        "980          refile                     ['r', 'e', '_', 'i', 'l', 'e']   \n",
-        "981          unkind                     ['u', 'n', '_', 'i', 'n', 'd']   \n",
-        "982       specimens      ['s', '_', 'e', 'c', 'i', 'm', 'e', 'n', 's']   \n",
-        "983         regrets                ['r', 'e', '_', 'r', 'e', 't', 's']   \n",
-        "984     remaindered  ['r', 'e', 'm', 'a', 'i', 'n', 'd', 'e', 'r', ...   \n",
-        "985         dignify                ['d', 'i', '_', 'n', 'i', '_', '_']   \n",
-        "986       bandwagon      ['_', 'a', 'n', 'd', 'w', 'a', '_', 'o', 'n']   \n",
-        "987      pacemakers  ['_', 'a', 'c', 'e', 'm', 'a', '_', 'e', 'r', ...   \n",
-        "988         dandles                ['d', 'a', 'n', 'd', 'l', 'e', 's']   \n",
-        "989           white                          ['w', 'h', 'i', 't', 'e']   \n",
-        "990           arena                          ['a', 'r', 'e', 'n', 'a']   \n",
-        "991         surreal                ['s', 'u', 'r', 'r', 'e', 'a', 'l']   \n",
-        "992        gutsiest           ['_', 'u', 't', 's', 'i', 'e', 's', 't']   \n",
-        "993      annulments  ['a', 'n', 'n', 'u', 'l', 'm', 'e', 'n', 't', ...   \n",
-        "994      accretions  ['a', 'c', 'c', 'r', 'e', 't', 'i', 'o', 'n', ...   \n",
-        "995          safari                     ['s', 'a', '_', 'a', 'r', 'i']   \n",
-        "996           recap                          ['r', 'e', '_', 'a', '_']   \n",
-        "997           torts                          ['t', 'o', 'r', 't', 's']   \n",
-        "998      tyrannised  ['t', 'y', 'r', 'a', 'n', 'n', 'i', 's', 'e', ...   \n",
-        "999     indubitable  ['i', 'n', 'd', 'u', '_', 'i', 't', 'a', '_', ...   \n",
-        "\n",
-        "                                         wrong letters  number of hits  \\\n",
-        "0             ['t', 'a', 'h', 's', 'w', 'c', 'y', 'f']              10   \n",
-        "1    ['a', 'o', 'i', 'h', 'n', 's', 'r', 'l', 'u', ...               4   \n",
-        "2    ['e', 'a', 'o', 'h', 'n', 'r', 'd', 'u', 'm', ...               6   \n",
-        "3    ['t', 'o', 'h', 'n', 'l', 'u', 'm', 'w', 'c', ...               8   \n",
-        "4    ['t', 'a', 'h', 's', 'r', 'd', 'u', 'm', 'w', ...               5   \n",
-        "5    ['e', 'o', 'h', 's', 'd', 'l', 'u', 'm', 'w', ...               8   \n",
-        "6    ['e', 't', 'a', 'o', 'h', 's', 'r', 'd', 'l', ...               4   \n",
-        "7             ['e', 'o', 'h', 's', 'r', 'd', 'l', 'w']               8   \n",
-        "8                            ['o', 'i', 'h', 'n', 'r']               7   \n",
-        "9                            ['a', 'h', 'l', 'u', 'w']              11   \n",
-        "10   ['e', 't', 'a', 'i', 'n', 's', 'd', 'l', 'm', ...               4   \n",
-        "11   ['e', 't', 'a', 'i', 'h', 'n', 's', 'r', 'd', ...               2   \n",
-        "12                      ['a', 'i', 'n', 'd', 'l', 'u']               8   \n",
-        "13   ['o', 'h', 'r', 'd', 'l', 'u', 'm', 'w', 'y', ...               8   \n",
-        "14       ['e', 'a', 'o', 'n', 's', 'd', 'm', 'w', 'c']              10   \n",
-        "15   ['t', 'a', 'o', 'h', 'n', 'd', 'l', 'm', 'w', ...               7   \n",
-        "16   ['a', 'h', 'n', 's', 'r', 'd', 'u', 'm', 'w', ...               5   \n",
-        "17                 ['h', 'n', 'u', 'w', 'c', 'y', 'f']              14   \n",
-        "18                                     ['t', 'o', 'h']               5   \n",
-        "19   ['t', 'a', 'i', 'h', 'd', 'l', 'u', 'm', 'w', ...               5   \n",
-        "20   ['t', 'o', 'h', 'd', 'l', 'u', 'm', 'w', 'c', ...               9   \n",
-        "21   ['i', 'n', 'r', 'd', 'l', 'u', 'm', 'c', 'y', ...               8   \n",
-        "22   ['e', 't', 'a', 'o', 'i', 'h', 'n', 'r', 'd', ...               1   \n",
-        "23            ['a', 'i', 'h', 'n', 'r', 'd', 'l', 'w']               8   \n",
-        "24   ['i', 's', 'l', 'u', 'm', 'w', 'c', 'y', 'f', ...               9   \n",
-        "25   ['t', 'a', 'o', 'h', 'd', 'l', 'm', 'w', 'y', ...              10   \n",
-        "26            ['e', 't', 'o', 'h', 'r', 'd', 'l', 'u']               6   \n",
-        "27       ['t', 'a', 'o', 'h', 'd', 'm', 'w', 'c', 'f']              11   \n",
-        "28   ['a', 'h', 'r', 'd', 'l', 'm', 'w', 'y', 'f', ...              11   \n",
-        "29   ['e', 'o', 'h', 'n', 'r', 'd', 'u', 'w', 'c', ...               7   \n",
-        "..                                                 ...             ...   \n",
-        "970  ['e', 'a', 'h', 'n', 's', 'r', 'd', 'l', 'u', ...               3   \n",
-        "971  ['o', 'h', 'd', 'l', 'u', 'm', 'w', 'c', 'y', ...               9   \n",
-        "972  ['t', 'o', 'h', 'n', 's', 'd', 'l', 'u', 'w', ...               5   \n",
-        "973                     ['t', 's', 'r', 'd', 'u', 'w']              11   \n",
-        "974                               ['o', 'r', 'd', 'l']              11   \n",
-        "975  ['t', 'o', 'i', 'h', 'n', 's', 'l', 'u', 'm', ...               6   \n",
-        "976  ['t', 'o', 'i', 'h', 'n', 'r', 'd', 'u', 'm', ...               4   \n",
-        "977  ['o', 'n', 's', 'r', 'd', 'u', 'm', 'w', 'f', ...              13   \n",
-        "978  ['e', 'o', 'h', 's', 'r', 'd', 'l', 'u', 'm', ...               4   \n",
-        "979      ['e', 'a', 'i', 'h', 'n', 's', 'd', 'l', 'u']               8   \n",
-        "980  ['t', 'a', 'o', 'h', 'n', 's', 'd', 'u', 'm', ...               5   \n",
-        "981  ['e', 't', 'a', 'o', 'h', 's', 'r', 'l', 'm', ...               5   \n",
-        "982  ['t', 'a', 'o', 'h', 'r', 'd', 'l', 'u', 'w', ...               8   \n",
-        "983  ['a', 'o', 'i', 'h', 'n', 'd', 'l', 'u', 'm', ...               6   \n",
-        "984                     ['t', 'o', 'h', 's', 'l', 'u']              11   \n",
-        "985  ['e', 't', 'a', 'o', 'h', 's', 'r', 'l', 'u', ...               4   \n",
-        "986  ['e', 't', 'i', 'h', 's', 'r', 'l', 'u', 'm', ...               7   \n",
-        "987  ['t', 'o', 'i', 'h', 'n', 'd', 'l', 'u', 'w', ...               8   \n",
-        "988                          ['t', 'o', 'i', 'h', 'r']               7   \n",
-        "989      ['a', 'o', 'n', 's', 'r', 'd', 'l', 'u', 'm']               5   \n",
-        "990                          ['t', 'o', 'i', 'h', 's']               5   \n",
-        "991                     ['t', 'o', 'i', 'h', 'n', 'd']               7   \n",
-        "992  ['a', 'o', 'h', 'n', 'r', 'd', 'l', 'm', 'w', ...               7   \n",
-        "993                          ['o', 'i', 'h', 'r', 'd']              10   \n",
-        "994                     ['h', 'd', 'l', 'u', 'm', 'w']              10   \n",
-        "995  ['e', 't', 'o', 'h', 'n', 'd', 'l', 'u', 'm', ...               5   \n",
-        "996  ['t', 'o', 'i', 'h', 'n', 's', 'd', 'l', 'u', ...               3   \n",
-        "997                          ['e', 'a', 'i', 'h', 'n']               5   \n",
-        "998                ['o', 'h', 'l', 'u', 'm', 'w', 'c']              10   \n",
-        "999  ['o', 'h', 's', 'r', 'm', 'w', 'c', 'y', 'f', ...               9   \n",
-        "\n",
-        "     lives remaining game won  word length  \n",
-        "0                  2     True           10  \n",
-        "1                  0    False            6  \n",
-        "2                  0    False            9  \n",
-        "3                  0    False           10  \n",
-        "4                  0    False            6  \n",
-        "5                  0    False           11  \n",
-        "6                  0    False            7  \n",
-        "7                  2     True            8  \n",
-        "8                  5     True            7  \n",
-        "9                  5     True           11  \n",
-        "10                 0    False            7  \n",
-        "11                 0    False            4  \n",
-        "12                 4     True            8  \n",
-        "13                 0    False           10  \n",
-        "14                 1     True           10  \n",
-        "15                 0    False            8  \n",
-        "16                 0    False            6  \n",
-        "17                 3     True           14  \n",
-        "18                 7     True            5  \n",
-        "19                 0    False            7  \n",
-        "20                 0    False           11  \n",
-        "21                 0    False            9  \n",
-        "22                 0    False            2  \n",
-        "23                 2     True            8  \n",
-        "24                 0    False           10  \n",
-        "25                 0    False           11  \n",
-        "26                 2     True            6  \n",
-        "27                 1     True           11  \n",
-        "28                 0    False           12  \n",
-        "29                 0    False            9  \n",
-        "..               ...      ...          ...  \n",
-        "970                0    False            5  \n",
-        "971                0    False           11  \n",
-        "972                0    False            7  \n",
-        "973                4     True           11  \n",
-        "974                6     True           11  \n",
-        "975                0    False            7  \n",
-        "976                0    False            5  \n",
-        "977                0    False           14  \n",
-        "978                0    False            6  \n",
-        "979                1     True            8  \n",
-        "980                0    False            6  \n",
-        "981                0    False            6  \n",
-        "982                0    False            9  \n",
-        "983                0    False            7  \n",
-        "984                4     True           11  \n",
-        "985                0    False            7  \n",
-        "986                0    False            9  \n",
-        "987                0    False           10  \n",
-        "988                5     True            7  \n",
-        "989                1     True            5  \n",
-        "990                5     True            5  \n",
-        "991                4     True            7  \n",
-        "992                0    False            8  \n",
-        "993                5     True           10  \n",
-        "994                4     True           10  \n",
-        "995                0    False            6  \n",
-        "996                0    False            5  \n",
-        "997                5     True            5  \n",
-        "998                3     True           10  \n",
-        "999                0    False           11  \n",
-        "\n",
-        "[1000 rows x 7 columns]"
-       ]
-      }
-     ],
-     "prompt_number": 10
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "fixed_order['lives remaining'].hist()"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 11,
-       "text": [
-        "<matplotlib.axes.AxesSubplot at 0x7f15a58c0780>"
-       ]
-      },
-      {
-       "metadata": {},
-       "output_type": "display_data",
-       "png": "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\ntnpo7g5vAAAAAElFTkSuQmCC\n",
-       "text": [
-        "<matplotlib.figure.Figure at 0x7f15a58e0fd0>"
-       ]
-      }
-     ],
-     "prompt_number": 11
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "fixed_order.groupby('lives remaining').size()"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 12,
-       "text": [
-        "lives remaining\n",
-        "0                  667\n",
-        "1                   86\n",
-        "2                   60\n",
-        "3                   59\n",
-        "4                   50\n",
-        "5                   35\n",
-        "6                   22\n",
-        "7                   15\n",
-        "8                    6\n",
-        "dtype: int64"
-       ]
-      }
-     ],
-     "prompt_number": 12
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "adaptive_pattern = pd.read_csv('adaptive_pattern.csv')\n",
-      "adaptive_pattern"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "html": [
-        "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
-        "<table border=\"1\" class=\"dataframe\">\n",
-        "  <thead>\n",
-        "    <tr style=\"text-align: right;\">\n",
-        "      <th></th>\n",
-        "      <th>target</th>\n",
-        "      <th>discovered</th>\n",
-        "      <th>wrong letters</th>\n",
-        "      <th>number of hits</th>\n",
-        "      <th>lives remaining</th>\n",
-        "      <th>game won</th>\n",
-        "    </tr>\n",
-        "  </thead>\n",
-        "  <tbody>\n",
-        "    <tr>\n",
-        "      <th>0  </th>\n",
-        "      <td>      toothsome</td>\n",
-        "      <td>     ['t', 'o', 'o', 't', 'h', 's', 'o', 'm', 'e']</td>\n",
-        "      <td>                     ['a', 'i']</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>1  </th>\n",
-        "      <td>     analgesics</td>\n",
-        "      <td> ['a', 'n', 'a', 'l', 'g', 'e', 's', 'i', 'c', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>2  </th>\n",
-        "      <td>     intrenched</td>\n",
-        "      <td> ['i', 'n', 't', 'r', 'e', 'n', 'c', 'h', 'e', ...</td>\n",
-        "      <td>                          ['s']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>3  </th>\n",
-        "      <td>         normal</td>\n",
-        "      <td>                    ['n', 'o', 'r', 'm', 'a', 'l']</td>\n",
-        "      <td>           ['e', 's', 'i', 'f']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>4  </th>\n",
-        "      <td>        debunks</td>\n",
-        "      <td>               ['d', 'e', 'b', 'u', 'n', 'k', 's']</td>\n",
-        "      <td>                          ['t']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>5  </th>\n",
-        "      <td>    satanically</td>\n",
-        "      <td> ['s', 'a', 't', 'a', 'n', 'i', 'c', 'a', 'l', ...</td>\n",
-        "      <td>                          ['e']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>6  </th>\n",
-        "      <td>       radicals</td>\n",
-        "      <td>          ['r', 'a', 'd', 'i', 'c', 'a', 'l', 's']</td>\n",
-        "      <td>                     ['e', 't']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>7  </th>\n",
-        "      <td>         erotic</td>\n",
-        "      <td>                    ['e', 'r', 'o', 't', 'i', 'c']</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>8  </th>\n",
-        "      <td>         double</td>\n",
-        "      <td>                    ['d', 'o', 'u', 'b', 'l', 'e']</td>\n",
-        "      <td>                ['a', 'm', 'r']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>9  </th>\n",
-        "      <td>         caviar</td>\n",
-        "      <td>                    ['c', 'a', 'v', 'i', 'a', 'r']</td>\n",
-        "      <td>           ['e', 's', 'n', 'l']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>10 </th>\n",
-        "      <td>    rigamaroles</td>\n",
-        "      <td> ['r', 'i', 'g', 'a', 'm', 'a', 'r', 'o', 'l', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 11</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>11 </th>\n",
-        "      <td>  disfranchises</td>\n",
-        "      <td> ['d', 'i', 's', 'f', 'r', 'a', 'n', 'c', 'h', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 13</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>12 </th>\n",
-        "      <td>     mushroomed</td>\n",
-        "      <td> ['m', 'u', 's', 'h', 'r', 'o', 'o', 'm', 'e', ...</td>\n",
-        "      <td>                          ['t']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>13 </th>\n",
-        "      <td>          rails</td>\n",
-        "      <td>                         ['r', 'a', 'i', 'l', 's']</td>\n",
-        "      <td> ['e', 'o', 't', 'm', 'f', 'w']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  4</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>14 </th>\n",
-        "      <td>         poised</td>\n",
-        "      <td>                    ['p', 'o', 'i', 's', 'e', 'd']</td>\n",
-        "      <td>           ['a', 'l', 't', 'k']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>15 </th>\n",
-        "      <td>    circulating</td>\n",
-        "      <td> ['c', 'i', 'r', 'c', 'u', 'l', 'a', 't', 'i', ...</td>\n",
-        "      <td>                          ['e']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>16 </th>\n",
-        "      <td>     yesteryear</td>\n",
-        "      <td> ['y', 'e', 's', 't', 'e', 'r', 'y', 'e', 'a', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>17 </th>\n",
-        "      <td>       chastest</td>\n",
-        "      <td>          ['c', 'h', 'a', 's', 't', 'e', 's', 't']</td>\n",
-        "      <td>                          ['m']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>18 </th>\n",
-        "      <td>        lenders</td>\n",
-        "      <td>               ['l', 'e', 'n', 'd', 'e', 'r', 's']</td>\n",
-        "      <td>                ['t', 'f', 'm']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>19 </th>\n",
-        "      <td>        upshots</td>\n",
-        "      <td>               ['u', 'p', 's', 'h', 'o', 't', 's']</td>\n",
-        "      <td>           ['e', 'i', 'a', 'n']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>20 </th>\n",
-        "      <td>       stridden</td>\n",
-        "      <td>          ['s', 't', 'r', 'i', 'd', 'd', 'e', 'n']</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>21 </th>\n",
-        "      <td>    trespassing</td>\n",
-        "      <td> ['t', 'r', 'e', 's', 'p', 'a', 's', 's', 'i', ...</td>\n",
-        "      <td>                          ['o']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>22 </th>\n",
-        "      <td>       muckrake</td>\n",
-        "      <td>          ['m', 'u', 'c', 'k', 'r', 'a', 'k', 'e']</td>\n",
-        "      <td>                          ['t']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>23 </th>\n",
-        "      <td>      bungalows</td>\n",
-        "      <td>     ['b', 'u', 'n', 'g', 'a', 'l', 'o', 'w', 's']</td>\n",
-        "      <td>                ['e', 'i', 't']</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>24 </th>\n",
-        "      <td>      rewinding</td>\n",
-        "      <td>     ['r', 'e', 'w', 'i', 'n', 'd', 'i', 'n', 'g']</td>\n",
-        "      <td>                          ['m']</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>25 </th>\n",
-        "      <td>   stepchildren</td>\n",
-        "      <td> ['s', 't', 'e', 'p', 'c', 'h', 'i', 'l', 'd', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 12</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>26 </th>\n",
-        "      <td>   courageously</td>\n",
-        "      <td> ['c', 'o', 'u', 'r', 'a', 'g', 'e', 'o', 'u', ...</td>\n",
-        "      <td>                          ['i']</td>\n",
-        "      <td> 12</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>27 </th>\n",
-        "      <td>   gladiatorial</td>\n",
-        "      <td> ['g', 'l', 'a', 'd', 'i', 'a', 't', 'o', 'r', ...</td>\n",
-        "      <td>                          ['e']</td>\n",
-        "      <td> 12</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>28 </th>\n",
-        "      <td>        unseals</td>\n",
-        "      <td>               ['u', 'n', 's', 'e', 'a', 'l', 's']</td>\n",
-        "      <td>                          ['t']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>29 </th>\n",
-        "      <td>      backaches</td>\n",
-        "      <td>     ['b', 'a', 'c', 'k', 'a', 'c', 'h', 'e', 's']</td>\n",
-        "      <td>                          ['i']</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>...</th>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>970</th>\n",
-        "      <td>    priestliest</td>\n",
-        "      <td> ['p', 'r', 'i', 'e', 's', 't', 'l', 'i', 'e', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 11</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>971</th>\n",
-        "      <td>      oversight</td>\n",
-        "      <td>     ['o', 'v', 'e', 'r', 's', 'i', 'g', 'h', 't']</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>972</th>\n",
-        "      <td>       nutshell</td>\n",
-        "      <td>          ['n', 'u', 't', 's', 'h', 'e', 'l', 'l']</td>\n",
-        "      <td>                          ['r']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>973</th>\n",
-        "      <td>         picker</td>\n",
-        "      <td>                    ['p', 'i', 'c', 'k', 'e', 'r']</td>\n",
-        "      <td>           ['d', 's', 't', 'g']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>974</th>\n",
-        "      <td>           prom</td>\n",
-        "      <td>                              ['p', 'r', 'o', 'm']</td>\n",
-        "      <td>                ['e', 's', 'l']</td>\n",
-        "      <td>  4</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>975</th>\n",
-        "      <td>          spoke</td>\n",
-        "      <td>                         ['s', 'p', 'o', 'k', 'e']</td>\n",
-        "      <td>           ['a', 'i', 't', 'r']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>976</th>\n",
-        "      <td>     videodiscs</td>\n",
-        "      <td> ['v', 'i', 'd', 'e', 'o', 'd', 'i', 's', 'c', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>977</th>\n",
-        "      <td>       braggart</td>\n",
-        "      <td>          ['b', 'r', 'a', 'g', 'g', 'a', 'r', 't']</td>\n",
-        "      <td>                     ['e', 'i']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>978</th>\n",
-        "      <td>       shindigs</td>\n",
-        "      <td>          ['s', 'h', 'i', 'n', 'd', 'i', 'g', 's']</td>\n",
-        "      <td>                          ['e']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>979</th>\n",
-        "      <td>   indorsements</td>\n",
-        "      <td> ['i', 'n', 'd', 'o', 'r', 's', 'e', 'm', 'e', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 12</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>980</th>\n",
-        "      <td>         audios</td>\n",
-        "      <td>                    ['a', 'u', 'd', 'i', 'o', 's']</td>\n",
-        "      <td>                          ['e']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>981</th>\n",
-        "      <td>       disrobes</td>\n",
-        "      <td>          ['d', 'i', 's', 'r', 'o', 'b', 'e', 's']</td>\n",
-        "      <td>                     ['t', 'm']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>982</th>\n",
-        "      <td>          drake</td>\n",
-        "      <td>                         ['d', 'r', 'a', 'k', 'e']</td>\n",
-        "      <td>      ['s', 'c', 't', 'g', 'p']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>983</th>\n",
-        "      <td>          penes</td>\n",
-        "      <td>                         ['p', 'e', 'n', 'e', 's']</td>\n",
-        "      <td>                          ['m']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>984</th>\n",
-        "      <td>     ecological</td>\n",
-        "      <td> ['e', 'c', 'o', 'l', 'o', 'g', 'i', 'c', 'a', ...</td>\n",
-        "      <td>                          ['s']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>985</th>\n",
-        "      <td>  consideration</td>\n",
-        "      <td> ['c', 'o', 'n', 's', 'i', 'd', 'e', 'r', 'a', ...</td>\n",
-        "      <td>                          ['f']</td>\n",
-        "      <td> 13</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>986</th>\n",
-        "      <td>       strolled</td>\n",
-        "      <td>          ['s', 't', 'r', 'o', 'l', 'l', 'e', 'd']</td>\n",
-        "      <td>                ['p', 'i', 'm']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>987</th>\n",
-        "      <td>     peacemaker</td>\n",
-        "      <td> ['p', 'e', 'a', 'c', 'e', 'm', 'a', 'k', 'e', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>988</th>\n",
-        "      <td>      chilliest</td>\n",
-        "      <td>     ['c', 'h', 'i', 'l', 'l', 'i', 'e', 's', 't']</td>\n",
-        "      <td>                          ['f']</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>989</th>\n",
-        "      <td>       neuritis</td>\n",
-        "      <td>          ['n', 'e', 'u', 'r', 'i', 't', 'i', 's']</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>990</th>\n",
-        "      <td>       quisling</td>\n",
-        "      <td>          ['q', 'u', 'i', 's', 'l', 'i', 'n', 'g']</td>\n",
-        "      <td>           ['e', 't', 'k', 'p']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>991</th>\n",
-        "      <td>    transplants</td>\n",
-        "      <td> ['t', 'r', 'a', 'n', 's', 'p', 'l', 'a', 'n', ...</td>\n",
-        "      <td>                ['e', 'i', 'o']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>992</th>\n",
-        "      <td>         bevies</td>\n",
-        "      <td>                    ['b', 'e', 'v', 'i', 'e', 's']</td>\n",
-        "      <td>                ['d', 'r', 'l']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>993</th>\n",
-        "      <td>          geeky</td>\n",
-        "      <td>                         ['g', 'e', 'e', 'k', 'y']</td>\n",
-        "      <td>           ['s', 'd', 't', 'f']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>994</th>\n",
-        "      <td> demonstrations</td>\n",
-        "      <td> ['d', 'e', 'm', 'o', 'n', 's', 't', 'r', 'a', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 14</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>995</th>\n",
-        "      <td>         dowses</td>\n",
-        "      <td>                    ['d', 'o', 'w', 's', 'e', 's']</td>\n",
-        "      <td>                     ['r', 'u']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>996</th>\n",
-        "      <td>     pummelling</td>\n",
-        "      <td> ['p', 'u', 'm', 'm', 'e', 'l', 'l', 'i', 'n', ...</td>\n",
-        "      <td>                ['s', 'r', 'o']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>997</th>\n",
-        "      <td>    earnestness</td>\n",
-        "      <td> ['e', 'a', 'r', 'n', 'e', 's', 't', 'n', 'e', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 11</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>998</th>\n",
-        "      <td> thermodynamics</td>\n",
-        "      <td> ['t', 'h', 'e', 'r', 'm', 'o', 'd', 'y', 'n', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 14</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>999</th>\n",
-        "      <td>         flurry</td>\n",
-        "      <td>                    ['f', 'l', 'u', 'r', 'r', 'y']</td>\n",
-        "      <td>      ['e', 's', 'i', 'a', 'o']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> True</td>\n",
-        "    </tr>\n",
-        "  </tbody>\n",
-        "</table>\n",
-        "<p>1000 rows \u00d7 6 columns</p>\n",
-        "</div>"
-       ],
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 18,
-       "text": [
-        "             target                                         discovered  \\\n",
-        "0         toothsome      ['t', 'o', 'o', 't', 'h', 's', 'o', 'm', 'e']   \n",
-        "1        analgesics  ['a', 'n', 'a', 'l', 'g', 'e', 's', 'i', 'c', ...   \n",
-        "2        intrenched  ['i', 'n', 't', 'r', 'e', 'n', 'c', 'h', 'e', ...   \n",
-        "3            normal                     ['n', 'o', 'r', 'm', 'a', 'l']   \n",
-        "4           debunks                ['d', 'e', 'b', 'u', 'n', 'k', 's']   \n",
-        "5       satanically  ['s', 'a', 't', 'a', 'n', 'i', 'c', 'a', 'l', ...   \n",
-        "6          radicals           ['r', 'a', 'd', 'i', 'c', 'a', 'l', 's']   \n",
-        "7            erotic                     ['e', 'r', 'o', 't', 'i', 'c']   \n",
-        "8            double                     ['d', 'o', 'u', 'b', 'l', 'e']   \n",
-        "9            caviar                     ['c', 'a', 'v', 'i', 'a', 'r']   \n",
-        "10      rigamaroles  ['r', 'i', 'g', 'a', 'm', 'a', 'r', 'o', 'l', ...   \n",
-        "11    disfranchises  ['d', 'i', 's', 'f', 'r', 'a', 'n', 'c', 'h', ...   \n",
-        "12       mushroomed  ['m', 'u', 's', 'h', 'r', 'o', 'o', 'm', 'e', ...   \n",
-        "13            rails                          ['r', 'a', 'i', 'l', 's']   \n",
-        "14           poised                     ['p', 'o', 'i', 's', 'e', 'd']   \n",
-        "15      circulating  ['c', 'i', 'r', 'c', 'u', 'l', 'a', 't', 'i', ...   \n",
-        "16       yesteryear  ['y', 'e', 's', 't', 'e', 'r', 'y', 'e', 'a', ...   \n",
-        "17         chastest           ['c', 'h', 'a', 's', 't', 'e', 's', 't']   \n",
-        "18          lenders                ['l', 'e', 'n', 'd', 'e', 'r', 's']   \n",
-        "19          upshots                ['u', 'p', 's', 'h', 'o', 't', 's']   \n",
-        "20         stridden           ['s', 't', 'r', 'i', 'd', 'd', 'e', 'n']   \n",
-        "21      trespassing  ['t', 'r', 'e', 's', 'p', 'a', 's', 's', 'i', ...   \n",
-        "22         muckrake           ['m', 'u', 'c', 'k', 'r', 'a', 'k', 'e']   \n",
-        "23        bungalows      ['b', 'u', 'n', 'g', 'a', 'l', 'o', 'w', 's']   \n",
-        "24        rewinding      ['r', 'e', 'w', 'i', 'n', 'd', 'i', 'n', 'g']   \n",
-        "25     stepchildren  ['s', 't', 'e', 'p', 'c', 'h', 'i', 'l', 'd', ...   \n",
-        "26     courageously  ['c', 'o', 'u', 'r', 'a', 'g', 'e', 'o', 'u', ...   \n",
-        "27     gladiatorial  ['g', 'l', 'a', 'd', 'i', 'a', 't', 'o', 'r', ...   \n",
-        "28          unseals                ['u', 'n', 's', 'e', 'a', 'l', 's']   \n",
-        "29        backaches      ['b', 'a', 'c', 'k', 'a', 'c', 'h', 'e', 's']   \n",
-        "..              ...                                                ...   \n",
-        "970     priestliest  ['p', 'r', 'i', 'e', 's', 't', 'l', 'i', 'e', ...   \n",
-        "971       oversight      ['o', 'v', 'e', 'r', 's', 'i', 'g', 'h', 't']   \n",
-        "972        nutshell           ['n', 'u', 't', 's', 'h', 'e', 'l', 'l']   \n",
-        "973          picker                     ['p', 'i', 'c', 'k', 'e', 'r']   \n",
-        "974            prom                               ['p', 'r', 'o', 'm']   \n",
-        "975           spoke                          ['s', 'p', 'o', 'k', 'e']   \n",
-        "976      videodiscs  ['v', 'i', 'd', 'e', 'o', 'd', 'i', 's', 'c', ...   \n",
-        "977        braggart           ['b', 'r', 'a', 'g', 'g', 'a', 'r', 't']   \n",
-        "978        shindigs           ['s', 'h', 'i', 'n', 'd', 'i', 'g', 's']   \n",
-        "979    indorsements  ['i', 'n', 'd', 'o', 'r', 's', 'e', 'm', 'e', ...   \n",
-        "980          audios                     ['a', 'u', 'd', 'i', 'o', 's']   \n",
-        "981        disrobes           ['d', 'i', 's', 'r', 'o', 'b', 'e', 's']   \n",
-        "982           drake                          ['d', 'r', 'a', 'k', 'e']   \n",
-        "983           penes                          ['p', 'e', 'n', 'e', 's']   \n",
-        "984      ecological  ['e', 'c', 'o', 'l', 'o', 'g', 'i', 'c', 'a', ...   \n",
-        "985   consideration  ['c', 'o', 'n', 's', 'i', 'd', 'e', 'r', 'a', ...   \n",
-        "986        strolled           ['s', 't', 'r', 'o', 'l', 'l', 'e', 'd']   \n",
-        "987      peacemaker  ['p', 'e', 'a', 'c', 'e', 'm', 'a', 'k', 'e', ...   \n",
-        "988       chilliest      ['c', 'h', 'i', 'l', 'l', 'i', 'e', 's', 't']   \n",
-        "989        neuritis           ['n', 'e', 'u', 'r', 'i', 't', 'i', 's']   \n",
-        "990        quisling           ['q', 'u', 'i', 's', 'l', 'i', 'n', 'g']   \n",
-        "991     transplants  ['t', 'r', 'a', 'n', 's', 'p', 'l', 'a', 'n', ...   \n",
-        "992          bevies                     ['b', 'e', 'v', 'i', 'e', 's']   \n",
-        "993           geeky                          ['g', 'e', 'e', 'k', 'y']   \n",
-        "994  demonstrations  ['d', 'e', 'm', 'o', 'n', 's', 't', 'r', 'a', ...   \n",
-        "995          dowses                     ['d', 'o', 'w', 's', 'e', 's']   \n",
-        "996      pummelling  ['p', 'u', 'm', 'm', 'e', 'l', 'l', 'i', 'n', ...   \n",
-        "997     earnestness  ['e', 'a', 'r', 'n', 'e', 's', 't', 'n', 'e', ...   \n",
-        "998  thermodynamics  ['t', 'h', 'e', 'r', 'm', 'o', 'd', 'y', 'n', ...   \n",
-        "999          flurry                     ['f', 'l', 'u', 'r', 'r', 'y']   \n",
-        "\n",
-        "                      wrong letters  number of hits  lives remaining game won  \n",
-        "0                        ['a', 'i']               9                8     True  \n",
-        "1                                []              10               10     True  \n",
-        "2                             ['s']              10                9     True  \n",
-        "3              ['e', 's', 'i', 'f']               6                6     True  \n",
-        "4                             ['t']               7                9     True  \n",
-        "5                             ['e']              11                9     True  \n",
-        "6                        ['e', 't']               8                8     True  \n",
-        "7                                []               6               10     True  \n",
-        "8                   ['a', 'm', 'r']               6                7     True  \n",
-        "9              ['e', 's', 'n', 'l']               6                6     True  \n",
-        "10                               []              11               10     True  \n",
-        "11                               []              13               10     True  \n",
-        "12                            ['t']              10                9     True  \n",
-        "13   ['e', 'o', 't', 'm', 'f', 'w']               5                4     True  \n",
-        "14             ['a', 'l', 't', 'k']               6                6     True  \n",
-        "15                            ['e']              11                9     True  \n",
-        "16                               []              10               10     True  \n",
-        "17                            ['m']               8                9     True  \n",
-        "18                  ['t', 'f', 'm']               7                7     True  \n",
-        "19             ['e', 'i', 'a', 'n']               7                6     True  \n",
-        "20                               []               8               10     True  \n",
-        "21                            ['o']              11                9     True  \n",
-        "22                            ['t']               8                9     True  \n",
-        "23                  ['e', 'i', 't']               9                7     True  \n",
-        "24                            ['m']               9                9     True  \n",
-        "25                               []              12               10     True  \n",
-        "26                            ['i']              12                9     True  \n",
-        "27                            ['e']              12                9     True  \n",
-        "28                            ['t']               7                9     True  \n",
-        "29                            ['i']               9                9     True  \n",
-        "..                              ...             ...              ...      ...  \n",
-        "970                              []              11               10     True  \n",
-        "971                              []               9               10     True  \n",
-        "972                           ['r']               8                9     True  \n",
-        "973            ['d', 's', 't', 'g']               6                6     True  \n",
-        "974                 ['e', 's', 'l']               4                7     True  \n",
-        "975            ['a', 'i', 't', 'r']               5                6     True  \n",
-        "976                              []              10               10     True  \n",
-        "977                      ['e', 'i']               8                8     True  \n",
-        "978                           ['e']               8                9     True  \n",
-        "979                              []              12               10     True  \n",
-        "980                           ['e']               6                9     True  \n",
-        "981                      ['t', 'm']               8                8     True  \n",
-        "982       ['s', 'c', 't', 'g', 'p']               5                5     True  \n",
-        "983                           ['m']               5                9     True  \n",
-        "984                           ['s']              10                9     True  \n",
-        "985                           ['f']              13                9     True  \n",
-        "986                 ['p', 'i', 'm']               8                7     True  \n",
-        "987                              []              10               10     True  \n",
-        "988                           ['f']               9                9     True  \n",
-        "989                              []               8               10     True  \n",
-        "990            ['e', 't', 'k', 'p']               8                6     True  \n",
-        "991                 ['e', 'i', 'o']              11                7     True  \n",
-        "992                 ['d', 'r', 'l']               6                7     True  \n",
-        "993            ['s', 'd', 't', 'f']               5                6     True  \n",
-        "994                              []              14               10     True  \n",
-        "995                      ['r', 'u']               6                8     True  \n",
-        "996                 ['s', 'r', 'o']              10                7     True  \n",
-        "997                              []              11               10     True  \n",
-        "998                              []              14               10     True  \n",
-        "999       ['e', 's', 'i', 'a', 'o']               6                5     True  \n",
-        "\n",
-        "[1000 rows x 6 columns]"
-       ]
-      }
-     ],
-     "prompt_number": 18
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "adaptive_pattern['word length'] = adaptive_pattern.apply(lambda r: len(r['target']), axis=1)\n",
-      "adaptive_pattern"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "html": [
-        "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
-        "<table border=\"1\" class=\"dataframe\">\n",
-        "  <thead>\n",
-        "    <tr style=\"text-align: right;\">\n",
-        "      <th></th>\n",
-        "      <th>target</th>\n",
-        "      <th>discovered</th>\n",
-        "      <th>wrong letters</th>\n",
-        "      <th>number of hits</th>\n",
-        "      <th>lives remaining</th>\n",
-        "      <th>game won</th>\n",
-        "      <th>word length</th>\n",
-        "    </tr>\n",
-        "  </thead>\n",
-        "  <tbody>\n",
-        "    <tr>\n",
-        "      <th>0  </th>\n",
-        "      <td>      toothsome</td>\n",
-        "      <td>     ['t', 'o', 'o', 't', 'h', 's', 'o', 'm', 'e']</td>\n",
-        "      <td>                     ['a', 'i']</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  9</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>1  </th>\n",
-        "      <td>     analgesics</td>\n",
-        "      <td> ['a', 'n', 'a', 'l', 'g', 'e', 's', 'i', 'c', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>2  </th>\n",
-        "      <td>     intrenched</td>\n",
-        "      <td> ['i', 'n', 't', 'r', 'e', 'n', 'c', 'h', 'e', ...</td>\n",
-        "      <td>                          ['s']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>3  </th>\n",
-        "      <td>         normal</td>\n",
-        "      <td>                    ['n', 'o', 'r', 'm', 'a', 'l']</td>\n",
-        "      <td>           ['e', 's', 'i', 'f']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>4  </th>\n",
-        "      <td>        debunks</td>\n",
-        "      <td>               ['d', 'e', 'b', 'u', 'n', 'k', 's']</td>\n",
-        "      <td>                          ['t']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>5  </th>\n",
-        "      <td>    satanically</td>\n",
-        "      <td> ['s', 'a', 't', 'a', 'n', 'i', 'c', 'a', 'l', ...</td>\n",
-        "      <td>                          ['e']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 11</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>6  </th>\n",
-        "      <td>       radicals</td>\n",
-        "      <td>          ['r', 'a', 'd', 'i', 'c', 'a', 'l', 's']</td>\n",
-        "      <td>                     ['e', 't']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>7  </th>\n",
-        "      <td>         erotic</td>\n",
-        "      <td>                    ['e', 'r', 'o', 't', 'i', 'c']</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>8  </th>\n",
-        "      <td>         double</td>\n",
-        "      <td>                    ['d', 'o', 'u', 'b', 'l', 'e']</td>\n",
-        "      <td>                ['a', 'm', 'r']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>9  </th>\n",
-        "      <td>         caviar</td>\n",
-        "      <td>                    ['c', 'a', 'v', 'i', 'a', 'r']</td>\n",
-        "      <td>           ['e', 's', 'n', 'l']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>10 </th>\n",
-        "      <td>    rigamaroles</td>\n",
-        "      <td> ['r', 'i', 'g', 'a', 'm', 'a', 'r', 'o', 'l', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 11</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 11</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>11 </th>\n",
-        "      <td>  disfranchises</td>\n",
-        "      <td> ['d', 'i', 's', 'f', 'r', 'a', 'n', 'c', 'h', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 13</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 13</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>12 </th>\n",
-        "      <td>     mushroomed</td>\n",
-        "      <td> ['m', 'u', 's', 'h', 'r', 'o', 'o', 'm', 'e', ...</td>\n",
-        "      <td>                          ['t']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>13 </th>\n",
-        "      <td>          rails</td>\n",
-        "      <td>                         ['r', 'a', 'i', 'l', 's']</td>\n",
-        "      <td> ['e', 'o', 't', 'm', 'f', 'w']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  4</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>14 </th>\n",
-        "      <td>         poised</td>\n",
-        "      <td>                    ['p', 'o', 'i', 's', 'e', 'd']</td>\n",
-        "      <td>           ['a', 'l', 't', 'k']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>15 </th>\n",
-        "      <td>    circulating</td>\n",
-        "      <td> ['c', 'i', 'r', 'c', 'u', 'l', 'a', 't', 'i', ...</td>\n",
-        "      <td>                          ['e']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 11</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>16 </th>\n",
-        "      <td>     yesteryear</td>\n",
-        "      <td> ['y', 'e', 's', 't', 'e', 'r', 'y', 'e', 'a', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>17 </th>\n",
-        "      <td>       chastest</td>\n",
-        "      <td>          ['c', 'h', 'a', 's', 't', 'e', 's', 't']</td>\n",
-        "      <td>                          ['m']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>18 </th>\n",
-        "      <td>        lenders</td>\n",
-        "      <td>               ['l', 'e', 'n', 'd', 'e', 'r', 's']</td>\n",
-        "      <td>                ['t', 'f', 'm']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>19 </th>\n",
-        "      <td>        upshots</td>\n",
-        "      <td>               ['u', 'p', 's', 'h', 'o', 't', 's']</td>\n",
-        "      <td>           ['e', 'i', 'a', 'n']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>20 </th>\n",
-        "      <td>       stridden</td>\n",
-        "      <td>          ['s', 't', 'r', 'i', 'd', 'd', 'e', 'n']</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>21 </th>\n",
-        "      <td>    trespassing</td>\n",
-        "      <td> ['t', 'r', 'e', 's', 'p', 'a', 's', 's', 'i', ...</td>\n",
-        "      <td>                          ['o']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 11</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>22 </th>\n",
-        "      <td>       muckrake</td>\n",
-        "      <td>          ['m', 'u', 'c', 'k', 'r', 'a', 'k', 'e']</td>\n",
-        "      <td>                          ['t']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>23 </th>\n",
-        "      <td>      bungalows</td>\n",
-        "      <td>     ['b', 'u', 'n', 'g', 'a', 'l', 'o', 'w', 's']</td>\n",
-        "      <td>                ['e', 'i', 't']</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  9</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>24 </th>\n",
-        "      <td>      rewinding</td>\n",
-        "      <td>     ['r', 'e', 'w', 'i', 'n', 'd', 'i', 'n', 'g']</td>\n",
-        "      <td>                          ['m']</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  9</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>25 </th>\n",
-        "      <td>   stepchildren</td>\n",
-        "      <td> ['s', 't', 'e', 'p', 'c', 'h', 'i', 'l', 'd', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 12</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 12</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>26 </th>\n",
-        "      <td>   courageously</td>\n",
-        "      <td> ['c', 'o', 'u', 'r', 'a', 'g', 'e', 'o', 'u', ...</td>\n",
-        "      <td>                          ['i']</td>\n",
-        "      <td> 12</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 12</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>27 </th>\n",
-        "      <td>   gladiatorial</td>\n",
-        "      <td> ['g', 'l', 'a', 'd', 'i', 'a', 't', 'o', 'r', ...</td>\n",
-        "      <td>                          ['e']</td>\n",
-        "      <td> 12</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 12</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>28 </th>\n",
-        "      <td>        unseals</td>\n",
-        "      <td>               ['u', 'n', 's', 'e', 'a', 'l', 's']</td>\n",
-        "      <td>                          ['t']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>29 </th>\n",
-        "      <td>      backaches</td>\n",
-        "      <td>     ['b', 'a', 'c', 'k', 'a', 'c', 'h', 'e', 's']</td>\n",
-        "      <td>                          ['i']</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  9</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>...</th>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>970</th>\n",
-        "      <td>    priestliest</td>\n",
-        "      <td> ['p', 'r', 'i', 'e', 's', 't', 'l', 'i', 'e', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 11</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 11</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>971</th>\n",
-        "      <td>      oversight</td>\n",
-        "      <td>     ['o', 'v', 'e', 'r', 's', 'i', 'g', 'h', 't']</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  9</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>972</th>\n",
-        "      <td>       nutshell</td>\n",
-        "      <td>          ['n', 'u', 't', 's', 'h', 'e', 'l', 'l']</td>\n",
-        "      <td>                          ['r']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>973</th>\n",
-        "      <td>         picker</td>\n",
-        "      <td>                    ['p', 'i', 'c', 'k', 'e', 'r']</td>\n",
-        "      <td>           ['d', 's', 't', 'g']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>974</th>\n",
-        "      <td>           prom</td>\n",
-        "      <td>                              ['p', 'r', 'o', 'm']</td>\n",
-        "      <td>                ['e', 's', 'l']</td>\n",
-        "      <td>  4</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  4</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>975</th>\n",
-        "      <td>          spoke</td>\n",
-        "      <td>                         ['s', 'p', 'o', 'k', 'e']</td>\n",
-        "      <td>           ['a', 'i', 't', 'r']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>976</th>\n",
-        "      <td>     videodiscs</td>\n",
-        "      <td> ['v', 'i', 'd', 'e', 'o', 'd', 'i', 's', 'c', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>977</th>\n",
-        "      <td>       braggart</td>\n",
-        "      <td>          ['b', 'r', 'a', 'g', 'g', 'a', 'r', 't']</td>\n",
-        "      <td>                     ['e', 'i']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>978</th>\n",
-        "      <td>       shindigs</td>\n",
-        "      <td>          ['s', 'h', 'i', 'n', 'd', 'i', 'g', 's']</td>\n",
-        "      <td>                          ['e']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>979</th>\n",
-        "      <td>   indorsements</td>\n",
-        "      <td> ['i', 'n', 'd', 'o', 'r', 's', 'e', 'm', 'e', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 12</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 12</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>980</th>\n",
-        "      <td>         audios</td>\n",
-        "      <td>                    ['a', 'u', 'd', 'i', 'o', 's']</td>\n",
-        "      <td>                          ['e']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>981</th>\n",
-        "      <td>       disrobes</td>\n",
-        "      <td>          ['d', 'i', 's', 'r', 'o', 'b', 'e', 's']</td>\n",
-        "      <td>                     ['t', 'm']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>982</th>\n",
-        "      <td>          drake</td>\n",
-        "      <td>                         ['d', 'r', 'a', 'k', 'e']</td>\n",
-        "      <td>      ['s', 'c', 't', 'g', 'p']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>983</th>\n",
-        "      <td>          penes</td>\n",
-        "      <td>                         ['p', 'e', 'n', 'e', 's']</td>\n",
-        "      <td>                          ['m']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>984</th>\n",
-        "      <td>     ecological</td>\n",
-        "      <td> ['e', 'c', 'o', 'l', 'o', 'g', 'i', 'c', 'a', ...</td>\n",
-        "      <td>                          ['s']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>985</th>\n",
-        "      <td>  consideration</td>\n",
-        "      <td> ['c', 'o', 'n', 's', 'i', 'd', 'e', 'r', 'a', ...</td>\n",
-        "      <td>                          ['f']</td>\n",
-        "      <td> 13</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 13</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>986</th>\n",
-        "      <td>       strolled</td>\n",
-        "      <td>          ['s', 't', 'r', 'o', 'l', 'l', 'e', 'd']</td>\n",
-        "      <td>                ['p', 'i', 'm']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>987</th>\n",
-        "      <td>     peacemaker</td>\n",
-        "      <td> ['p', 'e', 'a', 'c', 'e', 'm', 'a', 'k', 'e', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>988</th>\n",
-        "      <td>      chilliest</td>\n",
-        "      <td>     ['c', 'h', 'i', 'l', 'l', 'i', 'e', 's', 't']</td>\n",
-        "      <td>                          ['f']</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  9</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  9</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>989</th>\n",
-        "      <td>       neuritis</td>\n",
-        "      <td>          ['n', 'e', 'u', 'r', 'i', 't', 'i', 's']</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>990</th>\n",
-        "      <td>       quisling</td>\n",
-        "      <td>          ['q', 'u', 'i', 's', 'l', 'i', 'n', 'g']</td>\n",
-        "      <td>           ['e', 't', 'k', 'p']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>991</th>\n",
-        "      <td>    transplants</td>\n",
-        "      <td> ['t', 'r', 'a', 'n', 's', 'p', 'l', 'a', 'n', ...</td>\n",
-        "      <td>                ['e', 'i', 'o']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 11</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>992</th>\n",
-        "      <td>         bevies</td>\n",
-        "      <td>                    ['b', 'e', 'v', 'i', 'e', 's']</td>\n",
-        "      <td>                ['d', 'r', 'l']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>993</th>\n",
-        "      <td>          geeky</td>\n",
-        "      <td>                         ['g', 'e', 'e', 'k', 'y']</td>\n",
-        "      <td>           ['s', 'd', 't', 'f']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  6</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>994</th>\n",
-        "      <td> demonstrations</td>\n",
-        "      <td> ['d', 'e', 'm', 'o', 'n', 's', 't', 'r', 'a', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 14</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 14</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>995</th>\n",
-        "      <td>         dowses</td>\n",
-        "      <td>                    ['d', 'o', 'w', 's', 'e', 's']</td>\n",
-        "      <td>                     ['r', 'u']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>996</th>\n",
-        "      <td>     pummelling</td>\n",
-        "      <td> ['p', 'u', 'm', 'm', 'e', 'l', 'l', 'i', 'n', ...</td>\n",
-        "      <td>                ['s', 'r', 'o']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  7</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>997</th>\n",
-        "      <td>    earnestness</td>\n",
-        "      <td> ['e', 'a', 'r', 'n', 'e', 's', 't', 'n', 'e', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 11</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 11</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>998</th>\n",
-        "      <td> thermodynamics</td>\n",
-        "      <td> ['t', 'h', 'e', 'r', 'm', 'o', 'd', 'y', 'n', ...</td>\n",
-        "      <td>                             []</td>\n",
-        "      <td> 14</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> True</td>\n",
-        "      <td> 14</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>999</th>\n",
-        "      <td>         flurry</td>\n",
-        "      <td>                    ['f', 'l', 'u', 'r', 'r', 'y']</td>\n",
-        "      <td>      ['e', 's', 'i', 'a', 'o']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "  </tbody>\n",
-        "</table>\n",
-        "<p>1000 rows \u00d7 7 columns</p>\n",
-        "</div>"
-       ],
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 14,
-       "text": [
-        "             target                                         discovered  \\\n",
-        "0         toothsome      ['t', 'o', 'o', 't', 'h', 's', 'o', 'm', 'e']   \n",
-        "1        analgesics  ['a', 'n', 'a', 'l', 'g', 'e', 's', 'i', 'c', ...   \n",
-        "2        intrenched  ['i', 'n', 't', 'r', 'e', 'n', 'c', 'h', 'e', ...   \n",
-        "3            normal                     ['n', 'o', 'r', 'm', 'a', 'l']   \n",
-        "4           debunks                ['d', 'e', 'b', 'u', 'n', 'k', 's']   \n",
-        "5       satanically  ['s', 'a', 't', 'a', 'n', 'i', 'c', 'a', 'l', ...   \n",
-        "6          radicals           ['r', 'a', 'd', 'i', 'c', 'a', 'l', 's']   \n",
-        "7            erotic                     ['e', 'r', 'o', 't', 'i', 'c']   \n",
-        "8            double                     ['d', 'o', 'u', 'b', 'l', 'e']   \n",
-        "9            caviar                     ['c', 'a', 'v', 'i', 'a', 'r']   \n",
-        "10      rigamaroles  ['r', 'i', 'g', 'a', 'm', 'a', 'r', 'o', 'l', ...   \n",
-        "11    disfranchises  ['d', 'i', 's', 'f', 'r', 'a', 'n', 'c', 'h', ...   \n",
-        "12       mushroomed  ['m', 'u', 's', 'h', 'r', 'o', 'o', 'm', 'e', ...   \n",
-        "13            rails                          ['r', 'a', 'i', 'l', 's']   \n",
-        "14           poised                     ['p', 'o', 'i', 's', 'e', 'd']   \n",
-        "15      circulating  ['c', 'i', 'r', 'c', 'u', 'l', 'a', 't', 'i', ...   \n",
-        "16       yesteryear  ['y', 'e', 's', 't', 'e', 'r', 'y', 'e', 'a', ...   \n",
-        "17         chastest           ['c', 'h', 'a', 's', 't', 'e', 's', 't']   \n",
-        "18          lenders                ['l', 'e', 'n', 'd', 'e', 'r', 's']   \n",
-        "19          upshots                ['u', 'p', 's', 'h', 'o', 't', 's']   \n",
-        "20         stridden           ['s', 't', 'r', 'i', 'd', 'd', 'e', 'n']   \n",
-        "21      trespassing  ['t', 'r', 'e', 's', 'p', 'a', 's', 's', 'i', ...   \n",
-        "22         muckrake           ['m', 'u', 'c', 'k', 'r', 'a', 'k', 'e']   \n",
-        "23        bungalows      ['b', 'u', 'n', 'g', 'a', 'l', 'o', 'w', 's']   \n",
-        "24        rewinding      ['r', 'e', 'w', 'i', 'n', 'd', 'i', 'n', 'g']   \n",
-        "25     stepchildren  ['s', 't', 'e', 'p', 'c', 'h', 'i', 'l', 'd', ...   \n",
-        "26     courageously  ['c', 'o', 'u', 'r', 'a', 'g', 'e', 'o', 'u', ...   \n",
-        "27     gladiatorial  ['g', 'l', 'a', 'd', 'i', 'a', 't', 'o', 'r', ...   \n",
-        "28          unseals                ['u', 'n', 's', 'e', 'a', 'l', 's']   \n",
-        "29        backaches      ['b', 'a', 'c', 'k', 'a', 'c', 'h', 'e', 's']   \n",
-        "..              ...                                                ...   \n",
-        "970     priestliest  ['p', 'r', 'i', 'e', 's', 't', 'l', 'i', 'e', ...   \n",
-        "971       oversight      ['o', 'v', 'e', 'r', 's', 'i', 'g', 'h', 't']   \n",
-        "972        nutshell           ['n', 'u', 't', 's', 'h', 'e', 'l', 'l']   \n",
-        "973          picker                     ['p', 'i', 'c', 'k', 'e', 'r']   \n",
-        "974            prom                               ['p', 'r', 'o', 'm']   \n",
-        "975           spoke                          ['s', 'p', 'o', 'k', 'e']   \n",
-        "976      videodiscs  ['v', 'i', 'd', 'e', 'o', 'd', 'i', 's', 'c', ...   \n",
-        "977        braggart           ['b', 'r', 'a', 'g', 'g', 'a', 'r', 't']   \n",
-        "978        shindigs           ['s', 'h', 'i', 'n', 'd', 'i', 'g', 's']   \n",
-        "979    indorsements  ['i', 'n', 'd', 'o', 'r', 's', 'e', 'm', 'e', ...   \n",
-        "980          audios                     ['a', 'u', 'd', 'i', 'o', 's']   \n",
-        "981        disrobes           ['d', 'i', 's', 'r', 'o', 'b', 'e', 's']   \n",
-        "982           drake                          ['d', 'r', 'a', 'k', 'e']   \n",
-        "983           penes                          ['p', 'e', 'n', 'e', 's']   \n",
-        "984      ecological  ['e', 'c', 'o', 'l', 'o', 'g', 'i', 'c', 'a', ...   \n",
-        "985   consideration  ['c', 'o', 'n', 's', 'i', 'd', 'e', 'r', 'a', ...   \n",
-        "986        strolled           ['s', 't', 'r', 'o', 'l', 'l', 'e', 'd']   \n",
-        "987      peacemaker  ['p', 'e', 'a', 'c', 'e', 'm', 'a', 'k', 'e', ...   \n",
-        "988       chilliest      ['c', 'h', 'i', 'l', 'l', 'i', 'e', 's', 't']   \n",
-        "989        neuritis           ['n', 'e', 'u', 'r', 'i', 't', 'i', 's']   \n",
-        "990        quisling           ['q', 'u', 'i', 's', 'l', 'i', 'n', 'g']   \n",
-        "991     transplants  ['t', 'r', 'a', 'n', 's', 'p', 'l', 'a', 'n', ...   \n",
-        "992          bevies                     ['b', 'e', 'v', 'i', 'e', 's']   \n",
-        "993           geeky                          ['g', 'e', 'e', 'k', 'y']   \n",
-        "994  demonstrations  ['d', 'e', 'm', 'o', 'n', 's', 't', 'r', 'a', ...   \n",
-        "995          dowses                     ['d', 'o', 'w', 's', 'e', 's']   \n",
-        "996      pummelling  ['p', 'u', 'm', 'm', 'e', 'l', 'l', 'i', 'n', ...   \n",
-        "997     earnestness  ['e', 'a', 'r', 'n', 'e', 's', 't', 'n', 'e', ...   \n",
-        "998  thermodynamics  ['t', 'h', 'e', 'r', 'm', 'o', 'd', 'y', 'n', ...   \n",
-        "999          flurry                     ['f', 'l', 'u', 'r', 'r', 'y']   \n",
-        "\n",
-        "                      wrong letters  number of hits  lives remaining game won  \\\n",
-        "0                        ['a', 'i']               9                8     True   \n",
-        "1                                []              10               10     True   \n",
-        "2                             ['s']              10                9     True   \n",
-        "3              ['e', 's', 'i', 'f']               6                6     True   \n",
-        "4                             ['t']               7                9     True   \n",
-        "5                             ['e']              11                9     True   \n",
-        "6                        ['e', 't']               8                8     True   \n",
-        "7                                []               6               10     True   \n",
-        "8                   ['a', 'm', 'r']               6                7     True   \n",
-        "9              ['e', 's', 'n', 'l']               6                6     True   \n",
-        "10                               []              11               10     True   \n",
-        "11                               []              13               10     True   \n",
-        "12                            ['t']              10                9     True   \n",
-        "13   ['e', 'o', 't', 'm', 'f', 'w']               5                4     True   \n",
-        "14             ['a', 'l', 't', 'k']               6                6     True   \n",
-        "15                            ['e']              11                9     True   \n",
-        "16                               []              10               10     True   \n",
-        "17                            ['m']               8                9     True   \n",
-        "18                  ['t', 'f', 'm']               7                7     True   \n",
-        "19             ['e', 'i', 'a', 'n']               7                6     True   \n",
-        "20                               []               8               10     True   \n",
-        "21                            ['o']              11                9     True   \n",
-        "22                            ['t']               8                9     True   \n",
-        "23                  ['e', 'i', 't']               9                7     True   \n",
-        "24                            ['m']               9                9     True   \n",
-        "25                               []              12               10     True   \n",
-        "26                            ['i']              12                9     True   \n",
-        "27                            ['e']              12                9     True   \n",
-        "28                            ['t']               7                9     True   \n",
-        "29                            ['i']               9                9     True   \n",
-        "..                              ...             ...              ...      ...   \n",
-        "970                              []              11               10     True   \n",
-        "971                              []               9               10     True   \n",
-        "972                           ['r']               8                9     True   \n",
-        "973            ['d', 's', 't', 'g']               6                6     True   \n",
-        "974                 ['e', 's', 'l']               4                7     True   \n",
-        "975            ['a', 'i', 't', 'r']               5                6     True   \n",
-        "976                              []              10               10     True   \n",
-        "977                      ['e', 'i']               8                8     True   \n",
-        "978                           ['e']               8                9     True   \n",
-        "979                              []              12               10     True   \n",
-        "980                           ['e']               6                9     True   \n",
-        "981                      ['t', 'm']               8                8     True   \n",
-        "982       ['s', 'c', 't', 'g', 'p']               5                5     True   \n",
-        "983                           ['m']               5                9     True   \n",
-        "984                           ['s']              10                9     True   \n",
-        "985                           ['f']              13                9     True   \n",
-        "986                 ['p', 'i', 'm']               8                7     True   \n",
-        "987                              []              10               10     True   \n",
-        "988                           ['f']               9                9     True   \n",
-        "989                              []               8               10     True   \n",
-        "990            ['e', 't', 'k', 'p']               8                6     True   \n",
-        "991                 ['e', 'i', 'o']              11                7     True   \n",
-        "992                 ['d', 'r', 'l']               6                7     True   \n",
-        "993            ['s', 'd', 't', 'f']               5                6     True   \n",
-        "994                              []              14               10     True   \n",
-        "995                      ['r', 'u']               6                8     True   \n",
-        "996                 ['s', 'r', 'o']              10                7     True   \n",
-        "997                              []              11               10     True   \n",
-        "998                              []              14               10     True   \n",
-        "999       ['e', 's', 'i', 'a', 'o']               6                5     True   \n",
-        "\n",
-        "     word length  \n",
-        "0              9  \n",
-        "1             10  \n",
-        "2             10  \n",
-        "3              6  \n",
-        "4              7  \n",
-        "5             11  \n",
-        "6              8  \n",
-        "7              6  \n",
-        "8              6  \n",
-        "9              6  \n",
-        "10            11  \n",
-        "11            13  \n",
-        "12            10  \n",
-        "13             5  \n",
-        "14             6  \n",
-        "15            11  \n",
-        "16            10  \n",
-        "17             8  \n",
-        "18             7  \n",
-        "19             7  \n",
-        "20             8  \n",
-        "21            11  \n",
-        "22             8  \n",
-        "23             9  \n",
-        "24             9  \n",
-        "25            12  \n",
-        "26            12  \n",
-        "27            12  \n",
-        "28             7  \n",
-        "29             9  \n",
-        "..           ...  \n",
-        "970           11  \n",
-        "971            9  \n",
-        "972            8  \n",
-        "973            6  \n",
-        "974            4  \n",
-        "975            5  \n",
-        "976           10  \n",
-        "977            8  \n",
-        "978            8  \n",
-        "979           12  \n",
-        "980            6  \n",
-        "981            8  \n",
-        "982            5  \n",
-        "983            5  \n",
-        "984           10  \n",
-        "985           13  \n",
-        "986            8  \n",
-        "987           10  \n",
-        "988            9  \n",
-        "989            8  \n",
-        "990            8  \n",
-        "991           11  \n",
-        "992            6  \n",
-        "993            5  \n",
-        "994           14  \n",
-        "995            6  \n",
-        "996           10  \n",
-        "997           11  \n",
-        "998           14  \n",
-        "999            6  \n",
-        "\n",
-        "[1000 rows x 7 columns]"
-       ]
-      }
-     ],
-     "prompt_number": 14
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "adaptive_pattern['lives remaining'].hist()"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 15,
-       "text": [
-        "<matplotlib.axes.AxesSubplot at 0x7f1586fb5978>"
-       ]
-      },
-      {
-       "metadata": {},
-       "output_type": "display_data",
-       "png": "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\nwf8D25ze66lP9woAAAAASUVORK5CYII=\n",
-       "text": [
-        "<matplotlib.figure.Figure at 0x7f1586fb55f8>"
-       ]
-      }
-     ],
-     "prompt_number": 15
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "adaptive_pattern.groupby('lives remaining').size()"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 16,
-       "text": [
-        "lives remaining\n",
-        "0                   11\n",
-        "1                    5\n",
-        "2                    5\n",
-        "3                   22\n",
-        "4                   40\n",
-        "5                   42\n",
-        "6                   79\n",
-        "7                  109\n",
-        "8                  161\n",
-        "9                  290\n",
-        "10                 236\n",
-        "dtype: int64"
-       ]
-      }
-     ],
-     "prompt_number": 16
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "adaptive_split = pd.read_csv('adaptive_split.csv')\n",
-      "adaptive_split"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "html": [
-        "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
-        "<table border=\"1\" class=\"dataframe\">\n",
-        "  <thead>\n",
-        "    <tr style=\"text-align: right;\">\n",
-        "      <th></th>\n",
-        "      <th>target</th>\n",
-        "      <th>discovered</th>\n",
-        "      <th>wrong letters</th>\n",
-        "      <th>number of hits</th>\n",
-        "      <th>lives remaining</th>\n",
-        "      <th>game won</th>\n",
-        "    </tr>\n",
-        "  </thead>\n",
-        "  <tbody>\n",
-        "    <tr>\n",
-        "      <th>0  </th>\n",
-        "      <td>             punned</td>\n",
-        "      <td>                    ['p', 'u', 'n', 'n', 'e', 'd']</td>\n",
-        "      <td>                         ['s', 'r', 'l', 'a', 'i']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>1  </th>\n",
-        "      <td>              anode</td>\n",
-        "      <td>                         ['a', 'n', 'o', 'd', 'e']</td>\n",
-        "      <td>                                   ['s', 'l', 'b']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>2  </th>\n",
-        "      <td>             passes</td>\n",
-        "      <td>                    ['p', 'a', 's', 's', 'e', 's']</td>\n",
-        "      <td>                                        ['l', 'b']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>3  </th>\n",
-        "      <td>             maxing</td>\n",
-        "      <td>                    ['m', 'a', 'x', 'i', 'n', 'g']</td>\n",
-        "      <td>     ['s', 'r', 'd', 't', 'w', 'l', 'p', 'k', 'c']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  1</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>4  </th>\n",
-        "      <td>           quadrant</td>\n",
-        "      <td>          ['q', 'u', 'a', 'd', 'r', 'a', 'n', 't']</td>\n",
-        "      <td>                                                []</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>5  </th>\n",
-        "      <td>           polygamy</td>\n",
-        "      <td>          ['p', 'o', 'l', 'y', 'g', 'a', 'm', 'y']</td>\n",
-        "      <td>                              ['r', 'i', 's', 'd']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>6  </th>\n",
-        "      <td>      technologists</td>\n",
-        "      <td> ['t', 'e', 'c', 'h', 'n', 'o', 'l', 'o', 'g', ...</td>\n",
-        "      <td>                                             ['r']</td>\n",
-        "      <td> 13</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>7  </th>\n",
-        "      <td>             tussle</td>\n",
-        "      <td>                    ['t', 'u', 's', 's', 'l', 'e']</td>\n",
-        "      <td>                                             ['a']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>8  </th>\n",
-        "      <td>         explicitly</td>\n",
-        "      <td> ['e', 'x', 'p', 'l', 'i', 'c', 'i', 't', 'l', ...</td>\n",
-        "      <td>                         ['o', 'a', 'b', 's', 'm']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>9  </th>\n",
-        "      <td>         moderators</td>\n",
-        "      <td> ['m', 'o', 'd', 'e', 'r', 'a', 't', 'o', 'r', ...</td>\n",
-        "      <td>                                             ['u']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>10 </th>\n",
-        "      <td>              error</td>\n",
-        "      <td>                         ['e', 'r', 'r', 'o', 'r']</td>\n",
-        "      <td>                         ['s', 't', 'n', 'l', 'y']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>11 </th>\n",
-        "      <td>            stamped</td>\n",
-        "      <td>               ['s', 't', 'a', 'm', 'p', 'e', 'd']</td>\n",
-        "      <td>                         ['r', 'i', 'l', 'b', 'c']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>12 </th>\n",
-        "      <td>              dress</td>\n",
-        "      <td>                         ['d', 'r', 'e', 's', 's']</td>\n",
-        "      <td>                                                []</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>13 </th>\n",
-        "      <td>           truckled</td>\n",
-        "      <td>          ['t', 'r', 'u', 'c', 'k', 'l', 'e', 'd']</td>\n",
-        "      <td>                         ['s', 'i', 'a', 'b', 'p']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>14 </th>\n",
-        "      <td>      accommodation</td>\n",
-        "      <td> ['a', 'c', 'c', 'o', 'm', 'm', 'o', 'd', 'a', ...</td>\n",
-        "      <td>                                        ['s', 'g']</td>\n",
-        "      <td> 13</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>15 </th>\n",
-        "      <td>             reload</td>\n",
-        "      <td>                    ['r', 'e', 'l', 'o', 'a', 'd']</td>\n",
-        "      <td>                                        ['s', 'i']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>16 </th>\n",
-        "      <td>         confounded</td>\n",
-        "      <td> ['c', 'o', 'n', 'f', 'o', 'u', 'n', 'd', 'e', ...</td>\n",
-        "      <td>                                             ['p']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>17 </th>\n",
-        "      <td>         racketeers</td>\n",
-        "      <td> ['r', 'a', 'c', 'k', 'e', 't', 'e', 'e', 'r', ...</td>\n",
-        "      <td>                                        ['o', 'l']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>18 </th>\n",
-        "      <td>        ignoramuses</td>\n",
-        "      <td> ['i', 'g', 'n', 'o', 'r', 'a', 'm', 'u', 's', ...</td>\n",
-        "      <td>                                             ['l']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>19 </th>\n",
-        "      <td>              party</td>\n",
-        "      <td>                         ['p', 'a', 'r', 't', 'y']</td>\n",
-        "      <td>                              ['s', 'e', 'n', 'd']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>20 </th>\n",
-        "      <td>               rill</td>\n",
-        "      <td>                              ['r', 'i', 'l', 'l']</td>\n",
-        "      <td>                    ['e', 's', 'a', 'o', 'u', 'n']</td>\n",
-        "      <td>  4</td>\n",
-        "      <td>  4</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>21 </th>\n",
-        "      <td>             player</td>\n",
-        "      <td>                    ['p', 'l', 'a', 'y', 'e', 'r']</td>\n",
-        "      <td>                                        ['s', 'm']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>22 </th>\n",
-        "      <td>          protester</td>\n",
-        "      <td>     ['p', 'r', 'o', 't', 'e', 's', 't', 'e', 'r']</td>\n",
-        "      <td>                                   ['i', 'd', 'l']</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>23 </th>\n",
-        "      <td>          asphalted</td>\n",
-        "      <td>     ['a', 's', 'p', 'h', 'a', 'l', 't', 'e', 'd']</td>\n",
-        "      <td>                                        ['r', 'i']</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>24 </th>\n",
-        "      <td>           uniforms</td>\n",
-        "      <td>          ['u', 'n', 'i', 'f', 'o', 'r', 'm', 's']</td>\n",
-        "      <td>                                   ['a', 't', 'p']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>25 </th>\n",
-        "      <td>         coniferous</td>\n",
-        "      <td> ['c', 'o', 'n', 'i', 'f', 'e', 'r', 'o', 'u', ...</td>\n",
-        "      <td>                                                []</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>26 </th>\n",
-        "      <td>         dishearten</td>\n",
-        "      <td> ['d', 'i', 's', 'h', 'e', 'a', 'r', 't', 'e', ...</td>\n",
-        "      <td>                                   ['o', 'l', 'g']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>27 </th>\n",
-        "      <td>              scull</td>\n",
-        "      <td>                         ['s', 'c', 'u', 'l', 'l']</td>\n",
-        "      <td>                         ['e', 'a', 'o', 'i', 'n']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>28 </th>\n",
-        "      <td>             virgin</td>\n",
-        "      <td>                    ['v', 'i', 'r', 'g', 'i', 'n']</td>\n",
-        "      <td>                                   ['s', 'a', 'd']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>29 </th>\n",
-        "      <td>       licentiously</td>\n",
-        "      <td> ['l', 'i', 'c', 'e', 'n', 't', 'i', 'o', 'u', ...</td>\n",
-        "      <td>                                                []</td>\n",
-        "      <td> 12</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>...</th>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>970</th>\n",
-        "      <td>         grindstone</td>\n",
-        "      <td> ['g', 'r', 'i', 'n', 'd', 's', 't', 'o', 'n', ...</td>\n",
-        "      <td>                                   ['a', 'u', 'p']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>971</th>\n",
-        "      <td>       bankruptcies</td>\n",
-        "      <td> ['b', 'a', 'n', 'k', 'r', 'u', 'p', 't', 'c', ...</td>\n",
-        "      <td>                                                []</td>\n",
-        "      <td> 12</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>972</th>\n",
-        "      <td>             smalls</td>\n",
-        "      <td>                    ['s', 'm', 'a', 'l', 'l', 's']</td>\n",
-        "      <td>                              ['e', 't', 'k', 'w']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>973</th>\n",
-        "      <td>            limping</td>\n",
-        "      <td>               ['l', 'i', 'm', 'p', 'i', 'n', 'g']</td>\n",
-        "      <td>               ['s', 'r', 'e', 'a', 'o', 'u', 'k']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  3</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>974</th>\n",
-        "      <td>        interfacing</td>\n",
-        "      <td> ['i', 'n', 't', 'e', 'r', 'f', 'a', 'c', 'i', ...</td>\n",
-        "      <td>                              ['o', 'l', 'd', 's']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>975</th>\n",
-        "      <td>               mint</td>\n",
-        "      <td>                              ['_', '_', 'n', 't']</td>\n",
-        "      <td> ['e', 's', 'a', 'o', 'u', 'd', 'k', 'l', 'p', ...</td>\n",
-        "      <td>  2</td>\n",
-        "      <td>  0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>976</th>\n",
-        "      <td>       romanticises</td>\n",
-        "      <td> ['r', 'o', 'm', 'a', 'n', 't', 'i', 'c', 'i', ...</td>\n",
-        "      <td>                                             ['d']</td>\n",
-        "      <td> 12</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>977</th>\n",
-        "      <td>           cleavage</td>\n",
-        "      <td>          ['c', 'l', 'e', 'a', 'v', 'a', 'g', 'e']</td>\n",
-        "      <td>                                        ['r', 's']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>978</th>\n",
-        "      <td>            revival</td>\n",
-        "      <td>               ['r', 'e', 'v', 'i', 'v', 'a', 'l']</td>\n",
-        "      <td>                              ['s', 'n', 'c', 'm']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>979</th>\n",
-        "      <td>            praying</td>\n",
-        "      <td>               ['p', 'r', 'a', 'y', 'i', 'n', 'g']</td>\n",
-        "      <td>                              ['s', 'd', 'c', 'b']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>980</th>\n",
-        "      <td>             troupe</td>\n",
-        "      <td>                    ['t', 'r', 'o', 'u', 'p', 'e']</td>\n",
-        "      <td>                              ['s', 'g', 'a', 'l']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>981</th>\n",
-        "      <td>             public</td>\n",
-        "      <td>                    ['p', 'u', 'b', 'l', 'i', 'c']</td>\n",
-        "      <td>                    ['s', 'r', 'd', 'n', 'a', 'e']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  4</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>982</th>\n",
-        "      <td>         generating</td>\n",
-        "      <td> ['g', 'e', 'n', 'e', 'r', 'a', 't', 'i', 'n', ...</td>\n",
-        "      <td>                                        ['o', 'l']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>983</th>\n",
-        "      <td>            sallies</td>\n",
-        "      <td>               ['s', 'a', 'l', 'l', 'i', 'e', 's']</td>\n",
-        "      <td>                                             ['r']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>984</th>\n",
-        "      <td>              yacht</td>\n",
-        "      <td>                         ['y', 'a', 'c', 'h', 't']</td>\n",
-        "      <td>                                        ['s', 'e']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>985</th>\n",
-        "      <td>            armpits</td>\n",
-        "      <td>               ['a', 'r', 'm', 'p', 'i', 't', 's']</td>\n",
-        "      <td>                                             ['o']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>986</th>\n",
-        "      <td>            oblongs</td>\n",
-        "      <td>               ['o', 'b', 'l', 'o', 'n', 'g', 's']</td>\n",
-        "      <td>                                   ['r', 'i', 'a']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>987</th>\n",
-        "      <td>          developed</td>\n",
-        "      <td>     ['d', 'e', 'v', 'e', 'l', 'o', 'p', 'e', 'd']</td>\n",
-        "      <td>                         ['t', 'a', 'r', 'n', 'i']</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>988</th>\n",
-        "      <td>           demolish</td>\n",
-        "      <td>          ['d', 'e', 'm', 'o', 'l', 'i', 's', 'h']</td>\n",
-        "      <td>                                   ['r', 'a', 't']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>989</th>\n",
-        "      <td>            pincers</td>\n",
-        "      <td>               ['p', 'i', 'n', 'c', 'e', 'r', 's']</td>\n",
-        "      <td>                         ['a', 'o', 't', 'd', 'l']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>990</th>\n",
-        "      <td> telecommunications</td>\n",
-        "      <td> ['t', 'e', 'l', 'e', 'c', 'o', 'm', 'm', 'u', ...</td>\n",
-        "      <td>                                        ['p', 'r']</td>\n",
-        "      <td> 18</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>991</th>\n",
-        "      <td>             dabble</td>\n",
-        "      <td>                    ['d', 'a', 'b', 'b', 'l', 'e']</td>\n",
-        "      <td>                         ['s', 'r', 'i', 'n', 'y']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>992</th>\n",
-        "      <td>          morticing</td>\n",
-        "      <td>     ['m', 'o', 'r', 't', 'i', 'c', 'i', 'n', 'g']</td>\n",
-        "      <td>                              ['a', 's', 'f', 'd']</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>993</th>\n",
-        "      <td>              weals</td>\n",
-        "      <td>                         ['w', 'e', 'a', 'l', 's']</td>\n",
-        "      <td>                         ['r', 'd', 'p', 'm', 'h']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>994</th>\n",
-        "      <td>              dryer</td>\n",
-        "      <td>                         ['d', 'r', 'y', 'e', 'r']</td>\n",
-        "      <td>                                        ['s', 'i']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>995</th>\n",
-        "      <td>     inconclusively</td>\n",
-        "      <td> ['i', 'n', 'c', 'o', 'n', 'c', 'l', 'u', 's', ...</td>\n",
-        "      <td>                                             ['d']</td>\n",
-        "      <td> 14</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>996</th>\n",
-        "      <td>          bubbliest</td>\n",
-        "      <td>     ['_', '_', '_', '_', '_', '_', '_', '_', 't']</td>\n",
-        "      <td> ['n', 'r', 'o', 'c', 'a', 'm', 'h', 'p', 'f', ...</td>\n",
-        "      <td>  1</td>\n",
-        "      <td>  0</td>\n",
-        "      <td> False</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>997</th>\n",
-        "      <td>             graded</td>\n",
-        "      <td>                    ['g', 'r', 'a', 'd', 'e', 'd']</td>\n",
-        "      <td>                    ['s', 'c', 'v', 'y', 't', 'z']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  4</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>998</th>\n",
-        "      <td>           carriage</td>\n",
-        "      <td>          ['c', 'a', 'r', 'r', 'i', 'a', 'g', 'e']</td>\n",
-        "      <td>                                   ['s', 'l', 'd']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>999</th>\n",
-        "      <td>         datelining</td>\n",
-        "      <td> ['d', 'a', 't', 'e', 'l', 'i', 'n', 'i', 'n', ...</td>\n",
-        "      <td>                                        ['o', 's']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "    </tr>\n",
-        "  </tbody>\n",
-        "</table>\n",
-        "<p>1000 rows \u00d7 6 columns</p>\n",
-        "</div>"
-       ],
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 19,
-       "text": [
-        "                 target                                         discovered  \\\n",
-        "0                punned                     ['p', 'u', 'n', 'n', 'e', 'd']   \n",
-        "1                 anode                          ['a', 'n', 'o', 'd', 'e']   \n",
-        "2                passes                     ['p', 'a', 's', 's', 'e', 's']   \n",
-        "3                maxing                     ['m', 'a', 'x', 'i', 'n', 'g']   \n",
-        "4              quadrant           ['q', 'u', 'a', 'd', 'r', 'a', 'n', 't']   \n",
-        "5              polygamy           ['p', 'o', 'l', 'y', 'g', 'a', 'm', 'y']   \n",
-        "6         technologists  ['t', 'e', 'c', 'h', 'n', 'o', 'l', 'o', 'g', ...   \n",
-        "7                tussle                     ['t', 'u', 's', 's', 'l', 'e']   \n",
-        "8            explicitly  ['e', 'x', 'p', 'l', 'i', 'c', 'i', 't', 'l', ...   \n",
-        "9            moderators  ['m', 'o', 'd', 'e', 'r', 'a', 't', 'o', 'r', ...   \n",
-        "10                error                          ['e', 'r', 'r', 'o', 'r']   \n",
-        "11              stamped                ['s', 't', 'a', 'm', 'p', 'e', 'd']   \n",
-        "12                dress                          ['d', 'r', 'e', 's', 's']   \n",
-        "13             truckled           ['t', 'r', 'u', 'c', 'k', 'l', 'e', 'd']   \n",
-        "14        accommodation  ['a', 'c', 'c', 'o', 'm', 'm', 'o', 'd', 'a', ...   \n",
-        "15               reload                     ['r', 'e', 'l', 'o', 'a', 'd']   \n",
-        "16           confounded  ['c', 'o', 'n', 'f', 'o', 'u', 'n', 'd', 'e', ...   \n",
-        "17           racketeers  ['r', 'a', 'c', 'k', 'e', 't', 'e', 'e', 'r', ...   \n",
-        "18          ignoramuses  ['i', 'g', 'n', 'o', 'r', 'a', 'm', 'u', 's', ...   \n",
-        "19                party                          ['p', 'a', 'r', 't', 'y']   \n",
-        "20                 rill                               ['r', 'i', 'l', 'l']   \n",
-        "21               player                     ['p', 'l', 'a', 'y', 'e', 'r']   \n",
-        "22            protester      ['p', 'r', 'o', 't', 'e', 's', 't', 'e', 'r']   \n",
-        "23            asphalted      ['a', 's', 'p', 'h', 'a', 'l', 't', 'e', 'd']   \n",
-        "24             uniforms           ['u', 'n', 'i', 'f', 'o', 'r', 'm', 's']   \n",
-        "25           coniferous  ['c', 'o', 'n', 'i', 'f', 'e', 'r', 'o', 'u', ...   \n",
-        "26           dishearten  ['d', 'i', 's', 'h', 'e', 'a', 'r', 't', 'e', ...   \n",
-        "27                scull                          ['s', 'c', 'u', 'l', 'l']   \n",
-        "28               virgin                     ['v', 'i', 'r', 'g', 'i', 'n']   \n",
-        "29         licentiously  ['l', 'i', 'c', 'e', 'n', 't', 'i', 'o', 'u', ...   \n",
-        "..                  ...                                                ...   \n",
-        "970          grindstone  ['g', 'r', 'i', 'n', 'd', 's', 't', 'o', 'n', ...   \n",
-        "971        bankruptcies  ['b', 'a', 'n', 'k', 'r', 'u', 'p', 't', 'c', ...   \n",
-        "972              smalls                     ['s', 'm', 'a', 'l', 'l', 's']   \n",
-        "973             limping                ['l', 'i', 'm', 'p', 'i', 'n', 'g']   \n",
-        "974         interfacing  ['i', 'n', 't', 'e', 'r', 'f', 'a', 'c', 'i', ...   \n",
-        "975                mint                               ['_', '_', 'n', 't']   \n",
-        "976        romanticises  ['r', 'o', 'm', 'a', 'n', 't', 'i', 'c', 'i', ...   \n",
-        "977            cleavage           ['c', 'l', 'e', 'a', 'v', 'a', 'g', 'e']   \n",
-        "978             revival                ['r', 'e', 'v', 'i', 'v', 'a', 'l']   \n",
-        "979             praying                ['p', 'r', 'a', 'y', 'i', 'n', 'g']   \n",
-        "980              troupe                     ['t', 'r', 'o', 'u', 'p', 'e']   \n",
-        "981              public                     ['p', 'u', 'b', 'l', 'i', 'c']   \n",
-        "982          generating  ['g', 'e', 'n', 'e', 'r', 'a', 't', 'i', 'n', ...   \n",
-        "983             sallies                ['s', 'a', 'l', 'l', 'i', 'e', 's']   \n",
-        "984               yacht                          ['y', 'a', 'c', 'h', 't']   \n",
-        "985             armpits                ['a', 'r', 'm', 'p', 'i', 't', 's']   \n",
-        "986             oblongs                ['o', 'b', 'l', 'o', 'n', 'g', 's']   \n",
-        "987           developed      ['d', 'e', 'v', 'e', 'l', 'o', 'p', 'e', 'd']   \n",
-        "988            demolish           ['d', 'e', 'm', 'o', 'l', 'i', 's', 'h']   \n",
-        "989             pincers                ['p', 'i', 'n', 'c', 'e', 'r', 's']   \n",
-        "990  telecommunications  ['t', 'e', 'l', 'e', 'c', 'o', 'm', 'm', 'u', ...   \n",
-        "991              dabble                     ['d', 'a', 'b', 'b', 'l', 'e']   \n",
-        "992           morticing      ['m', 'o', 'r', 't', 'i', 'c', 'i', 'n', 'g']   \n",
-        "993               weals                          ['w', 'e', 'a', 'l', 's']   \n",
-        "994               dryer                          ['d', 'r', 'y', 'e', 'r']   \n",
-        "995      inconclusively  ['i', 'n', 'c', 'o', 'n', 'c', 'l', 'u', 's', ...   \n",
-        "996           bubbliest      ['_', '_', '_', '_', '_', '_', '_', '_', 't']   \n",
-        "997              graded                     ['g', 'r', 'a', 'd', 'e', 'd']   \n",
-        "998            carriage           ['c', 'a', 'r', 'r', 'i', 'a', 'g', 'e']   \n",
-        "999          datelining  ['d', 'a', 't', 'e', 'l', 'i', 'n', 'i', 'n', ...   \n",
-        "\n",
-        "                                         wrong letters  number of hits  \\\n",
-        "0                            ['s', 'r', 'l', 'a', 'i']               6   \n",
-        "1                                      ['s', 'l', 'b']               5   \n",
-        "2                                           ['l', 'b']               6   \n",
-        "3        ['s', 'r', 'd', 't', 'w', 'l', 'p', 'k', 'c']               6   \n",
-        "4                                                   []               8   \n",
-        "5                                 ['r', 'i', 's', 'd']               8   \n",
-        "6                                                ['r']              13   \n",
-        "7                                                ['a']               6   \n",
-        "8                            ['o', 'a', 'b', 's', 'm']              10   \n",
-        "9                                                ['u']              10   \n",
-        "10                           ['s', 't', 'n', 'l', 'y']               5   \n",
-        "11                           ['r', 'i', 'l', 'b', 'c']               7   \n",
-        "12                                                  []               5   \n",
-        "13                           ['s', 'i', 'a', 'b', 'p']               8   \n",
-        "14                                          ['s', 'g']              13   \n",
-        "15                                          ['s', 'i']               6   \n",
-        "16                                               ['p']              10   \n",
-        "17                                          ['o', 'l']              10   \n",
-        "18                                               ['l']              11   \n",
-        "19                                ['s', 'e', 'n', 'd']               5   \n",
-        "20                      ['e', 's', 'a', 'o', 'u', 'n']               4   \n",
-        "21                                          ['s', 'm']               6   \n",
-        "22                                     ['i', 'd', 'l']               9   \n",
-        "23                                          ['r', 'i']               9   \n",
-        "24                                     ['a', 't', 'p']               8   \n",
-        "25                                                  []              10   \n",
-        "26                                     ['o', 'l', 'g']              10   \n",
-        "27                           ['e', 'a', 'o', 'i', 'n']               5   \n",
-        "28                                     ['s', 'a', 'd']               6   \n",
-        "29                                                  []              12   \n",
-        "..                                                 ...             ...   \n",
-        "970                                    ['a', 'u', 'p']              10   \n",
-        "971                                                 []              12   \n",
-        "972                               ['e', 't', 'k', 'w']               6   \n",
-        "973                ['s', 'r', 'e', 'a', 'o', 'u', 'k']               7   \n",
-        "974                               ['o', 'l', 'd', 's']              11   \n",
-        "975  ['e', 's', 'a', 'o', 'u', 'd', 'k', 'l', 'p', ...               2   \n",
-        "976                                              ['d']              12   \n",
-        "977                                         ['r', 's']               8   \n",
-        "978                               ['s', 'n', 'c', 'm']               7   \n",
-        "979                               ['s', 'd', 'c', 'b']               7   \n",
-        "980                               ['s', 'g', 'a', 'l']               6   \n",
-        "981                     ['s', 'r', 'd', 'n', 'a', 'e']               6   \n",
-        "982                                         ['o', 'l']              10   \n",
-        "983                                              ['r']               7   \n",
-        "984                                         ['s', 'e']               5   \n",
-        "985                                              ['o']               7   \n",
-        "986                                    ['r', 'i', 'a']               7   \n",
-        "987                          ['t', 'a', 'r', 'n', 'i']               9   \n",
-        "988                                    ['r', 'a', 't']               8   \n",
-        "989                          ['a', 'o', 't', 'd', 'l']               7   \n",
-        "990                                         ['p', 'r']              18   \n",
-        "991                          ['s', 'r', 'i', 'n', 'y']               6   \n",
-        "992                               ['a', 's', 'f', 'd']               9   \n",
-        "993                          ['r', 'd', 'p', 'm', 'h']               5   \n",
-        "994                                         ['s', 'i']               5   \n",
-        "995                                              ['d']              14   \n",
-        "996  ['n', 'r', 'o', 'c', 'a', 'm', 'h', 'p', 'f', ...               1   \n",
-        "997                     ['s', 'c', 'v', 'y', 't', 'z']               6   \n",
-        "998                                    ['s', 'l', 'd']               8   \n",
-        "999                                         ['o', 's']              10   \n",
-        "\n",
-        "     lives remaining game won  \n",
-        "0                  5     True  \n",
-        "1                  7     True  \n",
-        "2                  8     True  \n",
-        "3                  1     True  \n",
-        "4                 10     True  \n",
-        "5                  6     True  \n",
-        "6                  9     True  \n",
-        "7                  9     True  \n",
-        "8                  5     True  \n",
-        "9                  9     True  \n",
-        "10                 5     True  \n",
-        "11                 5     True  \n",
-        "12                10     True  \n",
-        "13                 5     True  \n",
-        "14                 8     True  \n",
-        "15                 8     True  \n",
-        "16                 9     True  \n",
-        "17                 8     True  \n",
-        "18                 9     True  \n",
-        "19                 6     True  \n",
-        "20                 4     True  \n",
-        "21                 8     True  \n",
-        "22                 7     True  \n",
-        "23                 8     True  \n",
-        "24                 7     True  \n",
-        "25                10     True  \n",
-        "26                 7     True  \n",
-        "27                 5     True  \n",
-        "28                 7     True  \n",
-        "29                10     True  \n",
-        "..               ...      ...  \n",
-        "970                7     True  \n",
-        "971               10     True  \n",
-        "972                6     True  \n",
-        "973                3     True  \n",
-        "974                6     True  \n",
-        "975                0    False  \n",
-        "976                9     True  \n",
-        "977                8     True  \n",
-        "978                6     True  \n",
-        "979                6     True  \n",
-        "980                6     True  \n",
-        "981                4     True  \n",
-        "982                8     True  \n",
-        "983                9     True  \n",
-        "984                8     True  \n",
-        "985                9     True  \n",
-        "986                7     True  \n",
-        "987                5     True  \n",
-        "988                7     True  \n",
-        "989                5     True  \n",
-        "990                8     True  \n",
-        "991                5     True  \n",
-        "992                6     True  \n",
-        "993                5     True  \n",
-        "994                8     True  \n",
-        "995                9     True  \n",
-        "996                0    False  \n",
-        "997                4     True  \n",
-        "998                7     True  \n",
-        "999                8     True  \n",
-        "\n",
-        "[1000 rows x 6 columns]"
-       ]
-      }
-     ],
-     "prompt_number": 19
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "adaptive_split['word length'] = adaptive_split.apply(lambda r: len(r['target']), axis=1)\n",
-      "adaptive_split"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "html": [
-        "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
-        "<table border=\"1\" class=\"dataframe\">\n",
-        "  <thead>\n",
-        "    <tr style=\"text-align: right;\">\n",
-        "      <th></th>\n",
-        "      <th>target</th>\n",
-        "      <th>discovered</th>\n",
-        "      <th>wrong letters</th>\n",
-        "      <th>number of hits</th>\n",
-        "      <th>lives remaining</th>\n",
-        "      <th>game won</th>\n",
-        "      <th>word length</th>\n",
-        "    </tr>\n",
-        "  </thead>\n",
-        "  <tbody>\n",
-        "    <tr>\n",
-        "      <th>0  </th>\n",
-        "      <td>             punned</td>\n",
-        "      <td>                    ['p', 'u', 'n', 'n', 'e', 'd']</td>\n",
-        "      <td>                         ['s', 'r', 'l', 'a', 'i']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>1  </th>\n",
-        "      <td>              anode</td>\n",
-        "      <td>                         ['a', 'n', 'o', 'd', 'e']</td>\n",
-        "      <td>                                   ['s', 'l', 'b']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>2  </th>\n",
-        "      <td>             passes</td>\n",
-        "      <td>                    ['p', 'a', 's', 's', 'e', 's']</td>\n",
-        "      <td>                                        ['l', 'b']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>3  </th>\n",
-        "      <td>             maxing</td>\n",
-        "      <td>                    ['m', 'a', 'x', 'i', 'n', 'g']</td>\n",
-        "      <td>     ['s', 'r', 'd', 't', 'w', 'l', 'p', 'k', 'c']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  1</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>4  </th>\n",
-        "      <td>           quadrant</td>\n",
-        "      <td>          ['q', 'u', 'a', 'd', 'r', 'a', 'n', 't']</td>\n",
-        "      <td>                                                []</td>\n",
-        "      <td>  8</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>5  </th>\n",
-        "      <td>           polygamy</td>\n",
-        "      <td>          ['p', 'o', 'l', 'y', 'g', 'a', 'm', 'y']</td>\n",
-        "      <td>                              ['r', 'i', 's', 'd']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>6  </th>\n",
-        "      <td>      technologists</td>\n",
-        "      <td> ['t', 'e', 'c', 'h', 'n', 'o', 'l', 'o', 'g', ...</td>\n",
-        "      <td>                                             ['r']</td>\n",
-        "      <td> 13</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 13</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>7  </th>\n",
-        "      <td>             tussle</td>\n",
-        "      <td>                    ['t', 'u', 's', 's', 'l', 'e']</td>\n",
-        "      <td>                                             ['a']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>8  </th>\n",
-        "      <td>         explicitly</td>\n",
-        "      <td> ['e', 'x', 'p', 'l', 'i', 'c', 'i', 't', 'l', ...</td>\n",
-        "      <td>                         ['o', 'a', 'b', 's', 'm']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>9  </th>\n",
-        "      <td>         moderators</td>\n",
-        "      <td> ['m', 'o', 'd', 'e', 'r', 'a', 't', 'o', 'r', ...</td>\n",
-        "      <td>                                             ['u']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>10 </th>\n",
-        "      <td>              error</td>\n",
-        "      <td>                         ['e', 'r', 'r', 'o', 'r']</td>\n",
-        "      <td>                         ['s', 't', 'n', 'l', 'y']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>11 </th>\n",
-        "      <td>            stamped</td>\n",
-        "      <td>               ['s', 't', 'a', 'm', 'p', 'e', 'd']</td>\n",
-        "      <td>                         ['r', 'i', 'l', 'b', 'c']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>12 </th>\n",
-        "      <td>              dress</td>\n",
-        "      <td>                         ['d', 'r', 'e', 's', 's']</td>\n",
-        "      <td>                                                []</td>\n",
-        "      <td>  5</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>13 </th>\n",
-        "      <td>           truckled</td>\n",
-        "      <td>          ['t', 'r', 'u', 'c', 'k', 'l', 'e', 'd']</td>\n",
-        "      <td>                         ['s', 'i', 'a', 'b', 'p']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>14 </th>\n",
-        "      <td>      accommodation</td>\n",
-        "      <td> ['a', 'c', 'c', 'o', 'm', 'm', 'o', 'd', 'a', ...</td>\n",
-        "      <td>                                        ['s', 'g']</td>\n",
-        "      <td> 13</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 13</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>15 </th>\n",
-        "      <td>             reload</td>\n",
-        "      <td>                    ['r', 'e', 'l', 'o', 'a', 'd']</td>\n",
-        "      <td>                                        ['s', 'i']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>16 </th>\n",
-        "      <td>         confounded</td>\n",
-        "      <td> ['c', 'o', 'n', 'f', 'o', 'u', 'n', 'd', 'e', ...</td>\n",
-        "      <td>                                             ['p']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>17 </th>\n",
-        "      <td>         racketeers</td>\n",
-        "      <td> ['r', 'a', 'c', 'k', 'e', 't', 'e', 'e', 'r', ...</td>\n",
-        "      <td>                                        ['o', 'l']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>18 </th>\n",
-        "      <td>        ignoramuses</td>\n",
-        "      <td> ['i', 'g', 'n', 'o', 'r', 'a', 'm', 'u', 's', ...</td>\n",
-        "      <td>                                             ['l']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 11</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>19 </th>\n",
-        "      <td>              party</td>\n",
-        "      <td>                         ['p', 'a', 'r', 't', 'y']</td>\n",
-        "      <td>                              ['s', 'e', 'n', 'd']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>20 </th>\n",
-        "      <td>               rill</td>\n",
-        "      <td>                              ['r', 'i', 'l', 'l']</td>\n",
-        "      <td>                    ['e', 's', 'a', 'o', 'u', 'n']</td>\n",
-        "      <td>  4</td>\n",
-        "      <td>  4</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  4</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>21 </th>\n",
-        "      <td>             player</td>\n",
-        "      <td>                    ['p', 'l', 'a', 'y', 'e', 'r']</td>\n",
-        "      <td>                                        ['s', 'm']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>22 </th>\n",
-        "      <td>          protester</td>\n",
-        "      <td>     ['p', 'r', 'o', 't', 'e', 's', 't', 'e', 'r']</td>\n",
-        "      <td>                                   ['i', 'd', 'l']</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  9</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>23 </th>\n",
-        "      <td>          asphalted</td>\n",
-        "      <td>     ['a', 's', 'p', 'h', 'a', 'l', 't', 'e', 'd']</td>\n",
-        "      <td>                                        ['r', 'i']</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  9</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>24 </th>\n",
-        "      <td>           uniforms</td>\n",
-        "      <td>          ['u', 'n', 'i', 'f', 'o', 'r', 'm', 's']</td>\n",
-        "      <td>                                   ['a', 't', 'p']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>25 </th>\n",
-        "      <td>         coniferous</td>\n",
-        "      <td> ['c', 'o', 'n', 'i', 'f', 'e', 'r', 'o', 'u', ...</td>\n",
-        "      <td>                                                []</td>\n",
-        "      <td> 10</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>26 </th>\n",
-        "      <td>         dishearten</td>\n",
-        "      <td> ['d', 'i', 's', 'h', 'e', 'a', 'r', 't', 'e', ...</td>\n",
-        "      <td>                                   ['o', 'l', 'g']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>27 </th>\n",
-        "      <td>              scull</td>\n",
-        "      <td>                         ['s', 'c', 'u', 'l', 'l']</td>\n",
-        "      <td>                         ['e', 'a', 'o', 'i', 'n']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>28 </th>\n",
-        "      <td>             virgin</td>\n",
-        "      <td>                    ['v', 'i', 'r', 'g', 'i', 'n']</td>\n",
-        "      <td>                                   ['s', 'a', 'd']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>29 </th>\n",
-        "      <td>       licentiously</td>\n",
-        "      <td> ['l', 'i', 'c', 'e', 'n', 't', 'i', 'o', 'u', ...</td>\n",
-        "      <td>                                                []</td>\n",
-        "      <td> 12</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 12</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>...</th>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "      <td>...</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>970</th>\n",
-        "      <td>         grindstone</td>\n",
-        "      <td> ['g', 'r', 'i', 'n', 'd', 's', 't', 'o', 'n', ...</td>\n",
-        "      <td>                                   ['a', 'u', 'p']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>971</th>\n",
-        "      <td>       bankruptcies</td>\n",
-        "      <td> ['b', 'a', 'n', 'k', 'r', 'u', 'p', 't', 'c', ...</td>\n",
-        "      <td>                                                []</td>\n",
-        "      <td> 12</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 12</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>972</th>\n",
-        "      <td>             smalls</td>\n",
-        "      <td>                    ['s', 'm', 'a', 'l', 'l', 's']</td>\n",
-        "      <td>                              ['e', 't', 'k', 'w']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>973</th>\n",
-        "      <td>            limping</td>\n",
-        "      <td>               ['l', 'i', 'm', 'p', 'i', 'n', 'g']</td>\n",
-        "      <td>               ['s', 'r', 'e', 'a', 'o', 'u', 'k']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  3</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>974</th>\n",
-        "      <td>        interfacing</td>\n",
-        "      <td> ['i', 'n', 't', 'e', 'r', 'f', 'a', 'c', 'i', ...</td>\n",
-        "      <td>                              ['o', 'l', 'd', 's']</td>\n",
-        "      <td> 11</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 11</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>975</th>\n",
-        "      <td>               mint</td>\n",
-        "      <td>                              ['_', '_', 'n', 't']</td>\n",
-        "      <td> ['e', 's', 'a', 'o', 'u', 'd', 'k', 'l', 'p', ...</td>\n",
-        "      <td>  2</td>\n",
-        "      <td>  0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  4</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>976</th>\n",
-        "      <td>       romanticises</td>\n",
-        "      <td> ['r', 'o', 'm', 'a', 'n', 't', 'i', 'c', 'i', ...</td>\n",
-        "      <td>                                             ['d']</td>\n",
-        "      <td> 12</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 12</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>977</th>\n",
-        "      <td>           cleavage</td>\n",
-        "      <td>          ['c', 'l', 'e', 'a', 'v', 'a', 'g', 'e']</td>\n",
-        "      <td>                                        ['r', 's']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>978</th>\n",
-        "      <td>            revival</td>\n",
-        "      <td>               ['r', 'e', 'v', 'i', 'v', 'a', 'l']</td>\n",
-        "      <td>                              ['s', 'n', 'c', 'm']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>979</th>\n",
-        "      <td>            praying</td>\n",
-        "      <td>               ['p', 'r', 'a', 'y', 'i', 'n', 'g']</td>\n",
-        "      <td>                              ['s', 'd', 'c', 'b']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>980</th>\n",
-        "      <td>             troupe</td>\n",
-        "      <td>                    ['t', 'r', 'o', 'u', 'p', 'e']</td>\n",
-        "      <td>                              ['s', 'g', 'a', 'l']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>981</th>\n",
-        "      <td>             public</td>\n",
-        "      <td>                    ['p', 'u', 'b', 'l', 'i', 'c']</td>\n",
-        "      <td>                    ['s', 'r', 'd', 'n', 'a', 'e']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  4</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>982</th>\n",
-        "      <td>         generating</td>\n",
-        "      <td> ['g', 'e', 'n', 'e', 'r', 'a', 't', 'i', 'n', ...</td>\n",
-        "      <td>                                        ['o', 'l']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>983</th>\n",
-        "      <td>            sallies</td>\n",
-        "      <td>               ['s', 'a', 'l', 'l', 'i', 'e', 's']</td>\n",
-        "      <td>                                             ['r']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>984</th>\n",
-        "      <td>              yacht</td>\n",
-        "      <td>                         ['y', 'a', 'c', 'h', 't']</td>\n",
-        "      <td>                                        ['s', 'e']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>985</th>\n",
-        "      <td>            armpits</td>\n",
-        "      <td>               ['a', 'r', 'm', 'p', 'i', 't', 's']</td>\n",
-        "      <td>                                             ['o']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>986</th>\n",
-        "      <td>            oblongs</td>\n",
-        "      <td>               ['o', 'b', 'l', 'o', 'n', 'g', 's']</td>\n",
-        "      <td>                                   ['r', 'i', 'a']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>987</th>\n",
-        "      <td>          developed</td>\n",
-        "      <td>     ['d', 'e', 'v', 'e', 'l', 'o', 'p', 'e', 'd']</td>\n",
-        "      <td>                         ['t', 'a', 'r', 'n', 'i']</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  9</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>988</th>\n",
-        "      <td>           demolish</td>\n",
-        "      <td>          ['d', 'e', 'm', 'o', 'l', 'i', 's', 'h']</td>\n",
-        "      <td>                                   ['r', 'a', 't']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>989</th>\n",
-        "      <td>            pincers</td>\n",
-        "      <td>               ['p', 'i', 'n', 'c', 'e', 'r', 's']</td>\n",
-        "      <td>                         ['a', 'o', 't', 'd', 'l']</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  7</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>990</th>\n",
-        "      <td> telecommunications</td>\n",
-        "      <td> ['t', 'e', 'l', 'e', 'c', 'o', 'm', 'm', 'u', ...</td>\n",
-        "      <td>                                        ['p', 'r']</td>\n",
-        "      <td> 18</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 18</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>991</th>\n",
-        "      <td>             dabble</td>\n",
-        "      <td>                    ['d', 'a', 'b', 'b', 'l', 'e']</td>\n",
-        "      <td>                         ['s', 'r', 'i', 'n', 'y']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>992</th>\n",
-        "      <td>          morticing</td>\n",
-        "      <td>     ['m', 'o', 'r', 't', 'i', 'c', 'i', 'n', 'g']</td>\n",
-        "      <td>                              ['a', 's', 'f', 'd']</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  9</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>993</th>\n",
-        "      <td>              weals</td>\n",
-        "      <td>                         ['w', 'e', 'a', 'l', 's']</td>\n",
-        "      <td>                         ['r', 'd', 'p', 'm', 'h']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>994</th>\n",
-        "      <td>              dryer</td>\n",
-        "      <td>                         ['d', 'r', 'y', 'e', 'r']</td>\n",
-        "      <td>                                        ['s', 'i']</td>\n",
-        "      <td>  5</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  5</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>995</th>\n",
-        "      <td>     inconclusively</td>\n",
-        "      <td> ['i', 'n', 'c', 'o', 'n', 'c', 'l', 'u', 's', ...</td>\n",
-        "      <td>                                             ['d']</td>\n",
-        "      <td> 14</td>\n",
-        "      <td>  9</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 14</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>996</th>\n",
-        "      <td>          bubbliest</td>\n",
-        "      <td>     ['_', '_', '_', '_', '_', '_', '_', '_', 't']</td>\n",
-        "      <td> ['n', 'r', 'o', 'c', 'a', 'm', 'h', 'p', 'f', ...</td>\n",
-        "      <td>  1</td>\n",
-        "      <td>  0</td>\n",
-        "      <td> False</td>\n",
-        "      <td>  9</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>997</th>\n",
-        "      <td>             graded</td>\n",
-        "      <td>                    ['g', 'r', 'a', 'd', 'e', 'd']</td>\n",
-        "      <td>                    ['s', 'c', 'v', 'y', 't', 'z']</td>\n",
-        "      <td>  6</td>\n",
-        "      <td>  4</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  6</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>998</th>\n",
-        "      <td>           carriage</td>\n",
-        "      <td>          ['c', 'a', 'r', 'r', 'i', 'a', 'g', 'e']</td>\n",
-        "      <td>                                   ['s', 'l', 'd']</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  7</td>\n",
-        "      <td>  True</td>\n",
-        "      <td>  8</td>\n",
-        "    </tr>\n",
-        "    <tr>\n",
-        "      <th>999</th>\n",
-        "      <td>         datelining</td>\n",
-        "      <td> ['d', 'a', 't', 'e', 'l', 'i', 'n', 'i', 'n', ...</td>\n",
-        "      <td>                                        ['o', 's']</td>\n",
-        "      <td> 10</td>\n",
-        "      <td>  8</td>\n",
-        "      <td>  True</td>\n",
-        "      <td> 10</td>\n",
-        "    </tr>\n",
-        "  </tbody>\n",
-        "</table>\n",
-        "<p>1000 rows \u00d7 7 columns</p>\n",
-        "</div>"
-       ],
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 20,
-       "text": [
-        "                 target                                         discovered  \\\n",
-        "0                punned                     ['p', 'u', 'n', 'n', 'e', 'd']   \n",
-        "1                 anode                          ['a', 'n', 'o', 'd', 'e']   \n",
-        "2                passes                     ['p', 'a', 's', 's', 'e', 's']   \n",
-        "3                maxing                     ['m', 'a', 'x', 'i', 'n', 'g']   \n",
-        "4              quadrant           ['q', 'u', 'a', 'd', 'r', 'a', 'n', 't']   \n",
-        "5              polygamy           ['p', 'o', 'l', 'y', 'g', 'a', 'm', 'y']   \n",
-        "6         technologists  ['t', 'e', 'c', 'h', 'n', 'o', 'l', 'o', 'g', ...   \n",
-        "7                tussle                     ['t', 'u', 's', 's', 'l', 'e']   \n",
-        "8            explicitly  ['e', 'x', 'p', 'l', 'i', 'c', 'i', 't', 'l', ...   \n",
-        "9            moderators  ['m', 'o', 'd', 'e', 'r', 'a', 't', 'o', 'r', ...   \n",
-        "10                error                          ['e', 'r', 'r', 'o', 'r']   \n",
-        "11              stamped                ['s', 't', 'a', 'm', 'p', 'e', 'd']   \n",
-        "12                dress                          ['d', 'r', 'e', 's', 's']   \n",
-        "13             truckled           ['t', 'r', 'u', 'c', 'k', 'l', 'e', 'd']   \n",
-        "14        accommodation  ['a', 'c', 'c', 'o', 'm', 'm', 'o', 'd', 'a', ...   \n",
-        "15               reload                     ['r', 'e', 'l', 'o', 'a', 'd']   \n",
-        "16           confounded  ['c', 'o', 'n', 'f', 'o', 'u', 'n', 'd', 'e', ...   \n",
-        "17           racketeers  ['r', 'a', 'c', 'k', 'e', 't', 'e', 'e', 'r', ...   \n",
-        "18          ignoramuses  ['i', 'g', 'n', 'o', 'r', 'a', 'm', 'u', 's', ...   \n",
-        "19                party                          ['p', 'a', 'r', 't', 'y']   \n",
-        "20                 rill                               ['r', 'i', 'l', 'l']   \n",
-        "21               player                     ['p', 'l', 'a', 'y', 'e', 'r']   \n",
-        "22            protester      ['p', 'r', 'o', 't', 'e', 's', 't', 'e', 'r']   \n",
-        "23            asphalted      ['a', 's', 'p', 'h', 'a', 'l', 't', 'e', 'd']   \n",
-        "24             uniforms           ['u', 'n', 'i', 'f', 'o', 'r', 'm', 's']   \n",
-        "25           coniferous  ['c', 'o', 'n', 'i', 'f', 'e', 'r', 'o', 'u', ...   \n",
-        "26           dishearten  ['d', 'i', 's', 'h', 'e', 'a', 'r', 't', 'e', ...   \n",
-        "27                scull                          ['s', 'c', 'u', 'l', 'l']   \n",
-        "28               virgin                     ['v', 'i', 'r', 'g', 'i', 'n']   \n",
-        "29         licentiously  ['l', 'i', 'c', 'e', 'n', 't', 'i', 'o', 'u', ...   \n",
-        "..                  ...                                                ...   \n",
-        "970          grindstone  ['g', 'r', 'i', 'n', 'd', 's', 't', 'o', 'n', ...   \n",
-        "971        bankruptcies  ['b', 'a', 'n', 'k', 'r', 'u', 'p', 't', 'c', ...   \n",
-        "972              smalls                     ['s', 'm', 'a', 'l', 'l', 's']   \n",
-        "973             limping                ['l', 'i', 'm', 'p', 'i', 'n', 'g']   \n",
-        "974         interfacing  ['i', 'n', 't', 'e', 'r', 'f', 'a', 'c', 'i', ...   \n",
-        "975                mint                               ['_', '_', 'n', 't']   \n",
-        "976        romanticises  ['r', 'o', 'm', 'a', 'n', 't', 'i', 'c', 'i', ...   \n",
-        "977            cleavage           ['c', 'l', 'e', 'a', 'v', 'a', 'g', 'e']   \n",
-        "978             revival                ['r', 'e', 'v', 'i', 'v', 'a', 'l']   \n",
-        "979             praying                ['p', 'r', 'a', 'y', 'i', 'n', 'g']   \n",
-        "980              troupe                     ['t', 'r', 'o', 'u', 'p', 'e']   \n",
-        "981              public                     ['p', 'u', 'b', 'l', 'i', 'c']   \n",
-        "982          generating  ['g', 'e', 'n', 'e', 'r', 'a', 't', 'i', 'n', ...   \n",
-        "983             sallies                ['s', 'a', 'l', 'l', 'i', 'e', 's']   \n",
-        "984               yacht                          ['y', 'a', 'c', 'h', 't']   \n",
-        "985             armpits                ['a', 'r', 'm', 'p', 'i', 't', 's']   \n",
-        "986             oblongs                ['o', 'b', 'l', 'o', 'n', 'g', 's']   \n",
-        "987           developed      ['d', 'e', 'v', 'e', 'l', 'o', 'p', 'e', 'd']   \n",
-        "988            demolish           ['d', 'e', 'm', 'o', 'l', 'i', 's', 'h']   \n",
-        "989             pincers                ['p', 'i', 'n', 'c', 'e', 'r', 's']   \n",
-        "990  telecommunications  ['t', 'e', 'l', 'e', 'c', 'o', 'm', 'm', 'u', ...   \n",
-        "991              dabble                     ['d', 'a', 'b', 'b', 'l', 'e']   \n",
-        "992           morticing      ['m', 'o', 'r', 't', 'i', 'c', 'i', 'n', 'g']   \n",
-        "993               weals                          ['w', 'e', 'a', 'l', 's']   \n",
-        "994               dryer                          ['d', 'r', 'y', 'e', 'r']   \n",
-        "995      inconclusively  ['i', 'n', 'c', 'o', 'n', 'c', 'l', 'u', 's', ...   \n",
-        "996           bubbliest      ['_', '_', '_', '_', '_', '_', '_', '_', 't']   \n",
-        "997              graded                     ['g', 'r', 'a', 'd', 'e', 'd']   \n",
-        "998            carriage           ['c', 'a', 'r', 'r', 'i', 'a', 'g', 'e']   \n",
-        "999          datelining  ['d', 'a', 't', 'e', 'l', 'i', 'n', 'i', 'n', ...   \n",
-        "\n",
-        "                                         wrong letters  number of hits  \\\n",
-        "0                            ['s', 'r', 'l', 'a', 'i']               6   \n",
-        "1                                      ['s', 'l', 'b']               5   \n",
-        "2                                           ['l', 'b']               6   \n",
-        "3        ['s', 'r', 'd', 't', 'w', 'l', 'p', 'k', 'c']               6   \n",
-        "4                                                   []               8   \n",
-        "5                                 ['r', 'i', 's', 'd']               8   \n",
-        "6                                                ['r']              13   \n",
-        "7                                                ['a']               6   \n",
-        "8                            ['o', 'a', 'b', 's', 'm']              10   \n",
-        "9                                                ['u']              10   \n",
-        "10                           ['s', 't', 'n', 'l', 'y']               5   \n",
-        "11                           ['r', 'i', 'l', 'b', 'c']               7   \n",
-        "12                                                  []               5   \n",
-        "13                           ['s', 'i', 'a', 'b', 'p']               8   \n",
-        "14                                          ['s', 'g']              13   \n",
-        "15                                          ['s', 'i']               6   \n",
-        "16                                               ['p']              10   \n",
-        "17                                          ['o', 'l']              10   \n",
-        "18                                               ['l']              11   \n",
-        "19                                ['s', 'e', 'n', 'd']               5   \n",
-        "20                      ['e', 's', 'a', 'o', 'u', 'n']               4   \n",
-        "21                                          ['s', 'm']               6   \n",
-        "22                                     ['i', 'd', 'l']               9   \n",
-        "23                                          ['r', 'i']               9   \n",
-        "24                                     ['a', 't', 'p']               8   \n",
-        "25                                                  []              10   \n",
-        "26                                     ['o', 'l', 'g']              10   \n",
-        "27                           ['e', 'a', 'o', 'i', 'n']               5   \n",
-        "28                                     ['s', 'a', 'd']               6   \n",
-        "29                                                  []              12   \n",
-        "..                                                 ...             ...   \n",
-        "970                                    ['a', 'u', 'p']              10   \n",
-        "971                                                 []              12   \n",
-        "972                               ['e', 't', 'k', 'w']               6   \n",
-        "973                ['s', 'r', 'e', 'a', 'o', 'u', 'k']               7   \n",
-        "974                               ['o', 'l', 'd', 's']              11   \n",
-        "975  ['e', 's', 'a', 'o', 'u', 'd', 'k', 'l', 'p', ...               2   \n",
-        "976                                              ['d']              12   \n",
-        "977                                         ['r', 's']               8   \n",
-        "978                               ['s', 'n', 'c', 'm']               7   \n",
-        "979                               ['s', 'd', 'c', 'b']               7   \n",
-        "980                               ['s', 'g', 'a', 'l']               6   \n",
-        "981                     ['s', 'r', 'd', 'n', 'a', 'e']               6   \n",
-        "982                                         ['o', 'l']              10   \n",
-        "983                                              ['r']               7   \n",
-        "984                                         ['s', 'e']               5   \n",
-        "985                                              ['o']               7   \n",
-        "986                                    ['r', 'i', 'a']               7   \n",
-        "987                          ['t', 'a', 'r', 'n', 'i']               9   \n",
-        "988                                    ['r', 'a', 't']               8   \n",
-        "989                          ['a', 'o', 't', 'd', 'l']               7   \n",
-        "990                                         ['p', 'r']              18   \n",
-        "991                          ['s', 'r', 'i', 'n', 'y']               6   \n",
-        "992                               ['a', 's', 'f', 'd']               9   \n",
-        "993                          ['r', 'd', 'p', 'm', 'h']               5   \n",
-        "994                                         ['s', 'i']               5   \n",
-        "995                                              ['d']              14   \n",
-        "996  ['n', 'r', 'o', 'c', 'a', 'm', 'h', 'p', 'f', ...               1   \n",
-        "997                     ['s', 'c', 'v', 'y', 't', 'z']               6   \n",
-        "998                                    ['s', 'l', 'd']               8   \n",
-        "999                                         ['o', 's']              10   \n",
-        "\n",
-        "     lives remaining game won  word length  \n",
-        "0                  5     True            6  \n",
-        "1                  7     True            5  \n",
-        "2                  8     True            6  \n",
-        "3                  1     True            6  \n",
-        "4                 10     True            8  \n",
-        "5                  6     True            8  \n",
-        "6                  9     True           13  \n",
-        "7                  9     True            6  \n",
-        "8                  5     True           10  \n",
-        "9                  9     True           10  \n",
-        "10                 5     True            5  \n",
-        "11                 5     True            7  \n",
-        "12                10     True            5  \n",
-        "13                 5     True            8  \n",
-        "14                 8     True           13  \n",
-        "15                 8     True            6  \n",
-        "16                 9     True           10  \n",
-        "17                 8     True           10  \n",
-        "18                 9     True           11  \n",
-        "19                 6     True            5  \n",
-        "20                 4     True            4  \n",
-        "21                 8     True            6  \n",
-        "22                 7     True            9  \n",
-        "23                 8     True            9  \n",
-        "24                 7     True            8  \n",
-        "25                10     True           10  \n",
-        "26                 7     True           10  \n",
-        "27                 5     True            5  \n",
-        "28                 7     True            6  \n",
-        "29                10     True           12  \n",
-        "..               ...      ...          ...  \n",
-        "970                7     True           10  \n",
-        "971               10     True           12  \n",
-        "972                6     True            6  \n",
-        "973                3     True            7  \n",
-        "974                6     True           11  \n",
-        "975                0    False            4  \n",
-        "976                9     True           12  \n",
-        "977                8     True            8  \n",
-        "978                6     True            7  \n",
-        "979                6     True            7  \n",
-        "980                6     True            6  \n",
-        "981                4     True            6  \n",
-        "982                8     True           10  \n",
-        "983                9     True            7  \n",
-        "984                8     True            5  \n",
-        "985                9     True            7  \n",
-        "986                7     True            7  \n",
-        "987                5     True            9  \n",
-        "988                7     True            8  \n",
-        "989                5     True            7  \n",
-        "990                8     True           18  \n",
-        "991                5     True            6  \n",
-        "992                6     True            9  \n",
-        "993                5     True            5  \n",
-        "994                8     True            5  \n",
-        "995                9     True           14  \n",
-        "996                0    False            9  \n",
-        "997                4     True            6  \n",
-        "998                7     True            8  \n",
-        "999                8     True           10  \n",
-        "\n",
-        "[1000 rows x 7 columns]"
-       ]
-      }
-     ],
-     "prompt_number": 20
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "adaptive_split['lives remaining'].hist()"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 21,
-       "text": [
-        "<matplotlib.axes.AxesSubplot at 0x7f1586ed5470>"
-       ]
-      },
-      {
-       "metadata": {},
-       "output_type": "display_data",
-       "png": "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\nLwAAAABJRU5ErkJggg==\n",
-       "text": [
-        "<matplotlib.figure.Figure at 0x7f1586eb5da0>"
-       ]
-      }
-     ],
-     "prompt_number": 21
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "adaptive_split.groupby('lives remaining').size()"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 22,
-       "text": [
-        "lives remaining\n",
-        "0                   19\n",
-        "1                    9\n",
-        "2                   22\n",
-        "3                   56\n",
-        "4                   68\n",
-        "5                  105\n",
-        "6                  165\n",
-        "7                  172\n",
-        "8                  183\n",
-        "9                  124\n",
-        "10                  77\n",
-        "dtype: int64"
-       ]
-      }
-     ],
-     "prompt_number": 22
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 75
-    }
-   ],
-   "metadata": {}
-  }
- ]
-}
\ No newline at end of file
index 1eac3a55a6db4ae9f9ebfe7ed26d624340aac9f0..f9a634c658ce7404b0d92d9c0391126ef0940a9d 100644 (file)
@@ -9,7 +9,7 @@ WORDS = [w.strip() for w in open('/usr/share/dict/british-english').readlines()
 LETTER_COUNTS = collections.Counter(l.lower() for l in open('../sherlock-holmes.txt').read() if l in string.ascii_letters)
 LETTERS_IN_ORDER = [p[0] for p in LETTER_COUNTS.most_common()]
 
-DICT_COUNTS = collections.Counter(l.lower() for l in open('/usr/share/dict/british-english').read() if l in string.ascii_letters)
+DICT_COUNTS = collections.Counter(''.join(WORDS))
 DICT_LETTERS_IN_ORDER = [p[0] for p in DICT_COUNTS.most_common()]
 
 STARTING_LIVES = 10
@@ -79,8 +79,7 @@ class PlayerFixedOrder:
         self.ordered_letters = ordered_letters
         
     def guess(self, discovered, missed, lives):
-        guessed_letters = [l.lower() for l in discovered + missed if l in string.ascii_letters]
-        return [l for l in self.ordered_letters if l not in guessed_letters][0]
+        return [l for l in self.ordered_letters if l not in discovered + missed][0]
 
 class PlayerAlphabetical(PlayerFixedOrder):
     def __init__(self):
@@ -106,8 +105,7 @@ class PlayerAdaptive:
     def guess(self, discovered, missed, lives):
         self.filter_candidate_words(discovered, missed)
         self.set_ordered_letters()
-        guessed_letters = [l.lower() for l in discovered + missed if l in string.ascii_letters]
-        return [l for l in self.ordered_letters if l not in guessed_letters][0]
+        return [l for l in self.ordered_letters if l not in discovered + missed][0]
     
     def filter_candidate_words(self, discovered, missed):
         pass