{ "metadata": { "name": "", "signature": "sha256:ec76c8912af009e1d51e1d840d9f295e2df8755e6278243cce7b6584e2ed1a24" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "import string\n", "import collections" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "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" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "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": 4 }, { "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": 9, "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": 9 }, { "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.lower() for l in 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, "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": 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 }, { "cell_type": "code", "collapsed": false, "input": [ "letters_in_order" ], "language": "python", "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 }, { "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" ], "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" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 28, "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": 28 }, { "cell_type": "code", "collapsed": false, "input": [ "make_guess()" ], "language": "python", "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 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }