Updated README, moved Hangman files into a separate directory
[cas-master-teacher-training.git] / hangman / hangman-guesser.ipynb
diff --git a/hangman/hangman-guesser.ipynb b/hangman/hangman-guesser.ipynb
new file mode 100644 (file)
index 0000000..eb892bf
--- /dev/null
@@ -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