Tweaks
[cas-master-teacher-training.git] / hangman-guesser.ipynb
1 {
2 "metadata": {
3 "name": "",
4 "signature": "sha256:ec76c8912af009e1d51e1d840d9f295e2df8755e6278243cce7b6584e2ed1a24"
5 },
6 "nbformat": 3,
7 "nbformat_minor": 0,
8 "worksheets": [
9 {
10 "cells": [
11 {
12 "cell_type": "code",
13 "collapsed": false,
14 "input": [
15 "import string\n",
16 "import collections"
17 ],
18 "language": "python",
19 "metadata": {},
20 "outputs": [],
21 "prompt_number": 1
22 },
23 {
24 "cell_type": "code",
25 "collapsed": false,
26 "input": [
27 "letter_counts = collections.Counter(l.lower() for l in open('sherlock-holmes.txt').read() if l in string.ascii_letters)\n",
28 "letter_counts"
29 ],
30 "language": "python",
31 "metadata": {},
32 "outputs": [
33 {
34 "metadata": {},
35 "output_type": "pyout",
36 "prompt_number": 4,
37 "text": [
38 "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})"
39 ]
40 }
41 ],
42 "prompt_number": 4
43 },
44 {
45 "cell_type": "code",
46 "collapsed": false,
47 "input": [
48 "letters_in_order = [p[0] for p in letter_counts.most_common()]\n",
49 "letters_in_order"
50 ],
51 "language": "python",
52 "metadata": {},
53 "outputs": [
54 {
55 "metadata": {},
56 "output_type": "pyout",
57 "prompt_number": 9,
58 "text": [
59 "['e',\n",
60 " 't',\n",
61 " 'a',\n",
62 " 'o',\n",
63 " 'i',\n",
64 " 'h',\n",
65 " 'n',\n",
66 " 's',\n",
67 " 'r',\n",
68 " 'd',\n",
69 " 'l',\n",
70 " 'u',\n",
71 " 'm',\n",
72 " 'w',\n",
73 " 'c',\n",
74 " 'y',\n",
75 " 'f',\n",
76 " 'g',\n",
77 " 'p',\n",
78 " 'b',\n",
79 " 'v',\n",
80 " 'k',\n",
81 " 'x',\n",
82 " 'j',\n",
83 " 'q',\n",
84 " 'z']"
85 ]
86 }
87 ],
88 "prompt_number": 9
89 },
90 {
91 "cell_type": "code",
92 "collapsed": false,
93 "input": [
94 "def make_guess():\n",
95 " guessed_letters = read_game()\n",
96 " unguessed_letters_in_order = ordered_subtract(letters_in_order, guessed_letters)\n",
97 " print('My guess is:', unguessed_letters_in_order[0])"
98 ],
99 "language": "python",
100 "metadata": {},
101 "outputs": [],
102 "prompt_number": 29
103 },
104 {
105 "cell_type": "code",
106 "collapsed": false,
107 "input": [
108 "def read_game():\n",
109 " discovered = input('Enter the discovered word: ')\n",
110 " missed = input('Enter the wrong guesses: ')\n",
111 " return [l.lower() for l in discovered + missed if l in string.ascii_letters]"
112 ],
113 "language": "python",
114 "metadata": {},
115 "outputs": [],
116 "prompt_number": 30
117 },
118 {
119 "cell_type": "code",
120 "collapsed": false,
121 "input": [
122 "def ordered_subtract(ordered_list, to_remove):\n",
123 " for r in to_remove:\n",
124 " if r in ordered_list:\n",
125 " ordered_list.remove(r)\n",
126 " return ordered_list"
127 ],
128 "language": "python",
129 "metadata": {},
130 "outputs": [],
131 "prompt_number": 19
132 },
133 {
134 "cell_type": "code",
135 "collapsed": false,
136 "input": [
137 "letters_in_order"
138 ],
139 "language": "python",
140 "metadata": {},
141 "outputs": [
142 {
143 "metadata": {},
144 "output_type": "pyout",
145 "prompt_number": 20,
146 "text": [
147 "['e',\n",
148 " 't',\n",
149 " 'a',\n",
150 " 'o',\n",
151 " 'i',\n",
152 " 'h',\n",
153 " 'n',\n",
154 " 's',\n",
155 " 'r',\n",
156 " 'd',\n",
157 " 'l',\n",
158 " 'u',\n",
159 " 'm',\n",
160 " 'w',\n",
161 " 'c',\n",
162 " 'y',\n",
163 " 'f',\n",
164 " 'g',\n",
165 " 'p',\n",
166 " 'b',\n",
167 " 'v',\n",
168 " 'k',\n",
169 " 'x',\n",
170 " 'j',\n",
171 " 'q',\n",
172 " 'z']"
173 ]
174 }
175 ],
176 "prompt_number": 20
177 },
178 {
179 "cell_type": "code",
180 "collapsed": false,
181 "input": [
182 "ordered_subtract(letters_in_order, 'etaoin')"
183 ],
184 "language": "python",
185 "metadata": {},
186 "outputs": [
187 {
188 "metadata": {},
189 "output_type": "pyout",
190 "prompt_number": 21,
191 "text": [
192 "['h',\n",
193 " 's',\n",
194 " 'r',\n",
195 " 'd',\n",
196 " 'l',\n",
197 " 'u',\n",
198 " 'm',\n",
199 " 'w',\n",
200 " 'c',\n",
201 " 'y',\n",
202 " 'f',\n",
203 " 'g',\n",
204 " 'p',\n",
205 " 'b',\n",
206 " 'v',\n",
207 " 'k',\n",
208 " 'x',\n",
209 " 'j',\n",
210 " 'q',\n",
211 " 'z']"
212 ]
213 }
214 ],
215 "prompt_number": 21
216 },
217 {
218 "cell_type": "code",
219 "collapsed": false,
220 "input": [
221 "letters_in_order"
222 ],
223 "language": "python",
224 "metadata": {},
225 "outputs": [
226 {
227 "metadata": {},
228 "output_type": "pyout",
229 "prompt_number": 22,
230 "text": [
231 "['h',\n",
232 " 's',\n",
233 " 'r',\n",
234 " 'd',\n",
235 " 'l',\n",
236 " 'u',\n",
237 " 'm',\n",
238 " 'w',\n",
239 " 'c',\n",
240 " 'y',\n",
241 " 'f',\n",
242 " 'g',\n",
243 " 'p',\n",
244 " 'b',\n",
245 " 'v',\n",
246 " 'k',\n",
247 " 'x',\n",
248 " 'j',\n",
249 " 'q',\n",
250 " 'z']"
251 ]
252 }
253 ],
254 "prompt_number": 22
255 },
256 {
257 "cell_type": "code",
258 "collapsed": false,
259 "input": [
260 "def ordered_subtract(ordered_list, to_remove):\n",
261 " for r in to_remove:\n",
262 " if r in ordered_list:\n",
263 " ri = ordered_list.index(r)\n",
264 " ordered_list = ordered_list[:ri] + ordered_list[ri+1:]\n",
265 " return ordered_list"
266 ],
267 "language": "python",
268 "metadata": {},
269 "outputs": [],
270 "prompt_number": 26
271 },
272 {
273 "cell_type": "code",
274 "collapsed": false,
275 "input": [
276 "letters_in_order = [p[0] for p in letter_counts.most_common()]\n",
277 "letters_in_order"
278 ],
279 "language": "python",
280 "metadata": {},
281 "outputs": [
282 {
283 "metadata": {},
284 "output_type": "pyout",
285 "prompt_number": 24,
286 "text": [
287 "['e',\n",
288 " 't',\n",
289 " 'a',\n",
290 " 'o',\n",
291 " 'i',\n",
292 " 'h',\n",
293 " 'n',\n",
294 " 's',\n",
295 " 'r',\n",
296 " 'd',\n",
297 " 'l',\n",
298 " 'u',\n",
299 " 'm',\n",
300 " 'w',\n",
301 " 'c',\n",
302 " 'y',\n",
303 " 'f',\n",
304 " 'g',\n",
305 " 'p',\n",
306 " 'b',\n",
307 " 'v',\n",
308 " 'k',\n",
309 " 'x',\n",
310 " 'j',\n",
311 " 'q',\n",
312 " 'z']"
313 ]
314 }
315 ],
316 "prompt_number": 24
317 },
318 {
319 "cell_type": "code",
320 "collapsed": false,
321 "input": [
322 "ordered_subtract(letters_in_order, 'etaoin')"
323 ],
324 "language": "python",
325 "metadata": {},
326 "outputs": [
327 {
328 "metadata": {},
329 "output_type": "pyout",
330 "prompt_number": 27,
331 "text": [
332 "['h',\n",
333 " 's',\n",
334 " 'r',\n",
335 " 'd',\n",
336 " 'l',\n",
337 " 'u',\n",
338 " 'm',\n",
339 " 'w',\n",
340 " 'c',\n",
341 " 'y',\n",
342 " 'f',\n",
343 " 'g',\n",
344 " 'p',\n",
345 " 'b',\n",
346 " 'v',\n",
347 " 'k',\n",
348 " 'x',\n",
349 " 'j',\n",
350 " 'q',\n",
351 " 'z']"
352 ]
353 }
354 ],
355 "prompt_number": 27
356 },
357 {
358 "cell_type": "code",
359 "collapsed": false,
360 "input": [
361 "letters_in_order"
362 ],
363 "language": "python",
364 "metadata": {},
365 "outputs": [
366 {
367 "metadata": {},
368 "output_type": "pyout",
369 "prompt_number": 28,
370 "text": [
371 "['e',\n",
372 " 't',\n",
373 " 'a',\n",
374 " 'o',\n",
375 " 'i',\n",
376 " 'h',\n",
377 " 'n',\n",
378 " 's',\n",
379 " 'r',\n",
380 " 'd',\n",
381 " 'l',\n",
382 " 'u',\n",
383 " 'm',\n",
384 " 'w',\n",
385 " 'c',\n",
386 " 'y',\n",
387 " 'f',\n",
388 " 'g',\n",
389 " 'p',\n",
390 " 'b',\n",
391 " 'v',\n",
392 " 'k',\n",
393 " 'x',\n",
394 " 'j',\n",
395 " 'q',\n",
396 " 'z']"
397 ]
398 }
399 ],
400 "prompt_number": 28
401 },
402 {
403 "cell_type": "code",
404 "collapsed": false,
405 "input": [
406 "make_guess()"
407 ],
408 "language": "python",
409 "metadata": {},
410 "outputs": [
411 {
412 "name": "stdout",
413 "output_type": "stream",
414 "stream": "stdout",
415 "text": [
416 "Enter the discovered word: _a__y\n"
417 ]
418 },
419 {
420 "name": "stdout",
421 "output_type": "stream",
422 "stream": "stdout",
423 "text": [
424 "Enter the wrong guesses: eit\n"
425 ]
426 },
427 {
428 "output_type": "stream",
429 "stream": "stdout",
430 "text": [
431 "My guess is: o\n"
432 ]
433 }
434 ],
435 "prompt_number": 31
436 },
437 {
438 "cell_type": "code",
439 "collapsed": false,
440 "input": [],
441 "language": "python",
442 "metadata": {},
443 "outputs": []
444 }
445 ],
446 "metadata": {}
447 }
448 ]
449 }