-----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-----
```
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
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
{
"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",
{
"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,
"language": "python",
"metadata": {},
"outputs": [],
- "prompt_number": 71
+ "prompt_number": 43
},
{
"cell_type": "code",
"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": {}
--- /dev/null
+{
+ "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
+++ /dev/null
-{
- "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
--- /dev/null
+{
+ "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": "iVBORw0KGgoAAAANSUhEUgAAAXgAAAEACAYAAAC57G0KAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEQ1JREFUeJzt3G2MXOV5xvH/FpuornE2Vlq/4XQciJVYirK0idVCI29f\nhEjaQPqFJm0kNrRVJKpAG6nF5gOmX9oEiSaqqkRqA8EowcGClkAkUuOIVVNVCW0xL4kxL46txhhM\nSrFiI6vFsP3wnMlzWC+7M7Mz89x75v+TRjPnzOzOxSN879nrnB2QJEmSJEmSJEmSJEmSJEkaSRuB\nh4AfAN8Hrq323wQcBfZXtw/VvmYH8AxwELh0WEElSd1ZC0xUj1cCTwHvAXYCn5nj9VuAR4HlQAt4\nFviZgaeUJJ1loeH7AmlgA5wCngQ2VNtjc7z+CmA38CpwhDTgty46pSSpa90cXbeAi4DvVtufBh4D\nbgXGq33rSdVN21HyDwRJ0hB1OuBXAncD15GO5L8EbCLVN88Dt8zztTOLCShJ6s2yDl6zHLgH+Cpw\nb7XvxdrzXwburx4/Rzox23Z+te8N1q9fP3Ps2LGuw0rSiDsEXNjpixc6gh8jVTAHgC/U9q+rPf5d\n4Inq8X3Ax4BzSUf47wIenv1Njx07xszMjLeZGXbu3Fk8Q5Sba+FauBbz34ALOh3usPAR/CXAJ4DH\nSZdDAtwAfJxUz8wAh4FPVc8dAPZU92eAa7CimdeRI0dKRwjDtchci8y16N1CA/5fmfso/4F5vuav\nqpskqSCvUS9samqqdIQwXIvMtchci97NdS37MMxUfZIkqUNjY2PQxdz2CL6w6enp0hHCcC0y1yJz\nLXrngJekhrKikaQlwopGkgQ44IuzX8xci8y1yFyL3jngJamh7OAlaYmwg5ckAQ744uwXM9cicy0y\n16J3DnhJaig7eElaIuzgJUmAA744+8XMtchci8y16J0DXpIayg5ekpYIO3hJEuCAL85+MXMtMtci\ncy1654CXpIayg5ekJcIOXpIEOOCLs1/MXIvMtchci9454CWpoezgJWmJsIOXJAEO+OLsFzPXInMt\nMteidw54SWooO3hJWiLs4CVJgAO+OPvFzLXIXIvMteidA16SGsoOXpKWCDt4SRLggC/OfjFzLTLX\nInMteueAl6SGWqjL2QjcAfwCMAP8PfC3wGrgLuAXgSPAlcCJ6mt2AFcDrwHXAnvn+L528JLUpW47\n+IVeuLa6PQqsBP4T+CjwSeC/gZuB64G3AduBLcCdwAeADcA+YDPw+qzv64CXpC71+yTrC6ThDnAK\neJI0uC8HdlX7d5GGPsAVwG7gVdKR/bPA1k7DjCL7xcy1yFyLzLXo3bIuXtsCLgK+B6wBjlf7j1fb\nAOuB79a+5ijpB4IkLVmrVq3m5MmXS8foWqcDfiVwD3AdcHLWczPV7c3M+dzU1BStVguA8fFxJiYm\nmJycBPJP7FHYnpycDJXH7TjbbVHylNpu7yuZJw339iibru4nh7A9DdxebbeAv6QbnXQ5y4FvAg8A\nX6j2Haze/QVgHfAQ8G5SDw/w2er+W8BO0lF/nR28pCUjdd8RZlZ/O/gx4FbgAHm4A9wHXFU9vgq4\nt7b/Y8C5wCbgXcDDnYYZRbOP1kaZa5G5Fplr0buFKppLgE8AjwP7q307SEfoe4A/JF8mCekHwZ7q\n/gxwDTF+7EnSyPGzaCRpAU2taCRJS5QDvjD7xcy1yFyLzLXonQNekhrKDl6SFmAHL0kKxQFfmP1i\n5lpkrkXmWvTOAS9JDWUHL0kLsIOXJIXigC/MfjFzLTLXInMtetfN58FL0tB9+MMf4fTpU6VjLEl2\n8JJCi9F/R8gAdvCSJMABX5z9YuZaZK6F+sEBL0kNZQcvKTQ7+Do7eEkSDvji7Foz1yJzLdQPDnhJ\naig7eEmh2cHXddfB+5eskua0atVqTp58uXQMLYIVTWF2rZlrkUVYizTcZwLc1CsHvCQ1lB28pDnF\n6L4hRv8dIQN4HbwkCXDAFxeha43CtchcC/WDV9FIAfkZ6OoHO3gpoBj9d4QMECNHhAxgBy9JAhzw\nxdm1Zq6F1F8OeElqKDt4KSA7+LoIOSJkADt4SRLggC/O3jlzLaT+csBLUkN10uXcBvw28CLw3mrf\nTcAfAT+utm8AHqge7wCuBl4DrgX2zvE97eCledjB10XIESEDdNvBd/LCDwKngDvIA34ncBL4m1mv\n3QLcCXwA2ADsAzYDr896nQNemocDvi5CjggZYBAnWb8DzPWp/3O9yRXAbuBV4AjwLLC10zCjyN45\ncy2k/lpMB/9p4DHgVmC82rceOFp7zVHSkbwkach6HfBfAjYBE8DzwC3zvDbC7zVhTU5Olo4Qhmsh\n9Vevnyb5Yu3xl4H7q8fPARtrz51f7TvL1NQUrVYLgPHxcSYmJn76D7z9q7rbbo/ydtbenhzydun3\nb2+395V6//Y2Czw/iO1p4PZqu0W3Oi3rW6Qh3j7Juo505A7wZ6STqr9PPsm6lXyS9ULOPor3JGtl\nenraI9eKa5F5krUuQo4IGaDbk6ydHMHvBrYBbwd+RLqCZpJUz8wAh4FPVa89AOyp7s8A1xBjVSRp\n5PhZNFJAHsHXRcgRIQP4WTSSJMABX5zXfmeuhdRfDnhJaig7eCkgO/i6CDkiZAA7eEkS4IAvzt45\ncy2k/nLAS1JD2cFLAdnB10XIESED2MFLkgAHfHH2zplrIfWXA16SGsoOXgrIDr4uQo4IGcAOXpIE\nOOCLs3fOXAupvxzwktRQdvBSQHbwdRFyRMgAdvCSJMABX5y9c+ZaSP3lgJekhrKDlwKyg6+LkCNC\nBrCDlyQBDvji7J0z10LqLwe8JDWUHbwUkB18XYQcETKAHbwkCXDAF2fvnLkWUn854CWpoezgpYDs\n4Osi5IiQAezgJUmAA744e+fMtZD6ywEvSQ1lBy8FZAdfFyFHhAxgBy9JAhzwxdk7Z66F1F8OeElq\nKDt4KSA7+LoIOSJkgEF08LcBx4EnavtWAw8CTwN7gfHaczuAZ4CDwKWdBpEiWLVqNWNjY8VvUj90\nMuC/Alw2a9920oDfDHy72gbYAvxedX8Z8MUO32Nk2TtnEdbi5MmXSUdqpW/S4nUyfL8DvDxr3+XA\nrurxLuCj1eMrgN3Aq8AR4Flg66JTSpK61uvR9RpSbUN1v6Z6vB44WnvdUWBDj+8xEiYnJ0tHCMO1\nkPqrH/XJQr9T+vumJBWwrMevOw6sBV4A1gEvVvufAzbWXnd+te8sU1NTtFotAMbHx5mYmPjpEVy7\nix2F7XrvHCFPye32vtJ5oJ2n9DYLPN/0929vt/eVev/2Ngs8P4jtaeD2artFtzo9Xd8C7gfeW23f\nDLwEfI50gnW8ut8C3Enq3TcA+4ALOfso3sskK9PT01YTlQhrEePyRIhxWV6EDBAjR4QM0O1lkp28\ncDewDXg76cj9RuAbwB7gHaSTqVcCJ6rX3wBcDZwBrgP+eY7v6YBXSA74aBkgRo4IGWAQA34QHPAK\nyQEfLQPEyBEhA/hhY0tMhGu/o3AtpP5ywEtSQ1nRSDVWNNEyQIwcETKAFY0kCXDAF2fvnLkWUn85\n4CWpoezgpRo7+GgZIEaOCBnADl6SBDjgi7N3zlwLqb8c8JLUUHbwUo0dfLQMECNHhAxgBy9JAhzw\nxdk7Z66F1F8OeElqKDt4qcYOPloGiJEjQgawg5ckAQ744uydM9dC6i8HvCQ1lB28VGMHHy0DxMgR\nIQPYwUuSAAd8cfbOmWsh9ZcDXpIayg5eqrGDj5YBYuSIkAHs4CVJgAO+OHvnbMWK8xgbGyt6k5pk\nWekAUtvp06co/2uwQ17NYQevMGL03xEyQIwcETJAjBwRMoAdvCQJcMAXZwcvaVAc8JLUUHbwCsMO\nvi5CjggZIEaOCBnADl6SBDjgi7ODlzQoDnhJaig7eIVhB18XIUeEDBAjR4QM0G0H71+yilWrVnPy\n5MulY0jqs8VWNEeAx4H9wMPVvtXAg8DTwF5gfJHv0WgROvg03GcC3CT102IH/AwwCVwEbK32bScN\n+M3At6ttSdKQLbaDPwy8H3iptu8gsA04DqwFpoF3z/o6O/hAYnTfEKPnjJABYuSIkAFi5IiQAYZ9\nHfwMsA/4D+CPq31rSMOd6n7NIt9DktSDxZ5kvQR4Hvh5Ui1zcNbzb1quTk1N0Wq1ABgfH2diYoLJ\nyUkg99KjsF3v4EvlSaZJbVv7MQW2WeD5Udtmgeeb/v7t7fa+Uu/f3maB5wexPQ3cXm236FY/L5Pc\nCZwiHclPAi8A64CHsKJ5U9PT07MG7fBZ0UTLADFyRMgAMXJEyADDrGhWAOdVj38OuBR4ArgPuKra\nfxVw7yLeo/FKD3dJzbWYI/hNwD9Vj5cBXwP+mnSZ5B7gHaTLKK8ETsz6Wo/gA/EIPloGiJEjQgaI\nkSNCBuj2CN6/ZC3MiqYuQo4IGSBGjggZIEaOCBnAT5OUJAEewQuP4ONlgBg5ImSAGDkiZACP4CVJ\ngAO+uAifRSOpmRzwktRQdvCygw+XAWLkiJABYuSIkAHs4CVJgAO+ODt4SYPigJekhrKDlx18uAwQ\nI0eEDBAjR4QMYAcvSQIc8MXZwUsaFAe8JDWUHbzs4MNlgBg5ImSAGDkiZAA7eEkS4IAvzg5e0qA4\n4CWpoezgZQcfLgPEyBEhA8TIESED2MFLkgAHfHF28JIGxYqmsBUrzuP06VOlYxDn18/SOSJkgBg5\nImSAGDkiZIBuKxoHfGEx+u8IGSBGjggZIEaOCBkgRo4IGaDbAb9scEHmd9llV5Z6awAuvviXufHG\n64tmkKRBKnYED3cVemuAH/LOd+7h0KFHCmZIPIKvi5AjQgaIkSNCBoiRI0IGWDJH8FDyCP4RYE/B\n95ekwfMqGklqKAe8JDWUA16SGsoBL0kN5YCXpIZywEtSQzngJamhCl4HX9bhwweqPzKSpGYa2QE/\nM/O/BPrLNEnqOysaSWqoQQ34y4CDwDOAn+glSQUMYsCfA/wdachvAT4OvGcA7yNJmscgBvxW4Fng\nCPAq8HXgigG8jyRpHoMY8BuAH9W2j1b7JElDNIiraDq6NGXVqo8M4K0789prJ3jllWJvL0lDMYgB\n/xywsba9kXQUX3foJz/55gUDeO8uRblEMUKOCBkgRo4IGSBGjggZIEaOCBk4VDrAsipECzgXeBRP\nskpSY3wIeIp0snVH4SySJEmSeuUfQCUbgYeAHwDfB64tGyeEc4D9wP2lgxQ2DtwNPAkcAH6lbJyi\ndpD+jTwB3Am8pWycoboNOE76b29bDTwIPA3sJf2/EsY5pMqmBSxntLv5tcBE9Xglqc4a1bVo+wzw\nNeC+0kEK2wVcXT1eBry1YJaSWsAPyUP9LuCqYmmG74PARbxxwN8M/EX1+Hrgs8MONZ9fBb5V295e\n3QT3Ar9ZOkRB5wP7gF9ntI/g30oaakpHq08BbyP9oLsf+K2iiYavxRsH/EFgTfV4bbU9r2F+2Jh/\nADW3Fukn9fcK5yjp88CfA6+XDlLYJuDHwFeAR4B/AFYUTVTO/wC3AP8FHANOkA4CRtkaUm1Ddb9m\nntcCwx3wET6bN5qVpL71OuBU4Syl/A7wIql/D3GhcUHLgF8Cvljdv8Lo/pZ7AfCnpAOg9aR/K39Q\nMlAwM3QwU4c54Dv5A6hRshy4B/gqqaIZVRcDlwOHgd3AbwB3FE1UztHq9u/V9t2kQT+K3g/8G/AS\ncAb4R9L/K6PsOKmaAVhHOjAKwz+AysZIQ+zzpYMEs43R7uAB/gXYXD2+CfhcuShFvY90hdnPkv69\n7AL+pGii4Wtx9knW9tWH2wl2khX8A6i2XyP1zY+Sqon9pEtIR902vIrmfaQj+MdIR62jehUNpCtG\n2pdJ7iL91jsqdpPOPfwf6dzlJ0knnvcR9DJJSZIkSZIkSZIkSZIkSZIkSZIkSZrT/wNDjrZHdtUP\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
+++ /dev/null
-{
- "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
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
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):
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