{ "metadata": { "name": "", "signature": "sha256:6b8d6551e13b3d60196077d54315af6fd1f78b4de386098da7115fe7cf3112fb" }, "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", " locations = []\n", " starting=0\n", " location = self.target.find(letter)\n", " while location > -1:\n", " locations += [location]\n", " starting = location + 1\n", " location = self.target.find(letter, starting)\n", " return locations\n", " \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": 37 }, { "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", " self.ordered_subtract(guessed_letters)\n", " return self.ordered_letters[0]\n", "\n", " def ordered_subtract(self, to_remove):\n", " for r in to_remove:\n", " if r in self.ordered_letters:\n", " ri = self.ordered_letters.index(r)\n", " self.ordered_letters = self.ordered_letters[:ri] + self.ordered_letters[ri+1:]" ], "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": [ "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": [ "42\n" ] } ], "prompt_number": 38 }, { "cell_type": "code", "collapsed": false, "input": [ "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": [ "330\n" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "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" ] } ], "prompt_number": 10 }, { "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": [ "472\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", " self.ordered_subtract(guessed_letters)\n", " return self.ordered_letters[0]\n", "\n", " def ordered_subtract(self, to_remove):\n", " for r in to_remove:\n", " if r in self.ordered_letters:\n", " ri = self.ordered_letters.index(r)\n", " self.ordered_letters = self.ordered_letters[:ri] + self.ordered_letters[ri+1:]\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": 15 }, { "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": 16 }, { "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", " self.ordered_subtract(guessed_letters)\n", " return self.ordered_letters[0]\n", "\n", " def ordered_subtract(self, to_remove):\n", " for r in to_remove:\n", " if r in self.ordered_letters:\n", " ri = self.ordered_letters.index(r)\n", " self.ordered_letters = self.ordered_letters[:ri] + self.ordered_letters[ri+1:]\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": 17 }, { "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": [ "975\n" ] } ], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "re.match('^[^xaz]*$', 'happy')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 50 }, { "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", " self.ordered_subtract(guessed_letters)\n", " return self.ordered_letters[0]\n", "\n", " def ordered_subtract(self, to_remove):\n", " for r in to_remove:\n", " if r in self.ordered_letters:\n", " ri = self.ordered_letters.index(r)\n", " self.ordered_letters = self.ordered_letters[:ri] + self.ordered_letters[ri+1:]\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": 62 }, { "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": [ "491\n" ] } ], "prompt_number": 63 }, { "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", " self.ordered_subtract(guessed_letters)\n", " return self.ordered_letters[0]\n", "\n", " def ordered_subtract(self, to_remove):\n", " for r in to_remove:\n", " if r in self.ordered_letters:\n", " ri = self.ordered_letters.index(r)\n", " self.ordered_letters = self.ordered_letters[:ri] + self.ordered_letters[ri+1:]\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": 25 }, { "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": [ "995\n" ] } ], "prompt_number": 27 }, { "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": [ "992\n", "994" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "989" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "990" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "1 loops, best of 3: 33.9 s per loop\n" ] } ], "prompt_number": 28 }, { "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", " self.ordered_subtract(guessed_letters)\n", " return self.ordered_letters[0]\n", "\n", " def ordered_subtract(self, to_remove):\n", " for r in to_remove:\n", " if r in self.ordered_letters:\n", " ri = self.ordered_letters.index(r)\n", " self.ordered_letters = self.ordered_letters[:ri] + self.ordered_letters[ri+1:]\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": 29 }, { "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": 30 }, { "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": 31 }, { "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": 32 }, { "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": 33 }, { "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": [ "465\n", "458" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "483" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "482" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "1 loops, best of 3: 18.5 s per loop\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=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": [ "976\n", "983" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "983" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "985" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "1 loops, best of 3: 40.4 s per loop\n" ] } ], "prompt_number": 35 }, { "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": [ "513\n", "507" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "509" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "523" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "1 loops, best of 3: 8min 15s per loop\n" ] } ], "prompt_number": 40 }, { "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": [ "992\n", "995" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "998" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "989" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "1 loops, best of 3: 34.4 s per loop\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=PlayerAdaptivePatternNegLookahead(WORDS))\n", " g.play_game()\n", " if g.game_won:\n", " wins += 1\n", "print(wins)" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'PlayerAdaptivePatternNegLookahead' is not defined", "output_type": "pyerr", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mget_ipython\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrun_cell_magic\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'timeit'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m''\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'\\nwins = 0\\nfor _ in range(1000):\\n g = Game(random.choice(WORDS), player=PlayerAdaptivePatternNegLookahead(WORDS))\\n g.play_game()\\n if g.game_won:\\n wins += 1\\nprint(wins)'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;32m/usr/local/lib/python3.4/dist-packages/IPython/core/interactiveshell.py\u001b[0m in \u001b[0;36mrun_cell_magic\u001b[1;34m(self, magic_name, line, cell)\u001b[0m\n\u001b[0;32m 2160\u001b[0m \u001b[0mmagic_arg_s\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvar_expand\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mline\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstack_depth\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2161\u001b[0m \u001b[1;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbuiltin_trap\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2162\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmagic_arg_s\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcell\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2163\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mresult\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2164\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/usr/local/lib/python3.4/dist-packages/IPython/core/magics/execution.py\u001b[0m in \u001b[0;36mtimeit\u001b[1;34m(self, line, cell)\u001b[0m\n", "\u001b[1;32m/usr/local/lib/python3.4/dist-packages/IPython/core/magic.py\u001b[0m in \u001b[0;36m\u001b[1;34m(f, *a, **k)\u001b[0m\n\u001b[0;32m 191\u001b[0m \u001b[1;31m# but it's overkill for just that one bit of state.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 192\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mmagic_deco\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 193\u001b[1;33m \u001b[0mcall\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mlambda\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 194\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 195\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcallable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/usr/local/lib/python3.4/dist-packages/IPython/core/magics/execution.py\u001b[0m in \u001b[0;36mtimeit\u001b[1;34m(self, line, cell)\u001b[0m\n\u001b[0;32m 1011\u001b[0m \u001b[0mnumber\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1012\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0m_\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m10\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1013\u001b[1;33m \u001b[1;32mif\u001b[0m \u001b[0mtimer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtimeit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnumber\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>=\u001b[0m \u001b[1;36m0.2\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1014\u001b[0m \u001b[1;32mbreak\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1015\u001b[0m \u001b[0mnumber\u001b[0m \u001b[1;33m*=\u001b[0m \u001b[1;36m10\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/usr/lib/python3.4/timeit.py\u001b[0m in \u001b[0;36mtimeit\u001b[1;34m(self, number)\u001b[0m\n\u001b[0;32m 176\u001b[0m \u001b[0mgc\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdisable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 177\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 178\u001b[1;33m \u001b[0mtiming\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minner\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mit\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtimer\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 179\u001b[0m \u001b[1;32mfinally\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 180\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mgcold\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m\u001b[0m in \u001b[0;36minner\u001b[1;34m(_it, _timer)\u001b[0m\n", "\u001b[1;31mNameError\u001b[0m: name 'PlayerAdaptivePatternNegLookahead' is not defined" ] } ], "prompt_number": 42 }, { "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": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }