X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=hangman-guesser.ipynb;fp=hangman-guesser.ipynb;h=eb892bfd656a88df23061260d3ad592ba488b3ed;hb=779f73cd801e470854afbbca2a4d2d729879a1f7;hp=0000000000000000000000000000000000000000;hpb=57413629de6f67a333a80f5094d631ee2d5a6c6f;p=cas-master-teacher-training.git diff --git a/hangman-guesser.ipynb b/hangman-guesser.ipynb new file mode 100644 index 0000000..eb892bf --- /dev/null +++ b/hangman-guesser.ipynb @@ -0,0 +1,449 @@ +{ + "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": {} + } + ] +} \ No newline at end of file