Tweaks
[cas-master-teacher-training.git] / Untitled0.ipynb
1 {
2 "metadata": {
3 "name": "",
4 "signature": "sha256:78e6a962b2bb32da5900535436f656d194701924a6f32591d57f2b5973eb315c"
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 "string.ascii_lowercase"
17 ],
18 "language": "python",
19 "metadata": {},
20 "outputs": [
21 {
22 "metadata": {},
23 "output_type": "pyout",
24 "prompt_number": 1,
25 "text": [
26 "'abcdefghijklmnopqrstuvwxyz'"
27 ]
28 }
29 ],
30 "prompt_number": 1
31 },
32 {
33 "cell_type": "code",
34 "collapsed": false,
35 "input": [
36 "string.ascii_lowercase[:-2]"
37 ],
38 "language": "python",
39 "metadata": {},
40 "outputs": [
41 {
42 "metadata": {},
43 "output_type": "pyout",
44 "prompt_number": 9,
45 "text": [
46 "'abcdefghijklmnopqrstuvwx'"
47 ]
48 }
49 ],
50 "prompt_number": 9
51 },
52 {
53 "cell_type": "code",
54 "collapsed": false,
55 "input": [
56 "for i in range(10):\n",
57 " print(i, string.ascii_lowercase[i+2].upper())"
58 ],
59 "language": "python",
60 "metadata": {},
61 "outputs": [
62 {
63 "output_type": "stream",
64 "stream": "stdout",
65 "text": [
66 "0 C\n",
67 "1 D\n",
68 "2 E\n",
69 "3 F\n",
70 "4 G\n",
71 "5 H\n",
72 "6 I\n",
73 "7 J\n",
74 "8 K\n",
75 "9 L\n"
76 ]
77 }
78 ],
79 "prompt_number": 14
80 },
81 {
82 "cell_type": "code",
83 "collapsed": false,
84 "input": [
85 "members = ['Freddie', 'Brian', 'Roger', 'John']\n",
86 "tour_lineup = members\n",
87 "tour_lineup[0] = 'Paul'\n",
88 "print(tour_lineup)\n",
89 "print(members)"
90 ],
91 "language": "python",
92 "metadata": {},
93 "outputs": [
94 {
95 "output_type": "stream",
96 "stream": "stdout",
97 "text": [
98 "['Paul', 'Brian', 'Roger', 'John']\n",
99 "['Paul', 'Brian', 'Roger', 'John']\n"
100 ]
101 }
102 ],
103 "prompt_number": 1
104 },
105 {
106 "cell_type": "code",
107 "collapsed": false,
108 "input": [
109 "members = ['Freddie', 'Brian', 'Roger', 'John']\n",
110 "members = ['Paul'] + members"
111 ],
112 "language": "python",
113 "metadata": {},
114 "outputs": [],
115 "prompt_number": 20
116 },
117 {
118 "cell_type": "code",
119 "collapsed": false,
120 "input": [
121 "members[99]"
122 ],
123 "language": "python",
124 "metadata": {},
125 "outputs": [
126 {
127 "ename": "IndexError",
128 "evalue": "list index out of range",
129 "output_type": "pyerr",
130 "traceback": [
131 "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)",
132 "\u001b[1;32m<ipython-input-22-6b5bb11d700b>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmembers\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m99\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
133 "\u001b[1;31mIndexError\u001b[0m: list index out of range"
134 ]
135 }
136 ],
137 "prompt_number": 22
138 },
139 {
140 "cell_type": "code",
141 "collapsed": false,
142 "input": [
143 "members[1:2]"
144 ],
145 "language": "python",
146 "metadata": {},
147 "outputs": [
148 {
149 "metadata": {},
150 "output_type": "pyout",
151 "prompt_number": 3,
152 "text": [
153 "['Brian']"
154 ]
155 }
156 ],
157 "prompt_number": 3
158 },
159 {
160 "cell_type": "code",
161 "collapsed": false,
162 "input": [
163 "members = ['Freddie', 'Brian', 'Roger', 'John']\n",
164 "tour_lineup = members\n",
165 "tour_lineup == members"
166 ],
167 "language": "python",
168 "metadata": {},
169 "outputs": [
170 {
171 "metadata": {},
172 "output_type": "pyout",
173 "prompt_number": 8,
174 "text": [
175 "True"
176 ]
177 }
178 ],
179 "prompt_number": 8
180 },
181 {
182 "cell_type": "code",
183 "collapsed": false,
184 "input": [
185 "tour_lineup = members[:]\n",
186 "tour_lineup == members"
187 ],
188 "language": "python",
189 "metadata": {},
190 "outputs": [
191 {
192 "metadata": {},
193 "output_type": "pyout",
194 "prompt_number": 6,
195 "text": [
196 "True"
197 ]
198 }
199 ],
200 "prompt_number": 6
201 },
202 {
203 "cell_type": "code",
204 "collapsed": false,
205 "input": [
206 "tour_lineup is members"
207 ],
208 "language": "python",
209 "metadata": {},
210 "outputs": [
211 {
212 "metadata": {},
213 "output_type": "pyout",
214 "prompt_number": 9,
215 "text": [
216 "True"
217 ]
218 }
219 ],
220 "prompt_number": 9
221 },
222 {
223 "cell_type": "code",
224 "collapsed": false,
225 "input": [
226 "[(a, b, int((a**2 + b**2)**0.5)) \n",
227 " for a in range(1, 20) \n",
228 " for b in range(a, 20) \n",
229 " if int((a**2 + b**2)**0.5) == (a**2 + b**2)**0.5]"
230 ],
231 "language": "python",
232 "metadata": {},
233 "outputs": [
234 {
235 "metadata": {},
236 "output_type": "pyout",
237 "prompt_number": 18,
238 "text": [
239 "[(3, 4, 5), (5, 12, 13), (6, 8, 10), (8, 15, 17), (9, 12, 15), (12, 16, 20)]"
240 ]
241 }
242 ],
243 "prompt_number": 18
244 },
245 {
246 "cell_type": "code",
247 "collapsed": false,
248 "input": [
249 "l2 = []\n",
250 "for i in (2,4,8,22):\n",
251 " l2 += [i]\n",
252 "l2"
253 ],
254 "language": "python",
255 "metadata": {},
256 "outputs": [
257 {
258 "metadata": {},
259 "output_type": "pyout",
260 "prompt_number": 25,
261 "text": [
262 "[2, 4, 8, 22]"
263 ]
264 }
265 ],
266 "prompt_number": 25
267 },
268 {
269 "cell_type": "code",
270 "collapsed": false,
271 "input": [
272 "GRID_STRING = \"\"\"08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08\n",
273 "49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00\n",
274 "81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65\n",
275 "52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91\n",
276 "22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80\n",
277 "24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50\n",
278 "32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70\n",
279 "67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21\n",
280 "24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72\n",
281 "21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95\n",
282 "78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92\n",
283 "16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57\n",
284 "86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58\n",
285 "19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40\n",
286 "04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66\n",
287 "88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69\n",
288 "04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36\n",
289 "20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16\n",
290 "20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54\n",
291 "01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48\"\"\"\n",
292 "ROWS = COLUMNS = 20"
293 ],
294 "language": "python",
295 "metadata": {},
296 "outputs": [],
297 "prompt_number": 26
298 },
299 {
300 "cell_type": "code",
301 "collapsed": false,
302 "input": [
303 "gt= {}\n",
304 "for x in range(COLUMNS):\n",
305 " for y in range(ROWS):\n",
306 " gt[(x,y)] = grid_nums[x + y * COLUMNS]\n",
307 "gt"
308 ],
309 "language": "python",
310 "metadata": {},
311 "outputs": [
312 {
313 "metadata": {},
314 "output_type": "pyout",
315 "prompt_number": 41,
316 "text": [
317 "{(7, 3): 42,\n",
318 " (6, 9): 76,\n",
319 " (17, 11): 29,\n",
320 " (19, 19): 48,\n",
321 " (16, 6): 18,\n",
322 " (7, 12): 7,\n",
323 " (19, 4): 80,\n",
324 " (18, 4): 13,\n",
325 " (18, 19): 67,\n",
326 " (8, 5): 44,\n",
327 " (10, 8): 78,\n",
328 " (9, 0): 75,\n",
329 " (11, 5): 53,\n",
330 " (10, 7): 94,\n",
331 " (14, 18): 81,\n",
332 " (12, 6): 59,\n",
333 " (10, 18): 49,\n",
334 " (0, 17): 20,\n",
335 " (15, 11): 24,\n",
336 " (14, 1): 69,\n",
337 " (13, 7): 8,\n",
338 " (12, 17): 82,\n",
339 " (0, 4): 22,\n",
340 " (15, 4): 28,\n",
341 " (1, 1): 49,\n",
342 " (4, 10): 22,\n",
343 " (3, 2): 73,\n",
344 " (2, 6): 81,\n",
345 " (5, 11): 35,\n",
346 " (4, 5): 99,\n",
347 " (6, 0): 0,\n",
348 " (4, 16): 38,\n",
349 " (7, 5): 2,\n",
350 " (19, 13): 40,\n",
351 " (7, 0): 40,\n",
352 " (16, 19): 89,\n",
353 " (17, 7): 49,\n",
354 " (18, 10): 56,\n",
355 " (17, 18): 57,\n",
356 " (16, 8): 34,\n",
357 " (8, 12): 5,\n",
358 " (9, 9): 45,\n",
359 " (10, 14): 57,\n",
360 " (8, 18): 74,\n",
361 " (11, 15): 67,\n",
362 " (9, 19): 92,\n",
363 " (15, 16): 32,\n",
364 " (14, 8): 14,\n",
365 " (13, 0): 78,\n",
366 " (12, 8): 96,\n",
367 " (11, 16): 18,\n",
368 " (15, 13): 77,\n",
369 " (13, 13): 52,\n",
370 " (2, 18): 35,\n",
371 " (0, 14): 4,\n",
372 " (3, 11): 42,\n",
373 " (2, 1): 99,\n",
374 " (1, 15): 36,\n",
375 " (4, 12): 35,\n",
376 " (2, 12): 0,\n",
377 " (5, 1): 81,\n",
378 " (3, 17): 41,\n",
379 " (16, 7): 66,\n",
380 " (6, 14): 99,\n",
381 " (19, 18): 54,\n",
382 " (17, 6): 38,\n",
383 " (7, 15): 72,\n",
384 " (19, 7): 21,\n",
385 " (18, 5): 12,\n",
386 " (7, 1): 57,\n",
387 " (18, 16): 76,\n",
388 " (8, 6): 26,\n",
389 " (10, 9): 35,\n",
390 " (9, 7): 63,\n",
391 " (11, 4): 54,\n",
392 " (10, 4): 36,\n",
393 " (14, 19): 52,\n",
394 " (12, 7): 63,\n",
395 " (11, 9): 14,\n",
396 " (10, 19): 33,\n",
397 " (0, 18): 20,\n",
398 " (15, 10): 14,\n",
399 " (14, 6): 70,\n",
400 " (13, 6): 54,\n",
401 " (12, 18): 48,\n",
402 " (1, 19): 70,\n",
403 " (0, 5): 24,\n",
404 " (15, 7): 91,\n",
405 " (13, 19): 43,\n",
406 " (1, 0): 2,\n",
407 " (0, 8): 24,\n",
408 " (4, 11): 96,\n",
409 " (3, 5): 60,\n",
410 " (2, 7): 20,\n",
411 " (5, 10): 75,\n",
412 " (4, 6): 64,\n",
413 " (6, 1): 18,\n",
414 " (5, 7): 62,\n",
415 " (4, 17): 72,\n",
416 " (16, 1): 4,\n",
417 " (19, 12): 58,\n",
418 " (17, 12): 54,\n",
419 " (7, 17): 88,\n",
420 " (19, 1): 0,\n",
421 " (18, 11): 85,\n",
422 " (7, 6): 10,\n",
423 " (8, 13): 28,\n",
424 " (9, 8): 17,\n",
425 " (8, 0): 0,\n",
426 " (10, 15): 33,\n",
427 " (8, 19): 16,\n",
428 " (11, 14): 32,\n",
429 " (9, 18): 31,\n",
430 " (15, 19): 1,\n",
431 " (14, 9): 33,\n",
432 " (12, 9): 0,\n",
433 " (11, 19): 48,\n",
434 " (15, 12): 58,\n",
435 " (13, 12): 60,\n",
436 " (2, 19): 54,\n",
437 " (0, 15): 88,\n",
438 " (3, 10): 28,\n",
439 " (1, 14): 52,\n",
440 " (4, 13): 5,\n",
441 " (2, 13): 81,\n",
442 " (5, 0): 15,\n",
443 " (3, 16): 73,\n",
444 " (6, 15): 20,\n",
445 " (16, 9): 34,\n",
446 " (16, 10): 9,\n",
447 " (7, 14): 16,\n",
448 " (6, 18): 90,\n",
449 " (19, 6): 70,\n",
450 " (18, 2): 36,\n",
451 " (17, 10): 53,\n",
452 " (18, 17): 36,\n",
453 " (16, 2): 49,\n",
454 " (8, 7): 95,\n",
455 " (9, 6): 38,\n",
456 " (11, 7): 39,\n",
457 " (10, 5): 33,\n",
458 " (14, 16): 29,\n",
459 " (12, 0): 7,\n",
460 " (11, 8): 78,\n",
461 " (10, 16): 72,\n",
462 " (0, 19): 1,\n",
463 " (14, 7): 40,\n",
464 " (13, 5): 36,\n",
465 " (12, 19): 61,\n",
466 " (1, 18): 73,\n",
467 " (0, 6): 32,\n",
468 " (15, 6): 66,\n",
469 " (13, 18): 86,\n",
470 " (1, 7): 26,\n",
471 " (0, 9): 21,\n",
472 " (3, 4): 71,\n",
473 " (2, 4): 16,\n",
474 " (5, 9): 0,\n",
475 " (4, 7): 2,\n",
476 " (6, 6): 67,\n",
477 " (5, 6): 23,\n",
478 " (4, 18): 78,\n",
479 " (7, 7): 20,\n",
480 " (5, 19): 51,\n",
481 " (19, 15): 69,\n",
482 " (17, 3): 2,\n",
483 " (7, 16): 11,\n",
484 " (19, 0): 8,\n",
485 " (18, 8): 63,\n",
486 " (17, 16): 62,\n",
487 " (7, 4): 89,\n",
488 " (9, 15): 46,\n",
489 " (8, 1): 60,\n",
490 " (10, 12): 44,\n",
491 " (11, 1): 40,\n",
492 " (9, 17): 62,\n",
493 " (15, 18): 16,\n",
494 " (14, 14): 26,\n",
495 " (12, 10): 4,\n",
496 " (11, 18): 71,\n",
497 " (15, 15): 32,\n",
498 " (13, 11): 17,\n",
499 " (2, 16): 16,\n",
500 " (0, 0): 8,\n",
501 " (8, 14): 7,\n",
502 " (1, 13): 80,\n",
503 " (4, 14): 97,\n",
504 " (2, 10): 53,\n",
505 " (5, 15): 62,\n",
506 " (3, 19): 71,\n",
507 " (6, 12): 89,\n",
508 " (17, 4): 33,\n",
509 " (16, 12): 51,\n",
510 " (6, 19): 54,\n",
511 " (19, 9): 95,\n",
512 " (18, 3): 36,\n",
513 " (17, 9): 31,\n",
514 " (18, 14): 98,\n",
515 " (17, 17): 4,\n",
516 " (16, 0): 50,\n",
517 " (16, 15): 63,\n",
518 " (9, 5): 75,\n",
519 " (11, 6): 67,\n",
520 " (10, 2): 40,\n",
521 " (14, 17): 59,\n",
522 " (12, 1): 98,\n",
523 " (11, 11): 24,\n",
524 " (10, 17): 99,\n",
525 " (14, 4): 40,\n",
526 " (13, 4): 40,\n",
527 " (12, 12): 44,\n",
528 " (1, 17): 69,\n",
529 " (0, 7): 67,\n",
530 " (15, 1): 48,\n",
531 " (13, 17): 67,\n",
532 " (1, 6): 98,\n",
533 " (0, 10): 78,\n",
534 " (17, 13): 89,\n",
535 " (3, 7): 68,\n",
536 " (2, 5): 32,\n",
537 " (1, 11): 39,\n",
538 " (5, 8): 73,\n",
539 " (4, 0): 38,\n",
540 " (6, 7): 12,\n",
541 " (5, 5): 3,\n",
542 " (4, 19): 83,\n",
543 " (16, 3): 37,\n",
544 " (6, 10): 31,\n",
545 " (5, 18): 31,\n",
546 " (19, 14): 66,\n",
547 " (17, 2): 13,\n",
548 " (7, 19): 69,\n",
549 " (19, 3): 91,\n",
550 " (18, 9): 33,\n",
551 " (8, 15): 3,\n",
552 " (9, 14): 97,\n",
553 " (8, 2): 93,\n",
554 " (10, 13): 92,\n",
555 " (9, 3): 24,\n",
556 " (11, 0): 5,\n",
557 " (9, 16): 94,\n",
558 " (14, 15): 12,\n",
559 " (12, 11): 0,\n",
560 " (15, 14): 79,\n",
561 " (14, 2): 30,\n",
562 " (13, 10): 62,\n",
563 " (2, 17): 36,\n",
564 " (0, 1): 49,\n",
565 " (3, 12): 48,\n",
566 " (1, 12): 56,\n",
567 " (4, 15): 57,\n",
568 " (3, 1): 40,\n",
569 " (2, 11): 5,\n",
570 " (5, 14): 35,\n",
571 " (3, 18): 29,\n",
572 " (6, 13): 47,\n",
573 " (7, 8): 26,\n",
574 " (6, 16): 39,\n",
575 " (19, 8): 72,\n",
576 " (18, 0): 91,\n",
577 " (17, 8): 89,\n",
578 " (16, 16): 40,\n",
579 " (18, 15): 53,\n",
580 " (8, 9): 20,\n",
581 " (9, 4): 92,\n",
582 " (7, 11): 47,\n",
583 " (10, 3): 68,\n",
584 " (12, 2): 53,\n",
585 " (11, 10): 80,\n",
586 " (14, 5): 84,\n",
587 " (13, 3): 32,\n",
588 " (12, 13): 86,\n",
589 " (1, 16): 42,\n",
590 " (3, 13): 68,\n",
591 " (15, 0): 12,\n",
592 " (13, 16): 46,\n",
593 " (1, 5): 47,\n",
594 " (0, 11): 16,\n",
595 " (3, 6): 28,\n",
596 " (2, 2): 31,\n",
597 " (1, 10): 17,\n",
598 " (4, 1): 17,\n",
599 " (6, 4): 63,\n",
600 " (5, 4): 67,\n",
601 " (16, 4): 66,\n",
602 " (6, 11): 31,\n",
603 " (5, 17): 30,\n",
604 " (19, 17): 16,\n",
605 " (17, 1): 56,\n",
606 " (7, 18): 1,\n",
607 " (19, 2): 65,\n",
608 " (18, 6): 64,\n",
609 " (9, 13): 73,\n",
610 " (8, 3): 69,\n",
611 " (10, 10): 3,\n",
612 " (9, 2): 71,\n",
613 " (16, 13): 4,\n",
614 " (11, 3): 56,\n",
615 " (14, 12): 21,\n",
616 " (12, 4): 22,\n",
617 " (15, 9): 97,\n",
618 " (14, 3): 56,\n",
619 " (13, 9): 61,\n",
620 " (0, 2): 81,\n",
621 " (3, 15): 87,\n",
622 " (1, 3): 70,\n",
623 " (4, 8): 66,\n",
624 " (3, 0): 97,\n",
625 " (2, 8): 58,\n",
626 " (5, 13): 94,\n",
627 " (6, 2): 14,\n",
628 " (16, 14): 33,\n",
629 " (6, 17): 23,\n",
630 " (19, 11): 57,\n",
631 " (18, 1): 62,\n",
632 " (17, 15): 93,\n",
633 " (16, 17): 74,\n",
634 " (18, 12): 17,\n",
635 " (8, 10): 15,\n",
636 " (9, 11): 58,\n",
637 " (10, 0): 4,\n",
638 " (8, 16): 24,\n",
639 " (12, 3): 1,\n",
640 " (11, 13): 13,\n",
641 " (14, 10): 16,\n",
642 " (13, 2): 88,\n",
643 " (12, 14): 16,\n",
644 " (15, 3): 71,\n",
645 " (13, 15): 55,\n",
646 " (1, 4): 31,\n",
647 " (0, 12): 86,\n",
648 " (3, 9): 9,\n",
649 " (2, 3): 95,\n",
650 " (1, 9): 36,\n",
651 " (4, 2): 55,\n",
652 " (2, 14): 8,\n",
653 " (6, 5): 45,\n",
654 " (5, 3): 60,\n",
655 " (16, 5): 35,\n",
656 " (6, 8): 99,\n",
657 " (5, 16): 25,\n",
658 " (19, 16): 36,\n",
659 " (17, 0): 77,\n",
660 " (7, 13): 69,\n",
661 " (19, 5): 50,\n",
662 " (18, 7): 94,\n",
663 " (7, 9): 44,\n",
664 " (18, 18): 5,\n",
665 " (9, 12): 44,\n",
666 " (8, 4): 41,\n",
667 " (10, 11): 88,\n",
668 " (9, 1): 87,\n",
669 " (17, 5): 17,\n",
670 " (11, 2): 67,\n",
671 " (10, 6): 40,\n",
672 " (16, 11): 36,\n",
673 " (14, 13): 17,\n",
674 " (12, 5): 78,\n",
675 " (0, 16): 4,\n",
676 " (15, 8): 88,\n",
677 " (14, 0): 52,\n",
678 " (13, 8): 83,\n",
679 " (12, 16): 8,\n",
680 " (0, 3): 52,\n",
681 " (15, 5): 20,\n",
682 " (3, 14): 83,\n",
683 " (1, 2): 49,\n",
684 " (4, 9): 75,\n",
685 " (3, 3): 23,\n",
686 " (2, 9): 23,\n",
687 " (5, 12): 71,\n",
688 " (4, 4): 51,\n",
689 " (6, 3): 11,\n",
690 " (8, 8): 97,\n",
691 " (7, 2): 29,\n",
692 " (7, 10): 67,\n",
693 " (19, 10): 92,\n",
694 " (17, 14): 27,\n",
695 " (16, 18): 23,\n",
696 " (18, 13): 55,\n",
697 " (17, 19): 19,\n",
698 " (8, 11): 55,\n",
699 " (9, 10): 94,\n",
700 " (10, 1): 17,\n",
701 " (8, 17): 34,\n",
702 " (11, 12): 37,\n",
703 " (15, 17): 85,\n",
704 " (14, 11): 54,\n",
705 " (13, 1): 43,\n",
706 " (12, 15): 46,\n",
707 " (11, 17): 69,\n",
708 " (15, 2): 3,\n",
709 " (13, 14): 26,\n",
710 " (0, 13): 19,\n",
711 " (3, 8): 5,\n",
712 " (2, 0): 22,\n",
713 " (1, 8): 55,\n",
714 " (4, 3): 4,\n",
715 " (2, 15): 68,\n",
716 " (5, 2): 79}"
717 ]
718 }
719 ],
720 "prompt_number": 41
721 },
722 {
723 "cell_type": "code",
724 "collapsed": false,
725 "input": [
726 "gt_again = {(x,y): grid_nums[x + y * COLUMNS] \n",
727 " for x in range(ROWS) \n",
728 " for y in range(COLUMNS)}\n",
729 "gt_again[(3,2)]"
730 ],
731 "language": "python",
732 "metadata": {},
733 "outputs": [
734 {
735 "metadata": {},
736 "output_type": "pyout",
737 "prompt_number": 43,
738 "text": [
739 "73"
740 ]
741 }
742 ],
743 "prompt_number": 43
744 },
745 {
746 "cell_type": "code",
747 "collapsed": false,
748 "input": [
749 "grid_nums = [int(n) for n in GRID_STRING.split()]\n",
750 "grid_nums"
751 ],
752 "language": "python",
753 "metadata": {},
754 "outputs": [
755 {
756 "metadata": {},
757 "output_type": "pyout",
758 "prompt_number": 28,
759 "text": [
760 "[8,\n",
761 " 2,\n",
762 " 22,\n",
763 " 97,\n",
764 " 38,\n",
765 " 15,\n",
766 " 0,\n",
767 " 40,\n",
768 " 0,\n",
769 " 75,\n",
770 " 4,\n",
771 " 5,\n",
772 " 7,\n",
773 " 78,\n",
774 " 52,\n",
775 " 12,\n",
776 " 50,\n",
777 " 77,\n",
778 " 91,\n",
779 " 8,\n",
780 " 49,\n",
781 " 49,\n",
782 " 99,\n",
783 " 40,\n",
784 " 17,\n",
785 " 81,\n",
786 " 18,\n",
787 " 57,\n",
788 " 60,\n",
789 " 87,\n",
790 " 17,\n",
791 " 40,\n",
792 " 98,\n",
793 " 43,\n",
794 " 69,\n",
795 " 48,\n",
796 " 4,\n",
797 " 56,\n",
798 " 62,\n",
799 " 0,\n",
800 " 81,\n",
801 " 49,\n",
802 " 31,\n",
803 " 73,\n",
804 " 55,\n",
805 " 79,\n",
806 " 14,\n",
807 " 29,\n",
808 " 93,\n",
809 " 71,\n",
810 " 40,\n",
811 " 67,\n",
812 " 53,\n",
813 " 88,\n",
814 " 30,\n",
815 " 3,\n",
816 " 49,\n",
817 " 13,\n",
818 " 36,\n",
819 " 65,\n",
820 " 52,\n",
821 " 70,\n",
822 " 95,\n",
823 " 23,\n",
824 " 4,\n",
825 " 60,\n",
826 " 11,\n",
827 " 42,\n",
828 " 69,\n",
829 " 24,\n",
830 " 68,\n",
831 " 56,\n",
832 " 1,\n",
833 " 32,\n",
834 " 56,\n",
835 " 71,\n",
836 " 37,\n",
837 " 2,\n",
838 " 36,\n",
839 " 91,\n",
840 " 22,\n",
841 " 31,\n",
842 " 16,\n",
843 " 71,\n",
844 " 51,\n",
845 " 67,\n",
846 " 63,\n",
847 " 89,\n",
848 " 41,\n",
849 " 92,\n",
850 " 36,\n",
851 " 54,\n",
852 " 22,\n",
853 " 40,\n",
854 " 40,\n",
855 " 28,\n",
856 " 66,\n",
857 " 33,\n",
858 " 13,\n",
859 " 80,\n",
860 " 24,\n",
861 " 47,\n",
862 " 32,\n",
863 " 60,\n",
864 " 99,\n",
865 " 3,\n",
866 " 45,\n",
867 " 2,\n",
868 " 44,\n",
869 " 75,\n",
870 " 33,\n",
871 " 53,\n",
872 " 78,\n",
873 " 36,\n",
874 " 84,\n",
875 " 20,\n",
876 " 35,\n",
877 " 17,\n",
878 " 12,\n",
879 " 50,\n",
880 " 32,\n",
881 " 98,\n",
882 " 81,\n",
883 " 28,\n",
884 " 64,\n",
885 " 23,\n",
886 " 67,\n",
887 " 10,\n",
888 " 26,\n",
889 " 38,\n",
890 " 40,\n",
891 " 67,\n",
892 " 59,\n",
893 " 54,\n",
894 " 70,\n",
895 " 66,\n",
896 " 18,\n",
897 " 38,\n",
898 " 64,\n",
899 " 70,\n",
900 " 67,\n",
901 " 26,\n",
902 " 20,\n",
903 " 68,\n",
904 " 2,\n",
905 " 62,\n",
906 " 12,\n",
907 " 20,\n",
908 " 95,\n",
909 " 63,\n",
910 " 94,\n",
911 " 39,\n",
912 " 63,\n",
913 " 8,\n",
914 " 40,\n",
915 " 91,\n",
916 " 66,\n",
917 " 49,\n",
918 " 94,\n",
919 " 21,\n",
920 " 24,\n",
921 " 55,\n",
922 " 58,\n",
923 " 5,\n",
924 " 66,\n",
925 " 73,\n",
926 " 99,\n",
927 " 26,\n",
928 " 97,\n",
929 " 17,\n",
930 " 78,\n",
931 " 78,\n",
932 " 96,\n",
933 " 83,\n",
934 " 14,\n",
935 " 88,\n",
936 " 34,\n",
937 " 89,\n",
938 " 63,\n",
939 " 72,\n",
940 " 21,\n",
941 " 36,\n",
942 " 23,\n",
943 " 9,\n",
944 " 75,\n",
945 " 0,\n",
946 " 76,\n",
947 " 44,\n",
948 " 20,\n",
949 " 45,\n",
950 " 35,\n",
951 " 14,\n",
952 " 0,\n",
953 " 61,\n",
954 " 33,\n",
955 " 97,\n",
956 " 34,\n",
957 " 31,\n",
958 " 33,\n",
959 " 95,\n",
960 " 78,\n",
961 " 17,\n",
962 " 53,\n",
963 " 28,\n",
964 " 22,\n",
965 " 75,\n",
966 " 31,\n",
967 " 67,\n",
968 " 15,\n",
969 " 94,\n",
970 " 3,\n",
971 " 80,\n",
972 " 4,\n",
973 " 62,\n",
974 " 16,\n",
975 " 14,\n",
976 " 9,\n",
977 " 53,\n",
978 " 56,\n",
979 " 92,\n",
980 " 16,\n",
981 " 39,\n",
982 " 5,\n",
983 " 42,\n",
984 " 96,\n",
985 " 35,\n",
986 " 31,\n",
987 " 47,\n",
988 " 55,\n",
989 " 58,\n",
990 " 88,\n",
991 " 24,\n",
992 " 0,\n",
993 " 17,\n",
994 " 54,\n",
995 " 24,\n",
996 " 36,\n",
997 " 29,\n",
998 " 85,\n",
999 " 57,\n",
1000 " 86,\n",
1001 " 56,\n",
1002 " 0,\n",
1003 " 48,\n",
1004 " 35,\n",
1005 " 71,\n",
1006 " 89,\n",
1007 " 7,\n",
1008 " 5,\n",
1009 " 44,\n",
1010 " 44,\n",
1011 " 37,\n",
1012 " 44,\n",
1013 " 60,\n",
1014 " 21,\n",
1015 " 58,\n",
1016 " 51,\n",
1017 " 54,\n",
1018 " 17,\n",
1019 " 58,\n",
1020 " 19,\n",
1021 " 80,\n",
1022 " 81,\n",
1023 " 68,\n",
1024 " 5,\n",
1025 " 94,\n",
1026 " 47,\n",
1027 " 69,\n",
1028 " 28,\n",
1029 " 73,\n",
1030 " 92,\n",
1031 " 13,\n",
1032 " 86,\n",
1033 " 52,\n",
1034 " 17,\n",
1035 " 77,\n",
1036 " 4,\n",
1037 " 89,\n",
1038 " 55,\n",
1039 " 40,\n",
1040 " 4,\n",
1041 " 52,\n",
1042 " 8,\n",
1043 " 83,\n",
1044 " 97,\n",
1045 " 35,\n",
1046 " 99,\n",
1047 " 16,\n",
1048 " 7,\n",
1049 " 97,\n",
1050 " 57,\n",
1051 " 32,\n",
1052 " 16,\n",
1053 " 26,\n",
1054 " 26,\n",
1055 " 79,\n",
1056 " 33,\n",
1057 " 27,\n",
1058 " 98,\n",
1059 " 66,\n",
1060 " 88,\n",
1061 " 36,\n",
1062 " 68,\n",
1063 " 87,\n",
1064 " 57,\n",
1065 " 62,\n",
1066 " 20,\n",
1067 " 72,\n",
1068 " 3,\n",
1069 " 46,\n",
1070 " 33,\n",
1071 " 67,\n",
1072 " 46,\n",
1073 " 55,\n",
1074 " 12,\n",
1075 " 32,\n",
1076 " 63,\n",
1077 " 93,\n",
1078 " 53,\n",
1079 " 69,\n",
1080 " 4,\n",
1081 " 42,\n",
1082 " 16,\n",
1083 " 73,\n",
1084 " 38,\n",
1085 " 25,\n",
1086 " 39,\n",
1087 " 11,\n",
1088 " 24,\n",
1089 " 94,\n",
1090 " 72,\n",
1091 " 18,\n",
1092 " 8,\n",
1093 " 46,\n",
1094 " 29,\n",
1095 " 32,\n",
1096 " 40,\n",
1097 " 62,\n",
1098 " 76,\n",
1099 " 36,\n",
1100 " 20,\n",
1101 " 69,\n",
1102 " 36,\n",
1103 " 41,\n",
1104 " 72,\n",
1105 " 30,\n",
1106 " 23,\n",
1107 " 88,\n",
1108 " 34,\n",
1109 " 62,\n",
1110 " 99,\n",
1111 " 69,\n",
1112 " 82,\n",
1113 " 67,\n",
1114 " 59,\n",
1115 " 85,\n",
1116 " 74,\n",
1117 " 4,\n",
1118 " 36,\n",
1119 " 16,\n",
1120 " 20,\n",
1121 " 73,\n",
1122 " 35,\n",
1123 " 29,\n",
1124 " 78,\n",
1125 " 31,\n",
1126 " 90,\n",
1127 " 1,\n",
1128 " 74,\n",
1129 " 31,\n",
1130 " 49,\n",
1131 " 71,\n",
1132 " 48,\n",
1133 " 86,\n",
1134 " 81,\n",
1135 " 16,\n",
1136 " 23,\n",
1137 " 57,\n",
1138 " 5,\n",
1139 " 54,\n",
1140 " 1,\n",
1141 " 70,\n",
1142 " 54,\n",
1143 " 71,\n",
1144 " 83,\n",
1145 " 51,\n",
1146 " 54,\n",
1147 " 69,\n",
1148 " 16,\n",
1149 " 92,\n",
1150 " 33,\n",
1151 " 48,\n",
1152 " 61,\n",
1153 " 43,\n",
1154 " 52,\n",
1155 " 1,\n",
1156 " 89,\n",
1157 " 19,\n",
1158 " 67,\n",
1159 " 48]"
1160 ]
1161 }
1162 ],
1163 "prompt_number": 28
1164 },
1165 {
1166 "cell_type": "code",
1167 "collapsed": false,
1168 "input": [
1169 "g1[2][4]"
1170 ],
1171 "language": "python",
1172 "metadata": {},
1173 "outputs": [
1174 {
1175 "metadata": {},
1176 "output_type": "pyout",
1177 "prompt_number": 32,
1178 "text": [
1179 "55"
1180 ]
1181 }
1182 ],
1183 "prompt_number": 32
1184 },
1185 {
1186 "cell_type": "code",
1187 "collapsed": false,
1188 "input": [
1189 "g1 = []\n",
1190 "for rowstart in range(0, ROWS * COLUMNS, COLUMNS):\n",
1191 " g1.append(grid_nums[rowstart:rowstart+COLUMNS])\n",
1192 "g1"
1193 ],
1194 "language": "python",
1195 "metadata": {},
1196 "outputs": [
1197 {
1198 "metadata": {},
1199 "output_type": "pyout",
1200 "prompt_number": 29,
1201 "text": [
1202 "[[8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8],\n",
1203 " [49,\n",
1204 " 49,\n",
1205 " 99,\n",
1206 " 40,\n",
1207 " 17,\n",
1208 " 81,\n",
1209 " 18,\n",
1210 " 57,\n",
1211 " 60,\n",
1212 " 87,\n",
1213 " 17,\n",
1214 " 40,\n",
1215 " 98,\n",
1216 " 43,\n",
1217 " 69,\n",
1218 " 48,\n",
1219 " 4,\n",
1220 " 56,\n",
1221 " 62,\n",
1222 " 0],\n",
1223 " [81,\n",
1224 " 49,\n",
1225 " 31,\n",
1226 " 73,\n",
1227 " 55,\n",
1228 " 79,\n",
1229 " 14,\n",
1230 " 29,\n",
1231 " 93,\n",
1232 " 71,\n",
1233 " 40,\n",
1234 " 67,\n",
1235 " 53,\n",
1236 " 88,\n",
1237 " 30,\n",
1238 " 3,\n",
1239 " 49,\n",
1240 " 13,\n",
1241 " 36,\n",
1242 " 65],\n",
1243 " [52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 1, 32, 56, 71, 37, 2, 36, 91],\n",
1244 " [22,\n",
1245 " 31,\n",
1246 " 16,\n",
1247 " 71,\n",
1248 " 51,\n",
1249 " 67,\n",
1250 " 63,\n",
1251 " 89,\n",
1252 " 41,\n",
1253 " 92,\n",
1254 " 36,\n",
1255 " 54,\n",
1256 " 22,\n",
1257 " 40,\n",
1258 " 40,\n",
1259 " 28,\n",
1260 " 66,\n",
1261 " 33,\n",
1262 " 13,\n",
1263 " 80],\n",
1264 " [24,\n",
1265 " 47,\n",
1266 " 32,\n",
1267 " 60,\n",
1268 " 99,\n",
1269 " 3,\n",
1270 " 45,\n",
1271 " 2,\n",
1272 " 44,\n",
1273 " 75,\n",
1274 " 33,\n",
1275 " 53,\n",
1276 " 78,\n",
1277 " 36,\n",
1278 " 84,\n",
1279 " 20,\n",
1280 " 35,\n",
1281 " 17,\n",
1282 " 12,\n",
1283 " 50],\n",
1284 " [32,\n",
1285 " 98,\n",
1286 " 81,\n",
1287 " 28,\n",
1288 " 64,\n",
1289 " 23,\n",
1290 " 67,\n",
1291 " 10,\n",
1292 " 26,\n",
1293 " 38,\n",
1294 " 40,\n",
1295 " 67,\n",
1296 " 59,\n",
1297 " 54,\n",
1298 " 70,\n",
1299 " 66,\n",
1300 " 18,\n",
1301 " 38,\n",
1302 " 64,\n",
1303 " 70],\n",
1304 " [67,\n",
1305 " 26,\n",
1306 " 20,\n",
1307 " 68,\n",
1308 " 2,\n",
1309 " 62,\n",
1310 " 12,\n",
1311 " 20,\n",
1312 " 95,\n",
1313 " 63,\n",
1314 " 94,\n",
1315 " 39,\n",
1316 " 63,\n",
1317 " 8,\n",
1318 " 40,\n",
1319 " 91,\n",
1320 " 66,\n",
1321 " 49,\n",
1322 " 94,\n",
1323 " 21],\n",
1324 " [24,\n",
1325 " 55,\n",
1326 " 58,\n",
1327 " 5,\n",
1328 " 66,\n",
1329 " 73,\n",
1330 " 99,\n",
1331 " 26,\n",
1332 " 97,\n",
1333 " 17,\n",
1334 " 78,\n",
1335 " 78,\n",
1336 " 96,\n",
1337 " 83,\n",
1338 " 14,\n",
1339 " 88,\n",
1340 " 34,\n",
1341 " 89,\n",
1342 " 63,\n",
1343 " 72],\n",
1344 " [21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 0, 61, 33, 97, 34, 31, 33, 95],\n",
1345 " [78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 4, 62, 16, 14, 9, 53, 56, 92],\n",
1346 " [16,\n",
1347 " 39,\n",
1348 " 5,\n",
1349 " 42,\n",
1350 " 96,\n",
1351 " 35,\n",
1352 " 31,\n",
1353 " 47,\n",
1354 " 55,\n",
1355 " 58,\n",
1356 " 88,\n",
1357 " 24,\n",
1358 " 0,\n",
1359 " 17,\n",
1360 " 54,\n",
1361 " 24,\n",
1362 " 36,\n",
1363 " 29,\n",
1364 " 85,\n",
1365 " 57],\n",
1366 " [86, 56, 0, 48, 35, 71, 89, 7, 5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58],\n",
1367 " [19,\n",
1368 " 80,\n",
1369 " 81,\n",
1370 " 68,\n",
1371 " 5,\n",
1372 " 94,\n",
1373 " 47,\n",
1374 " 69,\n",
1375 " 28,\n",
1376 " 73,\n",
1377 " 92,\n",
1378 " 13,\n",
1379 " 86,\n",
1380 " 52,\n",
1381 " 17,\n",
1382 " 77,\n",
1383 " 4,\n",
1384 " 89,\n",
1385 " 55,\n",
1386 " 40],\n",
1387 " [4, 52, 8, 83, 97, 35, 99, 16, 7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66],\n",
1388 " [88,\n",
1389 " 36,\n",
1390 " 68,\n",
1391 " 87,\n",
1392 " 57,\n",
1393 " 62,\n",
1394 " 20,\n",
1395 " 72,\n",
1396 " 3,\n",
1397 " 46,\n",
1398 " 33,\n",
1399 " 67,\n",
1400 " 46,\n",
1401 " 55,\n",
1402 " 12,\n",
1403 " 32,\n",
1404 " 63,\n",
1405 " 93,\n",
1406 " 53,\n",
1407 " 69],\n",
1408 " [4,\n",
1409 " 42,\n",
1410 " 16,\n",
1411 " 73,\n",
1412 " 38,\n",
1413 " 25,\n",
1414 " 39,\n",
1415 " 11,\n",
1416 " 24,\n",
1417 " 94,\n",
1418 " 72,\n",
1419 " 18,\n",
1420 " 8,\n",
1421 " 46,\n",
1422 " 29,\n",
1423 " 32,\n",
1424 " 40,\n",
1425 " 62,\n",
1426 " 76,\n",
1427 " 36],\n",
1428 " [20,\n",
1429 " 69,\n",
1430 " 36,\n",
1431 " 41,\n",
1432 " 72,\n",
1433 " 30,\n",
1434 " 23,\n",
1435 " 88,\n",
1436 " 34,\n",
1437 " 62,\n",
1438 " 99,\n",
1439 " 69,\n",
1440 " 82,\n",
1441 " 67,\n",
1442 " 59,\n",
1443 " 85,\n",
1444 " 74,\n",
1445 " 4,\n",
1446 " 36,\n",
1447 " 16],\n",
1448 " [20,\n",
1449 " 73,\n",
1450 " 35,\n",
1451 " 29,\n",
1452 " 78,\n",
1453 " 31,\n",
1454 " 90,\n",
1455 " 1,\n",
1456 " 74,\n",
1457 " 31,\n",
1458 " 49,\n",
1459 " 71,\n",
1460 " 48,\n",
1461 " 86,\n",
1462 " 81,\n",
1463 " 16,\n",
1464 " 23,\n",
1465 " 57,\n",
1466 " 5,\n",
1467 " 54],\n",
1468 " [1,\n",
1469 " 70,\n",
1470 " 54,\n",
1471 " 71,\n",
1472 " 83,\n",
1473 " 51,\n",
1474 " 54,\n",
1475 " 69,\n",
1476 " 16,\n",
1477 " 92,\n",
1478 " 33,\n",
1479 " 48,\n",
1480 " 61,\n",
1481 " 43,\n",
1482 " 52,\n",
1483 " 1,\n",
1484 " 89,\n",
1485 " 19,\n",
1486 " 67,\n",
1487 " 48]]"
1488 ]
1489 }
1490 ],
1491 "prompt_number": 29
1492 },
1493 {
1494 "cell_type": "code",
1495 "collapsed": false,
1496 "input": [
1497 "g3 = [grid_nums[rowstart:rowstart+COLUMNS] \n",
1498 " for rowstart in range(0, ROWS * COLUMNS, COLUMNS)]\n",
1499 "g3"
1500 ],
1501 "language": "python",
1502 "metadata": {},
1503 "outputs": [
1504 {
1505 "metadata": {},
1506 "output_type": "pyout",
1507 "prompt_number": 45,
1508 "text": [
1509 "[[8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8],\n",
1510 " [49,\n",
1511 " 49,\n",
1512 " 99,\n",
1513 " 40,\n",
1514 " 17,\n",
1515 " 81,\n",
1516 " 18,\n",
1517 " 57,\n",
1518 " 60,\n",
1519 " 87,\n",
1520 " 17,\n",
1521 " 40,\n",
1522 " 98,\n",
1523 " 43,\n",
1524 " 69,\n",
1525 " 48,\n",
1526 " 4,\n",
1527 " 56,\n",
1528 " 62,\n",
1529 " 0],\n",
1530 " [81,\n",
1531 " 49,\n",
1532 " 31,\n",
1533 " 73,\n",
1534 " 55,\n",
1535 " 79,\n",
1536 " 14,\n",
1537 " 29,\n",
1538 " 93,\n",
1539 " 71,\n",
1540 " 40,\n",
1541 " 67,\n",
1542 " 53,\n",
1543 " 88,\n",
1544 " 30,\n",
1545 " 3,\n",
1546 " 49,\n",
1547 " 13,\n",
1548 " 36,\n",
1549 " 65],\n",
1550 " [52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 1, 32, 56, 71, 37, 2, 36, 91],\n",
1551 " [22,\n",
1552 " 31,\n",
1553 " 16,\n",
1554 " 71,\n",
1555 " 51,\n",
1556 " 67,\n",
1557 " 63,\n",
1558 " 89,\n",
1559 " 41,\n",
1560 " 92,\n",
1561 " 36,\n",
1562 " 54,\n",
1563 " 22,\n",
1564 " 40,\n",
1565 " 40,\n",
1566 " 28,\n",
1567 " 66,\n",
1568 " 33,\n",
1569 " 13,\n",
1570 " 80],\n",
1571 " [24,\n",
1572 " 47,\n",
1573 " 32,\n",
1574 " 60,\n",
1575 " 99,\n",
1576 " 3,\n",
1577 " 45,\n",
1578 " 2,\n",
1579 " 44,\n",
1580 " 75,\n",
1581 " 33,\n",
1582 " 53,\n",
1583 " 78,\n",
1584 " 36,\n",
1585 " 84,\n",
1586 " 20,\n",
1587 " 35,\n",
1588 " 17,\n",
1589 " 12,\n",
1590 " 50],\n",
1591 " [32,\n",
1592 " 98,\n",
1593 " 81,\n",
1594 " 28,\n",
1595 " 64,\n",
1596 " 23,\n",
1597 " 67,\n",
1598 " 10,\n",
1599 " 26,\n",
1600 " 38,\n",
1601 " 40,\n",
1602 " 67,\n",
1603 " 59,\n",
1604 " 54,\n",
1605 " 70,\n",
1606 " 66,\n",
1607 " 18,\n",
1608 " 38,\n",
1609 " 64,\n",
1610 " 70],\n",
1611 " [67,\n",
1612 " 26,\n",
1613 " 20,\n",
1614 " 68,\n",
1615 " 2,\n",
1616 " 62,\n",
1617 " 12,\n",
1618 " 20,\n",
1619 " 95,\n",
1620 " 63,\n",
1621 " 94,\n",
1622 " 39,\n",
1623 " 63,\n",
1624 " 8,\n",
1625 " 40,\n",
1626 " 91,\n",
1627 " 66,\n",
1628 " 49,\n",
1629 " 94,\n",
1630 " 21],\n",
1631 " [24,\n",
1632 " 55,\n",
1633 " 58,\n",
1634 " 5,\n",
1635 " 66,\n",
1636 " 73,\n",
1637 " 99,\n",
1638 " 26,\n",
1639 " 97,\n",
1640 " 17,\n",
1641 " 78,\n",
1642 " 78,\n",
1643 " 96,\n",
1644 " 83,\n",
1645 " 14,\n",
1646 " 88,\n",
1647 " 34,\n",
1648 " 89,\n",
1649 " 63,\n",
1650 " 72],\n",
1651 " [21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 0, 61, 33, 97, 34, 31, 33, 95],\n",
1652 " [78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 4, 62, 16, 14, 9, 53, 56, 92],\n",
1653 " [16,\n",
1654 " 39,\n",
1655 " 5,\n",
1656 " 42,\n",
1657 " 96,\n",
1658 " 35,\n",
1659 " 31,\n",
1660 " 47,\n",
1661 " 55,\n",
1662 " 58,\n",
1663 " 88,\n",
1664 " 24,\n",
1665 " 0,\n",
1666 " 17,\n",
1667 " 54,\n",
1668 " 24,\n",
1669 " 36,\n",
1670 " 29,\n",
1671 " 85,\n",
1672 " 57],\n",
1673 " [86, 56, 0, 48, 35, 71, 89, 7, 5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58],\n",
1674 " [19,\n",
1675 " 80,\n",
1676 " 81,\n",
1677 " 68,\n",
1678 " 5,\n",
1679 " 94,\n",
1680 " 47,\n",
1681 " 69,\n",
1682 " 28,\n",
1683 " 73,\n",
1684 " 92,\n",
1685 " 13,\n",
1686 " 86,\n",
1687 " 52,\n",
1688 " 17,\n",
1689 " 77,\n",
1690 " 4,\n",
1691 " 89,\n",
1692 " 55,\n",
1693 " 40],\n",
1694 " [4, 52, 8, 83, 97, 35, 99, 16, 7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66],\n",
1695 " [88,\n",
1696 " 36,\n",
1697 " 68,\n",
1698 " 87,\n",
1699 " 57,\n",
1700 " 62,\n",
1701 " 20,\n",
1702 " 72,\n",
1703 " 3,\n",
1704 " 46,\n",
1705 " 33,\n",
1706 " 67,\n",
1707 " 46,\n",
1708 " 55,\n",
1709 " 12,\n",
1710 " 32,\n",
1711 " 63,\n",
1712 " 93,\n",
1713 " 53,\n",
1714 " 69],\n",
1715 " [4,\n",
1716 " 42,\n",
1717 " 16,\n",
1718 " 73,\n",
1719 " 38,\n",
1720 " 25,\n",
1721 " 39,\n",
1722 " 11,\n",
1723 " 24,\n",
1724 " 94,\n",
1725 " 72,\n",
1726 " 18,\n",
1727 " 8,\n",
1728 " 46,\n",
1729 " 29,\n",
1730 " 32,\n",
1731 " 40,\n",
1732 " 62,\n",
1733 " 76,\n",
1734 " 36],\n",
1735 " [20,\n",
1736 " 69,\n",
1737 " 36,\n",
1738 " 41,\n",
1739 " 72,\n",
1740 " 30,\n",
1741 " 23,\n",
1742 " 88,\n",
1743 " 34,\n",
1744 " 62,\n",
1745 " 99,\n",
1746 " 69,\n",
1747 " 82,\n",
1748 " 67,\n",
1749 " 59,\n",
1750 " 85,\n",
1751 " 74,\n",
1752 " 4,\n",
1753 " 36,\n",
1754 " 16],\n",
1755 " [20,\n",
1756 " 73,\n",
1757 " 35,\n",
1758 " 29,\n",
1759 " 78,\n",
1760 " 31,\n",
1761 " 90,\n",
1762 " 1,\n",
1763 " 74,\n",
1764 " 31,\n",
1765 " 49,\n",
1766 " 71,\n",
1767 " 48,\n",
1768 " 86,\n",
1769 " 81,\n",
1770 " 16,\n",
1771 " 23,\n",
1772 " 57,\n",
1773 " 5,\n",
1774 " 54],\n",
1775 " [1,\n",
1776 " 70,\n",
1777 " 54,\n",
1778 " 71,\n",
1779 " 83,\n",
1780 " 51,\n",
1781 " 54,\n",
1782 " 69,\n",
1783 " 16,\n",
1784 " 92,\n",
1785 " 33,\n",
1786 " 48,\n",
1787 " 61,\n",
1788 " 43,\n",
1789 " 52,\n",
1790 " 1,\n",
1791 " 89,\n",
1792 " 19,\n",
1793 " 67,\n",
1794 " 48]]"
1795 ]
1796 }
1797 ],
1798 "prompt_number": 45
1799 },
1800 {
1801 "cell_type": "code",
1802 "collapsed": false,
1803 "input": [
1804 "g1=[]\n",
1805 "for rowstart in range(0, ROWS * COLUMNS, COLUMNS):\n",
1806 " g1.append(grid_nums[rowstart:rowstart+COLUMNS])\n",
1807 "g1"
1808 ],
1809 "language": "python",
1810 "metadata": {},
1811 "outputs": [
1812 {
1813 "output_type": "stream",
1814 "stream": "stdout",
1815 "text": [
1816 "[8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8]\n",
1817 "[49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48, 4, 56, 62, 0]\n",
1818 "[81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30, 3, 49, 13, 36, 65]\n",
1819 "[52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 1, 32, 56, 71, 37, 2, 36, 91]\n",
1820 "[22, 31, 16, 71, 51, 67, 63, 89, 41, 92, 36, 54, 22, 40, 40, 28, 66, 33, 13, 80]\n",
1821 "[24, 47, 32, 60, 99, 3, 45, 2, 44, 75, 33, 53, 78, 36, 84, 20, 35, 17, 12, 50]\n",
1822 "[32, 98, 81, 28, 64, 23, 67, 10, 26, 38, 40, 67, 59, 54, 70, 66, 18, 38, 64, 70]\n",
1823 "[67, 26, 20, 68, 2, 62, 12, 20, 95, 63, 94, 39, 63, 8, 40, 91, 66, 49, 94, 21]\n",
1824 "[24, 55, 58, 5, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, 72]\n",
1825 "[21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 0, 61, 33, 97, 34, 31, 33, 95]\n",
1826 "[78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 4, 62, 16, 14, 9, 53, 56, 92]\n",
1827 "[16, 39, 5, 42, 96, 35, 31, 47, 55, 58, 88, 24, 0, 17, 54, 24, 36, 29, 85, 57]\n",
1828 "[86, 56, 0, 48, 35, 71, 89, 7, 5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58]\n",
1829 "[19, 80, 81, 68, 5, 94, 47, 69, 28, 73, 92, 13, 86, 52, 17, 77, 4, 89, 55, 40]\n",
1830 "[4, 52, 8, 83, 97, 35, 99, 16, 7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66]\n",
1831 "[88, 36, 68, 87, 57, 62, 20, 72, 3, 46, 33, 67, 46, 55, 12, 32, 63, 93, 53, 69]\n",
1832 "[4, 42, 16, 73, 38, 25, 39, 11, 24, 94, 72, 18, 8, 46, 29, 32, 40, 62, 76, 36]\n",
1833 "[20, 69, 36, 41, 72, 30, 23, 88, 34, 62, 99, 69, 82, 67, 59, 85, 74, 4, 36, 16]\n",
1834 "[20, 73, 35, 29, 78, 31, 90, 1, 74, 31, 49, 71, 48, 86, 81, 16, 23, 57, 5, 54]\n",
1835 "[1, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52, 1, 89, 19, 67, 48]\n"
1836 ]
1837 },
1838 {
1839 "metadata": {},
1840 "output_type": "pyout",
1841 "prompt_number": 39,
1842 "text": [
1843 "[[8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8],\n",
1844 " [49,\n",
1845 " 49,\n",
1846 " 99,\n",
1847 " 40,\n",
1848 " 17,\n",
1849 " 81,\n",
1850 " 18,\n",
1851 " 57,\n",
1852 " 60,\n",
1853 " 87,\n",
1854 " 17,\n",
1855 " 40,\n",
1856 " 98,\n",
1857 " 43,\n",
1858 " 69,\n",
1859 " 48,\n",
1860 " 4,\n",
1861 " 56,\n",
1862 " 62,\n",
1863 " 0],\n",
1864 " [81,\n",
1865 " 49,\n",
1866 " 31,\n",
1867 " 73,\n",
1868 " 55,\n",
1869 " 79,\n",
1870 " 14,\n",
1871 " 29,\n",
1872 " 93,\n",
1873 " 71,\n",
1874 " 40,\n",
1875 " 67,\n",
1876 " 53,\n",
1877 " 88,\n",
1878 " 30,\n",
1879 " 3,\n",
1880 " 49,\n",
1881 " 13,\n",
1882 " 36,\n",
1883 " 65],\n",
1884 " [52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 1, 32, 56, 71, 37, 2, 36, 91],\n",
1885 " [22,\n",
1886 " 31,\n",
1887 " 16,\n",
1888 " 71,\n",
1889 " 51,\n",
1890 " 67,\n",
1891 " 63,\n",
1892 " 89,\n",
1893 " 41,\n",
1894 " 92,\n",
1895 " 36,\n",
1896 " 54,\n",
1897 " 22,\n",
1898 " 40,\n",
1899 " 40,\n",
1900 " 28,\n",
1901 " 66,\n",
1902 " 33,\n",
1903 " 13,\n",
1904 " 80],\n",
1905 " [24,\n",
1906 " 47,\n",
1907 " 32,\n",
1908 " 60,\n",
1909 " 99,\n",
1910 " 3,\n",
1911 " 45,\n",
1912 " 2,\n",
1913 " 44,\n",
1914 " 75,\n",
1915 " 33,\n",
1916 " 53,\n",
1917 " 78,\n",
1918 " 36,\n",
1919 " 84,\n",
1920 " 20,\n",
1921 " 35,\n",
1922 " 17,\n",
1923 " 12,\n",
1924 " 50],\n",
1925 " [32,\n",
1926 " 98,\n",
1927 " 81,\n",
1928 " 28,\n",
1929 " 64,\n",
1930 " 23,\n",
1931 " 67,\n",
1932 " 10,\n",
1933 " 26,\n",
1934 " 38,\n",
1935 " 40,\n",
1936 " 67,\n",
1937 " 59,\n",
1938 " 54,\n",
1939 " 70,\n",
1940 " 66,\n",
1941 " 18,\n",
1942 " 38,\n",
1943 " 64,\n",
1944 " 70],\n",
1945 " [67,\n",
1946 " 26,\n",
1947 " 20,\n",
1948 " 68,\n",
1949 " 2,\n",
1950 " 62,\n",
1951 " 12,\n",
1952 " 20,\n",
1953 " 95,\n",
1954 " 63,\n",
1955 " 94,\n",
1956 " 39,\n",
1957 " 63,\n",
1958 " 8,\n",
1959 " 40,\n",
1960 " 91,\n",
1961 " 66,\n",
1962 " 49,\n",
1963 " 94,\n",
1964 " 21],\n",
1965 " [24,\n",
1966 " 55,\n",
1967 " 58,\n",
1968 " 5,\n",
1969 " 66,\n",
1970 " 73,\n",
1971 " 99,\n",
1972 " 26,\n",
1973 " 97,\n",
1974 " 17,\n",
1975 " 78,\n",
1976 " 78,\n",
1977 " 96,\n",
1978 " 83,\n",
1979 " 14,\n",
1980 " 88,\n",
1981 " 34,\n",
1982 " 89,\n",
1983 " 63,\n",
1984 " 72],\n",
1985 " [21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 0, 61, 33, 97, 34, 31, 33, 95],\n",
1986 " [78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 4, 62, 16, 14, 9, 53, 56, 92],\n",
1987 " [16,\n",
1988 " 39,\n",
1989 " 5,\n",
1990 " 42,\n",
1991 " 96,\n",
1992 " 35,\n",
1993 " 31,\n",
1994 " 47,\n",
1995 " 55,\n",
1996 " 58,\n",
1997 " 88,\n",
1998 " 24,\n",
1999 " 0,\n",
2000 " 17,\n",
2001 " 54,\n",
2002 " 24,\n",
2003 " 36,\n",
2004 " 29,\n",
2005 " 85,\n",
2006 " 57],\n",
2007 " [86, 56, 0, 48, 35, 71, 89, 7, 5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58],\n",
2008 " [19,\n",
2009 " 80,\n",
2010 " 81,\n",
2011 " 68,\n",
2012 " 5,\n",
2013 " 94,\n",
2014 " 47,\n",
2015 " 69,\n",
2016 " 28,\n",
2017 " 73,\n",
2018 " 92,\n",
2019 " 13,\n",
2020 " 86,\n",
2021 " 52,\n",
2022 " 17,\n",
2023 " 77,\n",
2024 " 4,\n",
2025 " 89,\n",
2026 " 55,\n",
2027 " 40],\n",
2028 " [4, 52, 8, 83, 97, 35, 99, 16, 7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66],\n",
2029 " [88,\n",
2030 " 36,\n",
2031 " 68,\n",
2032 " 87,\n",
2033 " 57,\n",
2034 " 62,\n",
2035 " 20,\n",
2036 " 72,\n",
2037 " 3,\n",
2038 " 46,\n",
2039 " 33,\n",
2040 " 67,\n",
2041 " 46,\n",
2042 " 55,\n",
2043 " 12,\n",
2044 " 32,\n",
2045 " 63,\n",
2046 " 93,\n",
2047 " 53,\n",
2048 " 69],\n",
2049 " [4,\n",
2050 " 42,\n",
2051 " 16,\n",
2052 " 73,\n",
2053 " 38,\n",
2054 " 25,\n",
2055 " 39,\n",
2056 " 11,\n",
2057 " 24,\n",
2058 " 94,\n",
2059 " 72,\n",
2060 " 18,\n",
2061 " 8,\n",
2062 " 46,\n",
2063 " 29,\n",
2064 " 32,\n",
2065 " 40,\n",
2066 " 62,\n",
2067 " 76,\n",
2068 " 36],\n",
2069 " [20,\n",
2070 " 69,\n",
2071 " 36,\n",
2072 " 41,\n",
2073 " 72,\n",
2074 " 30,\n",
2075 " 23,\n",
2076 " 88,\n",
2077 " 34,\n",
2078 " 62,\n",
2079 " 99,\n",
2080 " 69,\n",
2081 " 82,\n",
2082 " 67,\n",
2083 " 59,\n",
2084 " 85,\n",
2085 " 74,\n",
2086 " 4,\n",
2087 " 36,\n",
2088 " 16],\n",
2089 " [20,\n",
2090 " 73,\n",
2091 " 35,\n",
2092 " 29,\n",
2093 " 78,\n",
2094 " 31,\n",
2095 " 90,\n",
2096 " 1,\n",
2097 " 74,\n",
2098 " 31,\n",
2099 " 49,\n",
2100 " 71,\n",
2101 " 48,\n",
2102 " 86,\n",
2103 " 81,\n",
2104 " 16,\n",
2105 " 23,\n",
2106 " 57,\n",
2107 " 5,\n",
2108 " 54],\n",
2109 " [1,\n",
2110 " 70,\n",
2111 " 54,\n",
2112 " 71,\n",
2113 " 83,\n",
2114 " 51,\n",
2115 " 54,\n",
2116 " 69,\n",
2117 " 16,\n",
2118 " 92,\n",
2119 " 33,\n",
2120 " 48,\n",
2121 " 61,\n",
2122 " 43,\n",
2123 " 52,\n",
2124 " 1,\n",
2125 " 89,\n",
2126 " 19,\n",
2127 " 67,\n",
2128 " 48]]"
2129 ]
2130 }
2131 ],
2132 "prompt_number": 39
2133 },
2134 {
2135 "cell_type": "code",
2136 "collapsed": false,
2137 "input": [
2138 "g2 = {}\n",
2139 "for x in range(COLUMNS):\n",
2140 " for y in range(ROWS):\n",
2141 " g2[(x, y)] = grid_nums[x + y * COLUMNS]\n",
2142 "g2"
2143 ],
2144 "language": "python",
2145 "metadata": {},
2146 "outputs": [
2147 {
2148 "metadata": {},
2149 "output_type": "pyout",
2150 "prompt_number": 30,
2151 "text": [
2152 "{(7, 3): 42,\n",
2153 " (6, 9): 76,\n",
2154 " (17, 11): 29,\n",
2155 " (19, 19): 48,\n",
2156 " (16, 6): 18,\n",
2157 " (7, 12): 7,\n",
2158 " (19, 4): 80,\n",
2159 " (18, 4): 13,\n",
2160 " (18, 19): 67,\n",
2161 " (8, 5): 44,\n",
2162 " (10, 8): 78,\n",
2163 " (9, 0): 75,\n",
2164 " (11, 5): 53,\n",
2165 " (10, 7): 94,\n",
2166 " (14, 18): 81,\n",
2167 " (12, 6): 59,\n",
2168 " (10, 18): 49,\n",
2169 " (0, 17): 20,\n",
2170 " (15, 11): 24,\n",
2171 " (14, 1): 69,\n",
2172 " (13, 7): 8,\n",
2173 " (12, 17): 82,\n",
2174 " (0, 4): 22,\n",
2175 " (15, 4): 28,\n",
2176 " (1, 1): 49,\n",
2177 " (4, 10): 22,\n",
2178 " (3, 2): 73,\n",
2179 " (2, 6): 81,\n",
2180 " (5, 11): 35,\n",
2181 " (4, 5): 99,\n",
2182 " (6, 0): 0,\n",
2183 " (4, 16): 38,\n",
2184 " (7, 5): 2,\n",
2185 " (19, 13): 40,\n",
2186 " (7, 0): 40,\n",
2187 " (16, 19): 89,\n",
2188 " (17, 7): 49,\n",
2189 " (18, 10): 56,\n",
2190 " (17, 18): 57,\n",
2191 " (16, 8): 34,\n",
2192 " (8, 12): 5,\n",
2193 " (9, 9): 45,\n",
2194 " (10, 14): 57,\n",
2195 " (8, 18): 74,\n",
2196 " (11, 15): 67,\n",
2197 " (9, 19): 92,\n",
2198 " (15, 16): 32,\n",
2199 " (14, 8): 14,\n",
2200 " (13, 0): 78,\n",
2201 " (12, 8): 96,\n",
2202 " (11, 16): 18,\n",
2203 " (15, 13): 77,\n",
2204 " (13, 13): 52,\n",
2205 " (2, 18): 35,\n",
2206 " (0, 14): 4,\n",
2207 " (3, 11): 42,\n",
2208 " (2, 1): 99,\n",
2209 " (1, 15): 36,\n",
2210 " (4, 12): 35,\n",
2211 " (2, 12): 0,\n",
2212 " (5, 1): 81,\n",
2213 " (3, 17): 41,\n",
2214 " (16, 7): 66,\n",
2215 " (6, 14): 99,\n",
2216 " (19, 18): 54,\n",
2217 " (17, 6): 38,\n",
2218 " (7, 15): 72,\n",
2219 " (19, 7): 21,\n",
2220 " (18, 5): 12,\n",
2221 " (7, 1): 57,\n",
2222 " (18, 16): 76,\n",
2223 " (8, 6): 26,\n",
2224 " (10, 9): 35,\n",
2225 " (9, 7): 63,\n",
2226 " (11, 4): 54,\n",
2227 " (10, 4): 36,\n",
2228 " (14, 19): 52,\n",
2229 " (12, 7): 63,\n",
2230 " (11, 9): 14,\n",
2231 " (10, 19): 33,\n",
2232 " (0, 18): 20,\n",
2233 " (15, 10): 14,\n",
2234 " (14, 6): 70,\n",
2235 " (13, 6): 54,\n",
2236 " (12, 18): 48,\n",
2237 " (1, 19): 70,\n",
2238 " (0, 5): 24,\n",
2239 " (15, 7): 91,\n",
2240 " (13, 19): 43,\n",
2241 " (1, 0): 2,\n",
2242 " (0, 8): 24,\n",
2243 " (4, 11): 96,\n",
2244 " (3, 5): 60,\n",
2245 " (2, 7): 20,\n",
2246 " (5, 10): 75,\n",
2247 " (4, 6): 64,\n",
2248 " (6, 1): 18,\n",
2249 " (5, 7): 62,\n",
2250 " (4, 17): 72,\n",
2251 " (16, 1): 4,\n",
2252 " (19, 12): 58,\n",
2253 " (17, 12): 54,\n",
2254 " (7, 17): 88,\n",
2255 " (19, 1): 0,\n",
2256 " (18, 11): 85,\n",
2257 " (7, 6): 10,\n",
2258 " (8, 13): 28,\n",
2259 " (9, 8): 17,\n",
2260 " (8, 0): 0,\n",
2261 " (10, 15): 33,\n",
2262 " (8, 19): 16,\n",
2263 " (11, 14): 32,\n",
2264 " (9, 18): 31,\n",
2265 " (15, 19): 1,\n",
2266 " (14, 9): 33,\n",
2267 " (12, 9): 0,\n",
2268 " (11, 19): 48,\n",
2269 " (15, 12): 58,\n",
2270 " (13, 12): 60,\n",
2271 " (2, 19): 54,\n",
2272 " (0, 15): 88,\n",
2273 " (3, 10): 28,\n",
2274 " (1, 14): 52,\n",
2275 " (4, 13): 5,\n",
2276 " (2, 13): 81,\n",
2277 " (5, 0): 15,\n",
2278 " (3, 16): 73,\n",
2279 " (6, 15): 20,\n",
2280 " (16, 9): 34,\n",
2281 " (16, 10): 9,\n",
2282 " (7, 14): 16,\n",
2283 " (6, 18): 90,\n",
2284 " (19, 6): 70,\n",
2285 " (18, 2): 36,\n",
2286 " (17, 10): 53,\n",
2287 " (18, 17): 36,\n",
2288 " (16, 2): 49,\n",
2289 " (8, 7): 95,\n",
2290 " (9, 6): 38,\n",
2291 " (11, 7): 39,\n",
2292 " (10, 5): 33,\n",
2293 " (14, 16): 29,\n",
2294 " (12, 0): 7,\n",
2295 " (11, 8): 78,\n",
2296 " (10, 16): 72,\n",
2297 " (0, 19): 1,\n",
2298 " (14, 7): 40,\n",
2299 " (13, 5): 36,\n",
2300 " (12, 19): 61,\n",
2301 " (1, 18): 73,\n",
2302 " (0, 6): 32,\n",
2303 " (15, 6): 66,\n",
2304 " (13, 18): 86,\n",
2305 " (1, 7): 26,\n",
2306 " (0, 9): 21,\n",
2307 " (3, 4): 71,\n",
2308 " (2, 4): 16,\n",
2309 " (5, 9): 0,\n",
2310 " (4, 7): 2,\n",
2311 " (6, 6): 67,\n",
2312 " (5, 6): 23,\n",
2313 " (4, 18): 78,\n",
2314 " (7, 7): 20,\n",
2315 " (5, 19): 51,\n",
2316 " (19, 15): 69,\n",
2317 " (17, 3): 2,\n",
2318 " (7, 16): 11,\n",
2319 " (19, 0): 8,\n",
2320 " (18, 8): 63,\n",
2321 " (17, 16): 62,\n",
2322 " (7, 4): 89,\n",
2323 " (9, 15): 46,\n",
2324 " (8, 1): 60,\n",
2325 " (10, 12): 44,\n",
2326 " (11, 1): 40,\n",
2327 " (9, 17): 62,\n",
2328 " (15, 18): 16,\n",
2329 " (14, 14): 26,\n",
2330 " (12, 10): 4,\n",
2331 " (11, 18): 71,\n",
2332 " (15, 15): 32,\n",
2333 " (13, 11): 17,\n",
2334 " (2, 16): 16,\n",
2335 " (0, 0): 8,\n",
2336 " (8, 14): 7,\n",
2337 " (1, 13): 80,\n",
2338 " (4, 14): 97,\n",
2339 " (2, 10): 53,\n",
2340 " (5, 15): 62,\n",
2341 " (3, 19): 71,\n",
2342 " (6, 12): 89,\n",
2343 " (17, 4): 33,\n",
2344 " (16, 12): 51,\n",
2345 " (6, 19): 54,\n",
2346 " (19, 9): 95,\n",
2347 " (18, 3): 36,\n",
2348 " (17, 9): 31,\n",
2349 " (18, 14): 98,\n",
2350 " (17, 17): 4,\n",
2351 " (16, 0): 50,\n",
2352 " (16, 15): 63,\n",
2353 " (9, 5): 75,\n",
2354 " (11, 6): 67,\n",
2355 " (10, 2): 40,\n",
2356 " (14, 17): 59,\n",
2357 " (12, 1): 98,\n",
2358 " (11, 11): 24,\n",
2359 " (10, 17): 99,\n",
2360 " (14, 4): 40,\n",
2361 " (13, 4): 40,\n",
2362 " (12, 12): 44,\n",
2363 " (1, 17): 69,\n",
2364 " (0, 7): 67,\n",
2365 " (15, 1): 48,\n",
2366 " (13, 17): 67,\n",
2367 " (1, 6): 98,\n",
2368 " (0, 10): 78,\n",
2369 " (17, 13): 89,\n",
2370 " (3, 7): 68,\n",
2371 " (2, 5): 32,\n",
2372 " (1, 11): 39,\n",
2373 " (5, 8): 73,\n",
2374 " (4, 0): 38,\n",
2375 " (6, 7): 12,\n",
2376 " (5, 5): 3,\n",
2377 " (4, 19): 83,\n",
2378 " (16, 3): 37,\n",
2379 " (6, 10): 31,\n",
2380 " (5, 18): 31,\n",
2381 " (19, 14): 66,\n",
2382 " (17, 2): 13,\n",
2383 " (7, 19): 69,\n",
2384 " (19, 3): 91,\n",
2385 " (18, 9): 33,\n",
2386 " (8, 15): 3,\n",
2387 " (9, 14): 97,\n",
2388 " (8, 2): 93,\n",
2389 " (10, 13): 92,\n",
2390 " (9, 3): 24,\n",
2391 " (11, 0): 5,\n",
2392 " (9, 16): 94,\n",
2393 " (14, 15): 12,\n",
2394 " (12, 11): 0,\n",
2395 " (15, 14): 79,\n",
2396 " (14, 2): 30,\n",
2397 " (13, 10): 62,\n",
2398 " (2, 17): 36,\n",
2399 " (0, 1): 49,\n",
2400 " (3, 12): 48,\n",
2401 " (1, 12): 56,\n",
2402 " (4, 15): 57,\n",
2403 " (3, 1): 40,\n",
2404 " (2, 11): 5,\n",
2405 " (5, 14): 35,\n",
2406 " (3, 18): 29,\n",
2407 " (6, 13): 47,\n",
2408 " (7, 8): 26,\n",
2409 " (6, 16): 39,\n",
2410 " (19, 8): 72,\n",
2411 " (18, 0): 91,\n",
2412 " (17, 8): 89,\n",
2413 " (16, 16): 40,\n",
2414 " (18, 15): 53,\n",
2415 " (8, 9): 20,\n",
2416 " (9, 4): 92,\n",
2417 " (7, 11): 47,\n",
2418 " (10, 3): 68,\n",
2419 " (12, 2): 53,\n",
2420 " (11, 10): 80,\n",
2421 " (14, 5): 84,\n",
2422 " (13, 3): 32,\n",
2423 " (12, 13): 86,\n",
2424 " (1, 16): 42,\n",
2425 " (3, 13): 68,\n",
2426 " (15, 0): 12,\n",
2427 " (13, 16): 46,\n",
2428 " (1, 5): 47,\n",
2429 " (0, 11): 16,\n",
2430 " (3, 6): 28,\n",
2431 " (2, 2): 31,\n",
2432 " (1, 10): 17,\n",
2433 " (4, 1): 17,\n",
2434 " (6, 4): 63,\n",
2435 " (5, 4): 67,\n",
2436 " (16, 4): 66,\n",
2437 " (6, 11): 31,\n",
2438 " (5, 17): 30,\n",
2439 " (19, 17): 16,\n",
2440 " (17, 1): 56,\n",
2441 " (7, 18): 1,\n",
2442 " (19, 2): 65,\n",
2443 " (18, 6): 64,\n",
2444 " (9, 13): 73,\n",
2445 " (8, 3): 69,\n",
2446 " (10, 10): 3,\n",
2447 " (9, 2): 71,\n",
2448 " (16, 13): 4,\n",
2449 " (11, 3): 56,\n",
2450 " (14, 12): 21,\n",
2451 " (12, 4): 22,\n",
2452 " (15, 9): 97,\n",
2453 " (14, 3): 56,\n",
2454 " (13, 9): 61,\n",
2455 " (0, 2): 81,\n",
2456 " (3, 15): 87,\n",
2457 " (1, 3): 70,\n",
2458 " (4, 8): 66,\n",
2459 " (3, 0): 97,\n",
2460 " (2, 8): 58,\n",
2461 " (5, 13): 94,\n",
2462 " (6, 2): 14,\n",
2463 " (16, 14): 33,\n",
2464 " (6, 17): 23,\n",
2465 " (19, 11): 57,\n",
2466 " (18, 1): 62,\n",
2467 " (17, 15): 93,\n",
2468 " (16, 17): 74,\n",
2469 " (18, 12): 17,\n",
2470 " (8, 10): 15,\n",
2471 " (9, 11): 58,\n",
2472 " (10, 0): 4,\n",
2473 " (8, 16): 24,\n",
2474 " (12, 3): 1,\n",
2475 " (11, 13): 13,\n",
2476 " (14, 10): 16,\n",
2477 " (13, 2): 88,\n",
2478 " (12, 14): 16,\n",
2479 " (15, 3): 71,\n",
2480 " (13, 15): 55,\n",
2481 " (1, 4): 31,\n",
2482 " (0, 12): 86,\n",
2483 " (3, 9): 9,\n",
2484 " (2, 3): 95,\n",
2485 " (1, 9): 36,\n",
2486 " (4, 2): 55,\n",
2487 " (2, 14): 8,\n",
2488 " (6, 5): 45,\n",
2489 " (5, 3): 60,\n",
2490 " (16, 5): 35,\n",
2491 " (6, 8): 99,\n",
2492 " (5, 16): 25,\n",
2493 " (19, 16): 36,\n",
2494 " (17, 0): 77,\n",
2495 " (7, 13): 69,\n",
2496 " (19, 5): 50,\n",
2497 " (18, 7): 94,\n",
2498 " (7, 9): 44,\n",
2499 " (18, 18): 5,\n",
2500 " (9, 12): 44,\n",
2501 " (8, 4): 41,\n",
2502 " (10, 11): 88,\n",
2503 " (9, 1): 87,\n",
2504 " (17, 5): 17,\n",
2505 " (11, 2): 67,\n",
2506 " (10, 6): 40,\n",
2507 " (16, 11): 36,\n",
2508 " (14, 13): 17,\n",
2509 " (12, 5): 78,\n",
2510 " (0, 16): 4,\n",
2511 " (15, 8): 88,\n",
2512 " (14, 0): 52,\n",
2513 " (13, 8): 83,\n",
2514 " (12, 16): 8,\n",
2515 " (0, 3): 52,\n",
2516 " (15, 5): 20,\n",
2517 " (3, 14): 83,\n",
2518 " (1, 2): 49,\n",
2519 " (4, 9): 75,\n",
2520 " (3, 3): 23,\n",
2521 " (2, 9): 23,\n",
2522 " (5, 12): 71,\n",
2523 " (4, 4): 51,\n",
2524 " (6, 3): 11,\n",
2525 " (8, 8): 97,\n",
2526 " (7, 2): 29,\n",
2527 " (7, 10): 67,\n",
2528 " (19, 10): 92,\n",
2529 " (17, 14): 27,\n",
2530 " (16, 18): 23,\n",
2531 " (18, 13): 55,\n",
2532 " (17, 19): 19,\n",
2533 " (8, 11): 55,\n",
2534 " (9, 10): 94,\n",
2535 " (10, 1): 17,\n",
2536 " (8, 17): 34,\n",
2537 " (11, 12): 37,\n",
2538 " (15, 17): 85,\n",
2539 " (14, 11): 54,\n",
2540 " (13, 1): 43,\n",
2541 " (12, 15): 46,\n",
2542 " (11, 17): 69,\n",
2543 " (15, 2): 3,\n",
2544 " (13, 14): 26,\n",
2545 " (0, 13): 19,\n",
2546 " (3, 8): 5,\n",
2547 " (2, 0): 22,\n",
2548 " (1, 8): 55,\n",
2549 " (4, 3): 4,\n",
2550 " (2, 15): 68,\n",
2551 " (5, 2): 79}"
2552 ]
2553 }
2554 ],
2555 "prompt_number": 30
2556 },
2557 {
2558 "cell_type": "code",
2559 "collapsed": false,
2560 "input": [
2561 "g2[(2, 2)]"
2562 ],
2563 "language": "python",
2564 "metadata": {},
2565 "outputs": [
2566 {
2567 "metadata": {},
2568 "output_type": "pyout",
2569 "prompt_number": 35,
2570 "text": [
2571 "31"
2572 ]
2573 }
2574 ],
2575 "prompt_number": 35
2576 },
2577 {
2578 "cell_type": "code",
2579 "collapsed": false,
2580 "input": [
2581 "g3 = [grid_nums[row * COLUMNS:(row+1) * COLUMNS] for row in range(ROWS)]\n",
2582 "g3"
2583 ],
2584 "language": "python",
2585 "metadata": {},
2586 "outputs": [
2587 {
2588 "metadata": {},
2589 "output_type": "pyout",
2590 "prompt_number": 27,
2591 "text": [
2592 "[[8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8],\n",
2593 " [49,\n",
2594 " 49,\n",
2595 " 99,\n",
2596 " 40,\n",
2597 " 17,\n",
2598 " 81,\n",
2599 " 18,\n",
2600 " 57,\n",
2601 " 60,\n",
2602 " 87,\n",
2603 " 17,\n",
2604 " 40,\n",
2605 " 98,\n",
2606 " 43,\n",
2607 " 69,\n",
2608 " 48,\n",
2609 " 4,\n",
2610 " 56,\n",
2611 " 62,\n",
2612 " 0],\n",
2613 " [81,\n",
2614 " 49,\n",
2615 " 31,\n",
2616 " 73,\n",
2617 " 55,\n",
2618 " 79,\n",
2619 " 14,\n",
2620 " 29,\n",
2621 " 93,\n",
2622 " 71,\n",
2623 " 40,\n",
2624 " 67,\n",
2625 " 53,\n",
2626 " 88,\n",
2627 " 30,\n",
2628 " 3,\n",
2629 " 49,\n",
2630 " 13,\n",
2631 " 36,\n",
2632 " 65],\n",
2633 " [52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 1, 32, 56, 71, 37, 2, 36, 91],\n",
2634 " [22,\n",
2635 " 31,\n",
2636 " 16,\n",
2637 " 71,\n",
2638 " 51,\n",
2639 " 67,\n",
2640 " 63,\n",
2641 " 89,\n",
2642 " 41,\n",
2643 " 92,\n",
2644 " 36,\n",
2645 " 54,\n",
2646 " 22,\n",
2647 " 40,\n",
2648 " 40,\n",
2649 " 28,\n",
2650 " 66,\n",
2651 " 33,\n",
2652 " 13,\n",
2653 " 80],\n",
2654 " [24,\n",
2655 " 47,\n",
2656 " 32,\n",
2657 " 60,\n",
2658 " 99,\n",
2659 " 3,\n",
2660 " 45,\n",
2661 " 2,\n",
2662 " 44,\n",
2663 " 75,\n",
2664 " 33,\n",
2665 " 53,\n",
2666 " 78,\n",
2667 " 36,\n",
2668 " 84,\n",
2669 " 20,\n",
2670 " 35,\n",
2671 " 17,\n",
2672 " 12,\n",
2673 " 50],\n",
2674 " [32,\n",
2675 " 98,\n",
2676 " 81,\n",
2677 " 28,\n",
2678 " 64,\n",
2679 " 23,\n",
2680 " 67,\n",
2681 " 10,\n",
2682 " 26,\n",
2683 " 38,\n",
2684 " 40,\n",
2685 " 67,\n",
2686 " 59,\n",
2687 " 54,\n",
2688 " 70,\n",
2689 " 66,\n",
2690 " 18,\n",
2691 " 38,\n",
2692 " 64,\n",
2693 " 70],\n",
2694 " [67,\n",
2695 " 26,\n",
2696 " 20,\n",
2697 " 68,\n",
2698 " 2,\n",
2699 " 62,\n",
2700 " 12,\n",
2701 " 20,\n",
2702 " 95,\n",
2703 " 63,\n",
2704 " 94,\n",
2705 " 39,\n",
2706 " 63,\n",
2707 " 8,\n",
2708 " 40,\n",
2709 " 91,\n",
2710 " 66,\n",
2711 " 49,\n",
2712 " 94,\n",
2713 " 21],\n",
2714 " [24,\n",
2715 " 55,\n",
2716 " 58,\n",
2717 " 5,\n",
2718 " 66,\n",
2719 " 73,\n",
2720 " 99,\n",
2721 " 26,\n",
2722 " 97,\n",
2723 " 17,\n",
2724 " 78,\n",
2725 " 78,\n",
2726 " 96,\n",
2727 " 83,\n",
2728 " 14,\n",
2729 " 88,\n",
2730 " 34,\n",
2731 " 89,\n",
2732 " 63,\n",
2733 " 72],\n",
2734 " [21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 0, 61, 33, 97, 34, 31, 33, 95],\n",
2735 " [78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 4, 62, 16, 14, 9, 53, 56, 92],\n",
2736 " [16,\n",
2737 " 39,\n",
2738 " 5,\n",
2739 " 42,\n",
2740 " 96,\n",
2741 " 35,\n",
2742 " 31,\n",
2743 " 47,\n",
2744 " 55,\n",
2745 " 58,\n",
2746 " 88,\n",
2747 " 24,\n",
2748 " 0,\n",
2749 " 17,\n",
2750 " 54,\n",
2751 " 24,\n",
2752 " 36,\n",
2753 " 29,\n",
2754 " 85,\n",
2755 " 57],\n",
2756 " [86, 56, 0, 48, 35, 71, 89, 7, 5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58],\n",
2757 " [19,\n",
2758 " 80,\n",
2759 " 81,\n",
2760 " 68,\n",
2761 " 5,\n",
2762 " 94,\n",
2763 " 47,\n",
2764 " 69,\n",
2765 " 28,\n",
2766 " 73,\n",
2767 " 92,\n",
2768 " 13,\n",
2769 " 86,\n",
2770 " 52,\n",
2771 " 17,\n",
2772 " 77,\n",
2773 " 4,\n",
2774 " 89,\n",
2775 " 55,\n",
2776 " 40],\n",
2777 " [4, 52, 8, 83, 97, 35, 99, 16, 7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66],\n",
2778 " [88,\n",
2779 " 36,\n",
2780 " 68,\n",
2781 " 87,\n",
2782 " 57,\n",
2783 " 62,\n",
2784 " 20,\n",
2785 " 72,\n",
2786 " 3,\n",
2787 " 46,\n",
2788 " 33,\n",
2789 " 67,\n",
2790 " 46,\n",
2791 " 55,\n",
2792 " 12,\n",
2793 " 32,\n",
2794 " 63,\n",
2795 " 93,\n",
2796 " 53,\n",
2797 " 69],\n",
2798 " [4,\n",
2799 " 42,\n",
2800 " 16,\n",
2801 " 73,\n",
2802 " 38,\n",
2803 " 25,\n",
2804 " 39,\n",
2805 " 11,\n",
2806 " 24,\n",
2807 " 94,\n",
2808 " 72,\n",
2809 " 18,\n",
2810 " 8,\n",
2811 " 46,\n",
2812 " 29,\n",
2813 " 32,\n",
2814 " 40,\n",
2815 " 62,\n",
2816 " 76,\n",
2817 " 36],\n",
2818 " [20,\n",
2819 " 69,\n",
2820 " 36,\n",
2821 " 41,\n",
2822 " 72,\n",
2823 " 30,\n",
2824 " 23,\n",
2825 " 88,\n",
2826 " 34,\n",
2827 " 62,\n",
2828 " 99,\n",
2829 " 69,\n",
2830 " 82,\n",
2831 " 67,\n",
2832 " 59,\n",
2833 " 85,\n",
2834 " 74,\n",
2835 " 4,\n",
2836 " 36,\n",
2837 " 16],\n",
2838 " [20,\n",
2839 " 73,\n",
2840 " 35,\n",
2841 " 29,\n",
2842 " 78,\n",
2843 " 31,\n",
2844 " 90,\n",
2845 " 1,\n",
2846 " 74,\n",
2847 " 31,\n",
2848 " 49,\n",
2849 " 71,\n",
2850 " 48,\n",
2851 " 86,\n",
2852 " 81,\n",
2853 " 16,\n",
2854 " 23,\n",
2855 " 57,\n",
2856 " 5,\n",
2857 " 54],\n",
2858 " [1,\n",
2859 " 70,\n",
2860 " 54,\n",
2861 " 71,\n",
2862 " 83,\n",
2863 " 51,\n",
2864 " 54,\n",
2865 " 69,\n",
2866 " 16,\n",
2867 " 92,\n",
2868 " 33,\n",
2869 " 48,\n",
2870 " 61,\n",
2871 " 43,\n",
2872 " 52,\n",
2873 " 1,\n",
2874 " 89,\n",
2875 " 19,\n",
2876 " 67,\n",
2877 " 48]]"
2878 ]
2879 }
2880 ],
2881 "prompt_number": 27
2882 },
2883 {
2884 "cell_type": "code",
2885 "collapsed": false,
2886 "input": [
2887 "g4 = {(x, y): grid_nums[x + y * COLUMNS] \n",
2888 " for x in range(COLUMNS) \n",
2889 " for y in range(ROWS)}\n",
2890 "g4"
2891 ],
2892 "language": "python",
2893 "metadata": {},
2894 "outputs": [
2895 {
2896 "metadata": {},
2897 "output_type": "pyout",
2898 "prompt_number": 63,
2899 "text": [
2900 "{(7, 3): 42,\n",
2901 " (6, 9): 76,\n",
2902 " (17, 11): 29,\n",
2903 " (19, 19): 48,\n",
2904 " (16, 6): 18,\n",
2905 " (7, 12): 7,\n",
2906 " (19, 4): 80,\n",
2907 " (18, 4): 13,\n",
2908 " (18, 19): 67,\n",
2909 " (8, 5): 44,\n",
2910 " (10, 8): 78,\n",
2911 " (9, 0): 75,\n",
2912 " (11, 5): 53,\n",
2913 " (10, 7): 94,\n",
2914 " (14, 18): 81,\n",
2915 " (12, 6): 59,\n",
2916 " (10, 18): 49,\n",
2917 " (0, 17): 20,\n",
2918 " (15, 11): 24,\n",
2919 " (14, 1): 69,\n",
2920 " (13, 7): 8,\n",
2921 " (12, 17): 82,\n",
2922 " (0, 4): 22,\n",
2923 " (15, 4): 28,\n",
2924 " (1, 1): 49,\n",
2925 " (4, 10): 22,\n",
2926 " (3, 2): 73,\n",
2927 " (2, 6): 81,\n",
2928 " (5, 11): 35,\n",
2929 " (4, 5): 99,\n",
2930 " (6, 0): 0,\n",
2931 " (4, 16): 38,\n",
2932 " (7, 5): 2,\n",
2933 " (19, 13): 40,\n",
2934 " (7, 0): 40,\n",
2935 " (16, 19): 89,\n",
2936 " (17, 7): 49,\n",
2937 " (18, 10): 56,\n",
2938 " (17, 18): 57,\n",
2939 " (16, 8): 34,\n",
2940 " (8, 12): 5,\n",
2941 " (9, 9): 45,\n",
2942 " (10, 14): 57,\n",
2943 " (8, 18): 74,\n",
2944 " (11, 15): 67,\n",
2945 " (9, 19): 92,\n",
2946 " (15, 16): 32,\n",
2947 " (14, 8): 14,\n",
2948 " (13, 0): 78,\n",
2949 " (12, 8): 96,\n",
2950 " (11, 16): 18,\n",
2951 " (15, 13): 77,\n",
2952 " (13, 13): 52,\n",
2953 " (2, 18): 35,\n",
2954 " (0, 14): 4,\n",
2955 " (3, 11): 42,\n",
2956 " (2, 1): 99,\n",
2957 " (1, 15): 36,\n",
2958 " (4, 12): 35,\n",
2959 " (2, 12): 0,\n",
2960 " (5, 1): 81,\n",
2961 " (3, 17): 41,\n",
2962 " (16, 7): 66,\n",
2963 " (6, 14): 99,\n",
2964 " (19, 18): 54,\n",
2965 " (17, 6): 38,\n",
2966 " (7, 15): 72,\n",
2967 " (19, 7): 21,\n",
2968 " (18, 5): 12,\n",
2969 " (7, 1): 57,\n",
2970 " (18, 16): 76,\n",
2971 " (8, 6): 26,\n",
2972 " (10, 9): 35,\n",
2973 " (9, 7): 63,\n",
2974 " (11, 4): 54,\n",
2975 " (10, 4): 36,\n",
2976 " (14, 19): 52,\n",
2977 " (12, 7): 63,\n",
2978 " (11, 9): 14,\n",
2979 " (10, 19): 33,\n",
2980 " (0, 18): 20,\n",
2981 " (15, 10): 14,\n",
2982 " (14, 6): 70,\n",
2983 " (13, 6): 54,\n",
2984 " (12, 18): 48,\n",
2985 " (1, 19): 70,\n",
2986 " (0, 5): 24,\n",
2987 " (15, 7): 91,\n",
2988 " (13, 19): 43,\n",
2989 " (1, 0): 2,\n",
2990 " (0, 8): 24,\n",
2991 " (4, 11): 96,\n",
2992 " (3, 5): 60,\n",
2993 " (2, 7): 20,\n",
2994 " (5, 10): 75,\n",
2995 " (4, 6): 64,\n",
2996 " (6, 1): 18,\n",
2997 " (5, 7): 62,\n",
2998 " (4, 17): 72,\n",
2999 " (16, 1): 4,\n",
3000 " (19, 12): 58,\n",
3001 " (17, 12): 54,\n",
3002 " (7, 17): 88,\n",
3003 " (19, 1): 0,\n",
3004 " (18, 11): 85,\n",
3005 " (7, 6): 10,\n",
3006 " (8, 13): 28,\n",
3007 " (9, 8): 17,\n",
3008 " (8, 0): 0,\n",
3009 " (10, 15): 33,\n",
3010 " (8, 19): 16,\n",
3011 " (11, 14): 32,\n",
3012 " (9, 18): 31,\n",
3013 " (15, 19): 1,\n",
3014 " (14, 9): 33,\n",
3015 " (12, 9): 0,\n",
3016 " (11, 19): 48,\n",
3017 " (15, 12): 58,\n",
3018 " (13, 12): 60,\n",
3019 " (2, 19): 54,\n",
3020 " (0, 15): 88,\n",
3021 " (3, 10): 28,\n",
3022 " (1, 14): 52,\n",
3023 " (4, 13): 5,\n",
3024 " (2, 13): 81,\n",
3025 " (5, 0): 15,\n",
3026 " (3, 16): 73,\n",
3027 " (6, 15): 20,\n",
3028 " (16, 9): 34,\n",
3029 " (16, 10): 9,\n",
3030 " (7, 14): 16,\n",
3031 " (6, 18): 90,\n",
3032 " (19, 6): 70,\n",
3033 " (18, 2): 36,\n",
3034 " (17, 10): 53,\n",
3035 " (18, 17): 36,\n",
3036 " (16, 2): 49,\n",
3037 " (8, 7): 95,\n",
3038 " (9, 6): 38,\n",
3039 " (11, 7): 39,\n",
3040 " (10, 5): 33,\n",
3041 " (14, 16): 29,\n",
3042 " (12, 0): 7,\n",
3043 " (11, 8): 78,\n",
3044 " (10, 16): 72,\n",
3045 " (0, 19): 1,\n",
3046 " (14, 7): 40,\n",
3047 " (13, 5): 36,\n",
3048 " (12, 19): 61,\n",
3049 " (1, 18): 73,\n",
3050 " (0, 6): 32,\n",
3051 " (15, 6): 66,\n",
3052 " (13, 18): 86,\n",
3053 " (1, 7): 26,\n",
3054 " (0, 9): 21,\n",
3055 " (3, 4): 71,\n",
3056 " (2, 4): 16,\n",
3057 " (5, 9): 0,\n",
3058 " (4, 7): 2,\n",
3059 " (6, 6): 67,\n",
3060 " (5, 6): 23,\n",
3061 " (4, 18): 78,\n",
3062 " (7, 7): 20,\n",
3063 " (5, 19): 51,\n",
3064 " (19, 15): 69,\n",
3065 " (17, 3): 2,\n",
3066 " (7, 16): 11,\n",
3067 " (19, 0): 8,\n",
3068 " (18, 8): 63,\n",
3069 " (17, 16): 62,\n",
3070 " (7, 4): 89,\n",
3071 " (9, 15): 46,\n",
3072 " (8, 1): 60,\n",
3073 " (10, 12): 44,\n",
3074 " (11, 1): 40,\n",
3075 " (9, 17): 62,\n",
3076 " (15, 18): 16,\n",
3077 " (14, 14): 26,\n",
3078 " (12, 10): 4,\n",
3079 " (11, 18): 71,\n",
3080 " (15, 15): 32,\n",
3081 " (13, 11): 17,\n",
3082 " (2, 16): 16,\n",
3083 " (0, 0): 8,\n",
3084 " (8, 14): 7,\n",
3085 " (1, 13): 80,\n",
3086 " (4, 14): 97,\n",
3087 " (2, 10): 53,\n",
3088 " (5, 15): 62,\n",
3089 " (3, 19): 71,\n",
3090 " (6, 12): 89,\n",
3091 " (17, 4): 33,\n",
3092 " (16, 12): 51,\n",
3093 " (6, 19): 54,\n",
3094 " (19, 9): 95,\n",
3095 " (18, 3): 36,\n",
3096 " (17, 9): 31,\n",
3097 " (18, 14): 98,\n",
3098 " (17, 17): 4,\n",
3099 " (16, 0): 50,\n",
3100 " (16, 15): 63,\n",
3101 " (9, 5): 75,\n",
3102 " (11, 6): 67,\n",
3103 " (10, 2): 40,\n",
3104 " (14, 17): 59,\n",
3105 " (12, 1): 98,\n",
3106 " (11, 11): 24,\n",
3107 " (10, 17): 99,\n",
3108 " (14, 4): 40,\n",
3109 " (13, 4): 40,\n",
3110 " (12, 12): 44,\n",
3111 " (1, 17): 69,\n",
3112 " (0, 7): 67,\n",
3113 " (15, 1): 48,\n",
3114 " (13, 17): 67,\n",
3115 " (1, 6): 98,\n",
3116 " (0, 10): 78,\n",
3117 " (17, 13): 89,\n",
3118 " (3, 7): 68,\n",
3119 " (2, 5): 32,\n",
3120 " (1, 11): 39,\n",
3121 " (5, 8): 73,\n",
3122 " (4, 0): 38,\n",
3123 " (6, 7): 12,\n",
3124 " (5, 5): 3,\n",
3125 " (4, 19): 83,\n",
3126 " (16, 3): 37,\n",
3127 " (6, 10): 31,\n",
3128 " (5, 18): 31,\n",
3129 " (19, 14): 66,\n",
3130 " (17, 2): 13,\n",
3131 " (7, 19): 69,\n",
3132 " (19, 3): 91,\n",
3133 " (18, 9): 33,\n",
3134 " (8, 15): 3,\n",
3135 " (9, 14): 97,\n",
3136 " (8, 2): 93,\n",
3137 " (10, 13): 92,\n",
3138 " (9, 3): 24,\n",
3139 " (11, 0): 5,\n",
3140 " (9, 16): 94,\n",
3141 " (14, 15): 12,\n",
3142 " (12, 11): 0,\n",
3143 " (15, 14): 79,\n",
3144 " (14, 2): 30,\n",
3145 " (13, 10): 62,\n",
3146 " (2, 17): 36,\n",
3147 " (0, 1): 49,\n",
3148 " (3, 12): 48,\n",
3149 " (1, 12): 56,\n",
3150 " (4, 15): 57,\n",
3151 " (3, 1): 40,\n",
3152 " (2, 11): 5,\n",
3153 " (5, 14): 35,\n",
3154 " (3, 18): 29,\n",
3155 " (6, 13): 47,\n",
3156 " (7, 8): 26,\n",
3157 " (6, 16): 39,\n",
3158 " (19, 8): 72,\n",
3159 " (18, 0): 91,\n",
3160 " (17, 8): 89,\n",
3161 " (16, 16): 40,\n",
3162 " (18, 15): 53,\n",
3163 " (8, 9): 20,\n",
3164 " (9, 4): 92,\n",
3165 " (7, 11): 47,\n",
3166 " (10, 3): 68,\n",
3167 " (12, 2): 53,\n",
3168 " (11, 10): 80,\n",
3169 " (14, 5): 84,\n",
3170 " (13, 3): 32,\n",
3171 " (12, 13): 86,\n",
3172 " (1, 16): 42,\n",
3173 " (3, 13): 68,\n",
3174 " (15, 0): 12,\n",
3175 " (13, 16): 46,\n",
3176 " (1, 5): 47,\n",
3177 " (0, 11): 16,\n",
3178 " (3, 6): 28,\n",
3179 " (2, 2): 31,\n",
3180 " (1, 10): 17,\n",
3181 " (4, 1): 17,\n",
3182 " (6, 4): 63,\n",
3183 " (5, 4): 67,\n",
3184 " (16, 4): 66,\n",
3185 " (6, 11): 31,\n",
3186 " (5, 17): 30,\n",
3187 " (19, 17): 16,\n",
3188 " (17, 1): 56,\n",
3189 " (7, 18): 1,\n",
3190 " (19, 2): 65,\n",
3191 " (18, 6): 64,\n",
3192 " (9, 13): 73,\n",
3193 " (8, 3): 69,\n",
3194 " (10, 10): 3,\n",
3195 " (9, 2): 71,\n",
3196 " (16, 13): 4,\n",
3197 " (11, 3): 56,\n",
3198 " (14, 12): 21,\n",
3199 " (12, 4): 22,\n",
3200 " (15, 9): 97,\n",
3201 " (14, 3): 56,\n",
3202 " (13, 9): 61,\n",
3203 " (0, 2): 81,\n",
3204 " (3, 15): 87,\n",
3205 " (1, 3): 70,\n",
3206 " (4, 8): 66,\n",
3207 " (3, 0): 97,\n",
3208 " (2, 8): 58,\n",
3209 " (5, 13): 94,\n",
3210 " (6, 2): 14,\n",
3211 " (16, 14): 33,\n",
3212 " (6, 17): 23,\n",
3213 " (19, 11): 57,\n",
3214 " (18, 1): 62,\n",
3215 " (17, 15): 93,\n",
3216 " (16, 17): 74,\n",
3217 " (18, 12): 17,\n",
3218 " (8, 10): 15,\n",
3219 " (9, 11): 58,\n",
3220 " (10, 0): 4,\n",
3221 " (8, 16): 24,\n",
3222 " (12, 3): 1,\n",
3223 " (11, 13): 13,\n",
3224 " (14, 10): 16,\n",
3225 " (13, 2): 88,\n",
3226 " (12, 14): 16,\n",
3227 " (15, 3): 71,\n",
3228 " (13, 15): 55,\n",
3229 " (1, 4): 31,\n",
3230 " (0, 12): 86,\n",
3231 " (3, 9): 9,\n",
3232 " (2, 3): 95,\n",
3233 " (1, 9): 36,\n",
3234 " (4, 2): 55,\n",
3235 " (2, 14): 8,\n",
3236 " (6, 5): 45,\n",
3237 " (5, 3): 60,\n",
3238 " (16, 5): 35,\n",
3239 " (6, 8): 99,\n",
3240 " (5, 16): 25,\n",
3241 " (19, 16): 36,\n",
3242 " (17, 0): 77,\n",
3243 " (7, 13): 69,\n",
3244 " (19, 5): 50,\n",
3245 " (18, 7): 94,\n",
3246 " (7, 9): 44,\n",
3247 " (18, 18): 5,\n",
3248 " (9, 12): 44,\n",
3249 " (8, 4): 41,\n",
3250 " (10, 11): 88,\n",
3251 " (9, 1): 87,\n",
3252 " (17, 5): 17,\n",
3253 " (11, 2): 67,\n",
3254 " (10, 6): 40,\n",
3255 " (16, 11): 36,\n",
3256 " (14, 13): 17,\n",
3257 " (12, 5): 78,\n",
3258 " (0, 16): 4,\n",
3259 " (15, 8): 88,\n",
3260 " (14, 0): 52,\n",
3261 " (13, 8): 83,\n",
3262 " (12, 16): 8,\n",
3263 " (0, 3): 52,\n",
3264 " (15, 5): 20,\n",
3265 " (3, 14): 83,\n",
3266 " (1, 2): 49,\n",
3267 " (4, 9): 75,\n",
3268 " (3, 3): 23,\n",
3269 " (2, 9): 23,\n",
3270 " (5, 12): 71,\n",
3271 " (4, 4): 51,\n",
3272 " (6, 3): 11,\n",
3273 " (8, 8): 97,\n",
3274 " (7, 2): 29,\n",
3275 " (7, 10): 67,\n",
3276 " (19, 10): 92,\n",
3277 " (17, 14): 27,\n",
3278 " (16, 18): 23,\n",
3279 " (18, 13): 55,\n",
3280 " (17, 19): 19,\n",
3281 " (8, 11): 55,\n",
3282 " (9, 10): 94,\n",
3283 " (10, 1): 17,\n",
3284 " (8, 17): 34,\n",
3285 " (11, 12): 37,\n",
3286 " (15, 17): 85,\n",
3287 " (14, 11): 54,\n",
3288 " (13, 1): 43,\n",
3289 " (12, 15): 46,\n",
3290 " (11, 17): 69,\n",
3291 " (15, 2): 3,\n",
3292 " (13, 14): 26,\n",
3293 " (0, 13): 19,\n",
3294 " (3, 8): 5,\n",
3295 " (2, 0): 22,\n",
3296 " (1, 8): 55,\n",
3297 " (4, 3): 4,\n",
3298 " (2, 15): 68,\n",
3299 " (5, 2): 79}"
3300 ]
3301 }
3302 ],
3303 "prompt_number": 63
3304 },
3305 {
3306 "cell_type": "code",
3307 "collapsed": false,
3308 "input": [
3309 "g4s = {(x, y): int(GRID_STRING[(x + y * COLUMNS) * 3:(x + y * COLUMNS) * 3 + 2]) \n",
3310 " for x in range(COLUMNS) \n",
3311 " for y in range(ROWS)}\n",
3312 "g4s"
3313 ],
3314 "language": "python",
3315 "metadata": {},
3316 "outputs": [
3317 {
3318 "metadata": {},
3319 "output_type": "pyout",
3320 "prompt_number": 65,
3321 "text": [
3322 "{(7, 3): 42,\n",
3323 " (6, 9): 76,\n",
3324 " (17, 11): 29,\n",
3325 " (19, 19): 48,\n",
3326 " (16, 6): 18,\n",
3327 " (7, 12): 7,\n",
3328 " (19, 4): 80,\n",
3329 " (18, 4): 13,\n",
3330 " (18, 19): 67,\n",
3331 " (8, 5): 44,\n",
3332 " (10, 8): 78,\n",
3333 " (9, 0): 75,\n",
3334 " (11, 5): 53,\n",
3335 " (10, 7): 94,\n",
3336 " (14, 18): 81,\n",
3337 " (12, 6): 59,\n",
3338 " (10, 18): 49,\n",
3339 " (0, 17): 20,\n",
3340 " (15, 11): 24,\n",
3341 " (14, 1): 69,\n",
3342 " (13, 7): 8,\n",
3343 " (12, 17): 82,\n",
3344 " (0, 4): 22,\n",
3345 " (15, 4): 28,\n",
3346 " (1, 1): 49,\n",
3347 " (4, 10): 22,\n",
3348 " (3, 2): 73,\n",
3349 " (2, 6): 81,\n",
3350 " (5, 11): 35,\n",
3351 " (4, 5): 99,\n",
3352 " (6, 0): 0,\n",
3353 " (4, 16): 38,\n",
3354 " (7, 5): 2,\n",
3355 " (19, 13): 40,\n",
3356 " (7, 0): 40,\n",
3357 " (16, 19): 89,\n",
3358 " (17, 7): 49,\n",
3359 " (18, 10): 56,\n",
3360 " (17, 18): 57,\n",
3361 " (16, 8): 34,\n",
3362 " (8, 12): 5,\n",
3363 " (9, 9): 45,\n",
3364 " (10, 14): 57,\n",
3365 " (8, 18): 74,\n",
3366 " (11, 15): 67,\n",
3367 " (9, 19): 92,\n",
3368 " (15, 16): 32,\n",
3369 " (14, 8): 14,\n",
3370 " (13, 0): 78,\n",
3371 " (12, 8): 96,\n",
3372 " (11, 16): 18,\n",
3373 " (15, 13): 77,\n",
3374 " (13, 13): 52,\n",
3375 " (2, 18): 35,\n",
3376 " (0, 14): 4,\n",
3377 " (3, 11): 42,\n",
3378 " (2, 1): 99,\n",
3379 " (1, 15): 36,\n",
3380 " (4, 12): 35,\n",
3381 " (2, 12): 0,\n",
3382 " (5, 1): 81,\n",
3383 " (3, 17): 41,\n",
3384 " (16, 7): 66,\n",
3385 " (6, 14): 99,\n",
3386 " (19, 18): 54,\n",
3387 " (17, 6): 38,\n",
3388 " (7, 15): 72,\n",
3389 " (19, 7): 21,\n",
3390 " (18, 5): 12,\n",
3391 " (7, 1): 57,\n",
3392 " (18, 16): 76,\n",
3393 " (8, 6): 26,\n",
3394 " (10, 9): 35,\n",
3395 " (9, 7): 63,\n",
3396 " (11, 4): 54,\n",
3397 " (10, 4): 36,\n",
3398 " (14, 19): 52,\n",
3399 " (12, 7): 63,\n",
3400 " (11, 9): 14,\n",
3401 " (10, 19): 33,\n",
3402 " (0, 18): 20,\n",
3403 " (15, 10): 14,\n",
3404 " (14, 6): 70,\n",
3405 " (13, 6): 54,\n",
3406 " (12, 18): 48,\n",
3407 " (1, 19): 70,\n",
3408 " (0, 5): 24,\n",
3409 " (15, 7): 91,\n",
3410 " (13, 19): 43,\n",
3411 " (1, 0): 2,\n",
3412 " (0, 8): 24,\n",
3413 " (4, 11): 96,\n",
3414 " (3, 5): 60,\n",
3415 " (2, 7): 20,\n",
3416 " (5, 10): 75,\n",
3417 " (4, 6): 64,\n",
3418 " (6, 1): 18,\n",
3419 " (5, 7): 62,\n",
3420 " (4, 17): 72,\n",
3421 " (16, 1): 4,\n",
3422 " (19, 12): 58,\n",
3423 " (17, 12): 54,\n",
3424 " (7, 17): 88,\n",
3425 " (19, 1): 0,\n",
3426 " (18, 11): 85,\n",
3427 " (7, 6): 10,\n",
3428 " (8, 13): 28,\n",
3429 " (9, 8): 17,\n",
3430 " (8, 0): 0,\n",
3431 " (10, 15): 33,\n",
3432 " (8, 19): 16,\n",
3433 " (11, 14): 32,\n",
3434 " (9, 18): 31,\n",
3435 " (15, 19): 1,\n",
3436 " (14, 9): 33,\n",
3437 " (12, 9): 0,\n",
3438 " (11, 19): 48,\n",
3439 " (15, 12): 58,\n",
3440 " (13, 12): 60,\n",
3441 " (2, 19): 54,\n",
3442 " (0, 15): 88,\n",
3443 " (3, 10): 28,\n",
3444 " (1, 14): 52,\n",
3445 " (4, 13): 5,\n",
3446 " (2, 13): 81,\n",
3447 " (5, 0): 15,\n",
3448 " (3, 16): 73,\n",
3449 " (6, 15): 20,\n",
3450 " (16, 9): 34,\n",
3451 " (16, 10): 9,\n",
3452 " (7, 14): 16,\n",
3453 " (6, 18): 90,\n",
3454 " (19, 6): 70,\n",
3455 " (18, 2): 36,\n",
3456 " (17, 10): 53,\n",
3457 " (18, 17): 36,\n",
3458 " (16, 2): 49,\n",
3459 " (8, 7): 95,\n",
3460 " (9, 6): 38,\n",
3461 " (11, 7): 39,\n",
3462 " (10, 5): 33,\n",
3463 " (14, 16): 29,\n",
3464 " (12, 0): 7,\n",
3465 " (11, 8): 78,\n",
3466 " (10, 16): 72,\n",
3467 " (0, 19): 1,\n",
3468 " (14, 7): 40,\n",
3469 " (13, 5): 36,\n",
3470 " (12, 19): 61,\n",
3471 " (1, 18): 73,\n",
3472 " (0, 6): 32,\n",
3473 " (15, 6): 66,\n",
3474 " (13, 18): 86,\n",
3475 " (1, 7): 26,\n",
3476 " (0, 9): 21,\n",
3477 " (3, 4): 71,\n",
3478 " (2, 4): 16,\n",
3479 " (5, 9): 0,\n",
3480 " (4, 7): 2,\n",
3481 " (6, 6): 67,\n",
3482 " (5, 6): 23,\n",
3483 " (4, 18): 78,\n",
3484 " (7, 7): 20,\n",
3485 " (5, 19): 51,\n",
3486 " (19, 15): 69,\n",
3487 " (17, 3): 2,\n",
3488 " (7, 16): 11,\n",
3489 " (19, 0): 8,\n",
3490 " (18, 8): 63,\n",
3491 " (17, 16): 62,\n",
3492 " (7, 4): 89,\n",
3493 " (9, 15): 46,\n",
3494 " (8, 1): 60,\n",
3495 " (10, 12): 44,\n",
3496 " (11, 1): 40,\n",
3497 " (9, 17): 62,\n",
3498 " (15, 18): 16,\n",
3499 " (14, 14): 26,\n",
3500 " (12, 10): 4,\n",
3501 " (11, 18): 71,\n",
3502 " (15, 15): 32,\n",
3503 " (13, 11): 17,\n",
3504 " (2, 16): 16,\n",
3505 " (0, 0): 8,\n",
3506 " (8, 14): 7,\n",
3507 " (1, 13): 80,\n",
3508 " (4, 14): 97,\n",
3509 " (2, 10): 53,\n",
3510 " (5, 15): 62,\n",
3511 " (3, 19): 71,\n",
3512 " (6, 12): 89,\n",
3513 " (17, 4): 33,\n",
3514 " (16, 12): 51,\n",
3515 " (6, 19): 54,\n",
3516 " (19, 9): 95,\n",
3517 " (18, 3): 36,\n",
3518 " (17, 9): 31,\n",
3519 " (18, 14): 98,\n",
3520 " (17, 17): 4,\n",
3521 " (16, 0): 50,\n",
3522 " (16, 15): 63,\n",
3523 " (9, 5): 75,\n",
3524 " (11, 6): 67,\n",
3525 " (10, 2): 40,\n",
3526 " (14, 17): 59,\n",
3527 " (12, 1): 98,\n",
3528 " (11, 11): 24,\n",
3529 " (10, 17): 99,\n",
3530 " (14, 4): 40,\n",
3531 " (13, 4): 40,\n",
3532 " (12, 12): 44,\n",
3533 " (1, 17): 69,\n",
3534 " (0, 7): 67,\n",
3535 " (15, 1): 48,\n",
3536 " (13, 17): 67,\n",
3537 " (1, 6): 98,\n",
3538 " (0, 10): 78,\n",
3539 " (17, 13): 89,\n",
3540 " (3, 7): 68,\n",
3541 " (2, 5): 32,\n",
3542 " (1, 11): 39,\n",
3543 " (5, 8): 73,\n",
3544 " (4, 0): 38,\n",
3545 " (6, 7): 12,\n",
3546 " (5, 5): 3,\n",
3547 " (4, 19): 83,\n",
3548 " (16, 3): 37,\n",
3549 " (6, 10): 31,\n",
3550 " (5, 18): 31,\n",
3551 " (19, 14): 66,\n",
3552 " (17, 2): 13,\n",
3553 " (7, 19): 69,\n",
3554 " (19, 3): 91,\n",
3555 " (18, 9): 33,\n",
3556 " (8, 15): 3,\n",
3557 " (9, 14): 97,\n",
3558 " (8, 2): 93,\n",
3559 " (10, 13): 92,\n",
3560 " (9, 3): 24,\n",
3561 " (11, 0): 5,\n",
3562 " (9, 16): 94,\n",
3563 " (14, 15): 12,\n",
3564 " (12, 11): 0,\n",
3565 " (15, 14): 79,\n",
3566 " (14, 2): 30,\n",
3567 " (13, 10): 62,\n",
3568 " (2, 17): 36,\n",
3569 " (0, 1): 49,\n",
3570 " (3, 12): 48,\n",
3571 " (1, 12): 56,\n",
3572 " (4, 15): 57,\n",
3573 " (3, 1): 40,\n",
3574 " (2, 11): 5,\n",
3575 " (5, 14): 35,\n",
3576 " (3, 18): 29,\n",
3577 " (6, 13): 47,\n",
3578 " (7, 8): 26,\n",
3579 " (6, 16): 39,\n",
3580 " (19, 8): 72,\n",
3581 " (18, 0): 91,\n",
3582 " (17, 8): 89,\n",
3583 " (16, 16): 40,\n",
3584 " (18, 15): 53,\n",
3585 " (8, 9): 20,\n",
3586 " (9, 4): 92,\n",
3587 " (7, 11): 47,\n",
3588 " (10, 3): 68,\n",
3589 " (12, 2): 53,\n",
3590 " (11, 10): 80,\n",
3591 " (14, 5): 84,\n",
3592 " (13, 3): 32,\n",
3593 " (12, 13): 86,\n",
3594 " (1, 16): 42,\n",
3595 " (3, 13): 68,\n",
3596 " (15, 0): 12,\n",
3597 " (13, 16): 46,\n",
3598 " (1, 5): 47,\n",
3599 " (0, 11): 16,\n",
3600 " (3, 6): 28,\n",
3601 " (2, 2): 31,\n",
3602 " (1, 10): 17,\n",
3603 " (4, 1): 17,\n",
3604 " (6, 4): 63,\n",
3605 " (5, 4): 67,\n",
3606 " (16, 4): 66,\n",
3607 " (6, 11): 31,\n",
3608 " (5, 17): 30,\n",
3609 " (19, 17): 16,\n",
3610 " (17, 1): 56,\n",
3611 " (7, 18): 1,\n",
3612 " (19, 2): 65,\n",
3613 " (18, 6): 64,\n",
3614 " (9, 13): 73,\n",
3615 " (8, 3): 69,\n",
3616 " (10, 10): 3,\n",
3617 " (9, 2): 71,\n",
3618 " (16, 13): 4,\n",
3619 " (11, 3): 56,\n",
3620 " (14, 12): 21,\n",
3621 " (12, 4): 22,\n",
3622 " (15, 9): 97,\n",
3623 " (14, 3): 56,\n",
3624 " (13, 9): 61,\n",
3625 " (0, 2): 81,\n",
3626 " (3, 15): 87,\n",
3627 " (1, 3): 70,\n",
3628 " (4, 8): 66,\n",
3629 " (3, 0): 97,\n",
3630 " (2, 8): 58,\n",
3631 " (5, 13): 94,\n",
3632 " (6, 2): 14,\n",
3633 " (16, 14): 33,\n",
3634 " (6, 17): 23,\n",
3635 " (19, 11): 57,\n",
3636 " (18, 1): 62,\n",
3637 " (17, 15): 93,\n",
3638 " (16, 17): 74,\n",
3639 " (18, 12): 17,\n",
3640 " (8, 10): 15,\n",
3641 " (9, 11): 58,\n",
3642 " (10, 0): 4,\n",
3643 " (8, 16): 24,\n",
3644 " (12, 3): 1,\n",
3645 " (11, 13): 13,\n",
3646 " (14, 10): 16,\n",
3647 " (13, 2): 88,\n",
3648 " (12, 14): 16,\n",
3649 " (15, 3): 71,\n",
3650 " (13, 15): 55,\n",
3651 " (1, 4): 31,\n",
3652 " (0, 12): 86,\n",
3653 " (3, 9): 9,\n",
3654 " (2, 3): 95,\n",
3655 " (1, 9): 36,\n",
3656 " (4, 2): 55,\n",
3657 " (2, 14): 8,\n",
3658 " (6, 5): 45,\n",
3659 " (5, 3): 60,\n",
3660 " (16, 5): 35,\n",
3661 " (6, 8): 99,\n",
3662 " (5, 16): 25,\n",
3663 " (19, 16): 36,\n",
3664 " (17, 0): 77,\n",
3665 " (7, 13): 69,\n",
3666 " (19, 5): 50,\n",
3667 " (18, 7): 94,\n",
3668 " (7, 9): 44,\n",
3669 " (18, 18): 5,\n",
3670 " (9, 12): 44,\n",
3671 " (8, 4): 41,\n",
3672 " (10, 11): 88,\n",
3673 " (9, 1): 87,\n",
3674 " (17, 5): 17,\n",
3675 " (11, 2): 67,\n",
3676 " (10, 6): 40,\n",
3677 " (16, 11): 36,\n",
3678 " (14, 13): 17,\n",
3679 " (12, 5): 78,\n",
3680 " (0, 16): 4,\n",
3681 " (15, 8): 88,\n",
3682 " (14, 0): 52,\n",
3683 " (13, 8): 83,\n",
3684 " (12, 16): 8,\n",
3685 " (0, 3): 52,\n",
3686 " (15, 5): 20,\n",
3687 " (3, 14): 83,\n",
3688 " (1, 2): 49,\n",
3689 " (4, 9): 75,\n",
3690 " (3, 3): 23,\n",
3691 " (2, 9): 23,\n",
3692 " (5, 12): 71,\n",
3693 " (4, 4): 51,\n",
3694 " (6, 3): 11,\n",
3695 " (8, 8): 97,\n",
3696 " (7, 2): 29,\n",
3697 " (7, 10): 67,\n",
3698 " (19, 10): 92,\n",
3699 " (17, 14): 27,\n",
3700 " (16, 18): 23,\n",
3701 " (18, 13): 55,\n",
3702 " (17, 19): 19,\n",
3703 " (8, 11): 55,\n",
3704 " (9, 10): 94,\n",
3705 " (10, 1): 17,\n",
3706 " (8, 17): 34,\n",
3707 " (11, 12): 37,\n",
3708 " (15, 17): 85,\n",
3709 " (14, 11): 54,\n",
3710 " (13, 1): 43,\n",
3711 " (12, 15): 46,\n",
3712 " (11, 17): 69,\n",
3713 " (15, 2): 3,\n",
3714 " (13, 14): 26,\n",
3715 " (0, 13): 19,\n",
3716 " (3, 8): 5,\n",
3717 " (2, 0): 22,\n",
3718 " (1, 8): 55,\n",
3719 " (4, 3): 4,\n",
3720 " (2, 15): 68,\n",
3721 " (5, 2): 79}"
3722 ]
3723 }
3724 ],
3725 "prompt_number": 65
3726 },
3727 {
3728 "cell_type": "code",
3729 "collapsed": false,
3730 "input": [
3731 "g2 == g4 == g4s"
3732 ],
3733 "language": "python",
3734 "metadata": {},
3735 "outputs": [
3736 {
3737 "metadata": {},
3738 "output_type": "pyout",
3739 "prompt_number": 66,
3740 "text": [
3741 "True"
3742 ]
3743 }
3744 ],
3745 "prompt_number": 66
3746 },
3747 {
3748 "cell_type": "code",
3749 "collapsed": false,
3750 "input": [
3751 "d = {}\n",
3752 "d[99]"
3753 ],
3754 "language": "python",
3755 "metadata": {},
3756 "outputs": [
3757 {
3758 "ename": "KeyError",
3759 "evalue": "99",
3760 "output_type": "pyerr",
3761 "traceback": [
3762 "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)",
3763 "\u001b[1;32m<ipython-input-67-fb0bb5c8abf1>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0md\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0md\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m99\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
3764 "\u001b[1;31mKeyError\u001b[0m: 99"
3765 ]
3766 }
3767 ],
3768 "prompt_number": 67
3769 },
3770 {
3771 "cell_type": "code",
3772 "collapsed": false,
3773 "input": [
3774 "import collections\n",
3775 "d = collections.defaultdict(int)\n",
3776 "d[99]"
3777 ],
3778 "language": "python",
3779 "metadata": {},
3780 "outputs": [
3781 {
3782 "metadata": {},
3783 "output_type": "pyout",
3784 "prompt_number": 69,
3785 "text": [
3786 "0"
3787 ]
3788 }
3789 ],
3790 "prompt_number": 69
3791 },
3792 {
3793 "cell_type": "code",
3794 "collapsed": false,
3795 "input": [
3796 "import string\n",
3797 "collections.Counter(l for l in open('sherlock-holmes.txt').read()\n",
3798 " if l in string.ascii_letters)"
3799 ],
3800 "language": "python",
3801 "metadata": {},
3802 "outputs": [
3803 {
3804 "metadata": {},
3805 "output_type": "pyout",
3806 "prompt_number": 71,
3807 "text": [
3808 "Counter({'e': 52876, 't': 37842, 'a': 34376, 'o': 33200, 'n': 28378, 'h': 27803, 's': 26432, 'i': 26366, 'r': 24304, 'd': 18349, 'l': 16854, 'u': 13070, 'm': 11055, 'w': 10508, 'c': 10172, 'y': 8976, 'f': 8785, 'g': 7733, 'p': 6652, 'b': 5883, 'v': 4367, 'I': 3774, 'k': 3465, 'H': 1244, 'T': 1139, 'S': 762, 'A': 761, 'W': 758, 'M': 732, 'x': 541, 'B': 479, 'Y': 455, 'q': 406, 'j': 338, 'C': 327, 'O': 312, 'N': 304, 'L': 291, 'E': 235, 'D': 214, 'R': 204, 'F': 190, 'P': 183, 'G': 154, 'z': 147, 'J': 114, 'V': 85, 'K': 78, 'U': 46, 'Q': 20, 'X': 8, 'Z': 2})"
3809 ]
3810 }
3811 ],
3812 "prompt_number": 71
3813 },
3814 {
3815 "cell_type": "code",
3816 "collapsed": false,
3817 "input": [
3818 "[(a, b, c) \n",
3819 " for a in range(1, 21) \n",
3820 " for b in range(a, 21)\n",
3821 " for c in range(b, 21)\n",
3822 " if a**2 + b**2 == c**2]"
3823 ],
3824 "language": "python",
3825 "metadata": {},
3826 "outputs": [
3827 {
3828 "metadata": {},
3829 "output_type": "pyout",
3830 "prompt_number": 74,
3831 "text": [
3832 "[(3, 4, 5), (5, 12, 13), (6, 8, 10), (8, 15, 17), (9, 12, 15), (12, 16, 20)]"
3833 ]
3834 }
3835 ],
3836 "prompt_number": 74
3837 },
3838 {
3839 "cell_type": "code",
3840 "collapsed": false,
3841 "input": [
3842 "g1"
3843 ],
3844 "language": "python",
3845 "metadata": {},
3846 "outputs": [
3847 {
3848 "metadata": {},
3849 "output_type": "pyout",
3850 "prompt_number": 75,
3851 "text": [
3852 "[[8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8],\n",
3853 " [49,\n",
3854 " 49,\n",
3855 " 99,\n",
3856 " 40,\n",
3857 " 17,\n",
3858 " 81,\n",
3859 " 18,\n",
3860 " 57,\n",
3861 " 60,\n",
3862 " 87,\n",
3863 " 17,\n",
3864 " 40,\n",
3865 " 98,\n",
3866 " 43,\n",
3867 " 69,\n",
3868 " 48,\n",
3869 " 4,\n",
3870 " 56,\n",
3871 " 62,\n",
3872 " 0],\n",
3873 " [81,\n",
3874 " 49,\n",
3875 " 31,\n",
3876 " 73,\n",
3877 " 55,\n",
3878 " 79,\n",
3879 " 14,\n",
3880 " 29,\n",
3881 " 93,\n",
3882 " 71,\n",
3883 " 40,\n",
3884 " 67,\n",
3885 " 53,\n",
3886 " 88,\n",
3887 " 30,\n",
3888 " 3,\n",
3889 " 49,\n",
3890 " 13,\n",
3891 " 36,\n",
3892 " 65],\n",
3893 " [52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 1, 32, 56, 71, 37, 2, 36, 91],\n",
3894 " [22,\n",
3895 " 31,\n",
3896 " 16,\n",
3897 " 71,\n",
3898 " 51,\n",
3899 " 67,\n",
3900 " 63,\n",
3901 " 89,\n",
3902 " 41,\n",
3903 " 92,\n",
3904 " 36,\n",
3905 " 54,\n",
3906 " 22,\n",
3907 " 40,\n",
3908 " 40,\n",
3909 " 28,\n",
3910 " 66,\n",
3911 " 33,\n",
3912 " 13,\n",
3913 " 80],\n",
3914 " [24,\n",
3915 " 47,\n",
3916 " 32,\n",
3917 " 60,\n",
3918 " 99,\n",
3919 " 3,\n",
3920 " 45,\n",
3921 " 2,\n",
3922 " 44,\n",
3923 " 75,\n",
3924 " 33,\n",
3925 " 53,\n",
3926 " 78,\n",
3927 " 36,\n",
3928 " 84,\n",
3929 " 20,\n",
3930 " 35,\n",
3931 " 17,\n",
3932 " 12,\n",
3933 " 50],\n",
3934 " [32,\n",
3935 " 98,\n",
3936 " 81,\n",
3937 " 28,\n",
3938 " 64,\n",
3939 " 23,\n",
3940 " 67,\n",
3941 " 10,\n",
3942 " 26,\n",
3943 " 38,\n",
3944 " 40,\n",
3945 " 67,\n",
3946 " 59,\n",
3947 " 54,\n",
3948 " 70,\n",
3949 " 66,\n",
3950 " 18,\n",
3951 " 38,\n",
3952 " 64,\n",
3953 " 70],\n",
3954 " [67,\n",
3955 " 26,\n",
3956 " 20,\n",
3957 " 68,\n",
3958 " 2,\n",
3959 " 62,\n",
3960 " 12,\n",
3961 " 20,\n",
3962 " 95,\n",
3963 " 63,\n",
3964 " 94,\n",
3965 " 39,\n",
3966 " 63,\n",
3967 " 8,\n",
3968 " 40,\n",
3969 " 91,\n",
3970 " 66,\n",
3971 " 49,\n",
3972 " 94,\n",
3973 " 21],\n",
3974 " [24,\n",
3975 " 55,\n",
3976 " 58,\n",
3977 " 5,\n",
3978 " 66,\n",
3979 " 73,\n",
3980 " 99,\n",
3981 " 26,\n",
3982 " 97,\n",
3983 " 17,\n",
3984 " 78,\n",
3985 " 78,\n",
3986 " 96,\n",
3987 " 83,\n",
3988 " 14,\n",
3989 " 88,\n",
3990 " 34,\n",
3991 " 89,\n",
3992 " 63,\n",
3993 " 72],\n",
3994 " [21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 0, 61, 33, 97, 34, 31, 33, 95],\n",
3995 " [78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 4, 62, 16, 14, 9, 53, 56, 92],\n",
3996 " [16,\n",
3997 " 39,\n",
3998 " 5,\n",
3999 " 42,\n",
4000 " 96,\n",
4001 " 35,\n",
4002 " 31,\n",
4003 " 47,\n",
4004 " 55,\n",
4005 " 58,\n",
4006 " 88,\n",
4007 " 24,\n",
4008 " 0,\n",
4009 " 17,\n",
4010 " 54,\n",
4011 " 24,\n",
4012 " 36,\n",
4013 " 29,\n",
4014 " 85,\n",
4015 " 57],\n",
4016 " [86, 56, 0, 48, 35, 71, 89, 7, 5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58],\n",
4017 " [19,\n",
4018 " 80,\n",
4019 " 81,\n",
4020 " 68,\n",
4021 " 5,\n",
4022 " 94,\n",
4023 " 47,\n",
4024 " 69,\n",
4025 " 28,\n",
4026 " 73,\n",
4027 " 92,\n",
4028 " 13,\n",
4029 " 86,\n",
4030 " 52,\n",
4031 " 17,\n",
4032 " 77,\n",
4033 " 4,\n",
4034 " 89,\n",
4035 " 55,\n",
4036 " 40],\n",
4037 " [4, 52, 8, 83, 97, 35, 99, 16, 7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66],\n",
4038 " [88,\n",
4039 " 36,\n",
4040 " 68,\n",
4041 " 87,\n",
4042 " 57,\n",
4043 " 62,\n",
4044 " 20,\n",
4045 " 72,\n",
4046 " 3,\n",
4047 " 46,\n",
4048 " 33,\n",
4049 " 67,\n",
4050 " 46,\n",
4051 " 55,\n",
4052 " 12,\n",
4053 " 32,\n",
4054 " 63,\n",
4055 " 93,\n",
4056 " 53,\n",
4057 " 69],\n",
4058 " [4,\n",
4059 " 42,\n",
4060 " 16,\n",
4061 " 73,\n",
4062 " 38,\n",
4063 " 25,\n",
4064 " 39,\n",
4065 " 11,\n",
4066 " 24,\n",
4067 " 94,\n",
4068 " 72,\n",
4069 " 18,\n",
4070 " 8,\n",
4071 " 46,\n",
4072 " 29,\n",
4073 " 32,\n",
4074 " 40,\n",
4075 " 62,\n",
4076 " 76,\n",
4077 " 36],\n",
4078 " [20,\n",
4079 " 69,\n",
4080 " 36,\n",
4081 " 41,\n",
4082 " 72,\n",
4083 " 30,\n",
4084 " 23,\n",
4085 " 88,\n",
4086 " 34,\n",
4087 " 62,\n",
4088 " 99,\n",
4089 " 69,\n",
4090 " 82,\n",
4091 " 67,\n",
4092 " 59,\n",
4093 " 85,\n",
4094 " 74,\n",
4095 " 4,\n",
4096 " 36,\n",
4097 " 16],\n",
4098 " [20,\n",
4099 " 73,\n",
4100 " 35,\n",
4101 " 29,\n",
4102 " 78,\n",
4103 " 31,\n",
4104 " 90,\n",
4105 " 1,\n",
4106 " 74,\n",
4107 " 31,\n",
4108 " 49,\n",
4109 " 71,\n",
4110 " 48,\n",
4111 " 86,\n",
4112 " 81,\n",
4113 " 16,\n",
4114 " 23,\n",
4115 " 57,\n",
4116 " 5,\n",
4117 " 54],\n",
4118 " [1,\n",
4119 " 70,\n",
4120 " 54,\n",
4121 " 71,\n",
4122 " 83,\n",
4123 " 51,\n",
4124 " 54,\n",
4125 " 69,\n",
4126 " 16,\n",
4127 " 92,\n",
4128 " 33,\n",
4129 " 48,\n",
4130 " 61,\n",
4131 " 43,\n",
4132 " 52,\n",
4133 " 1,\n",
4134 " 89,\n",
4135 " 19,\n",
4136 " 67,\n",
4137 " 48]]"
4138 ]
4139 }
4140 ],
4141 "prompt_number": 75
4142 },
4143 {
4144 "cell_type": "code",
4145 "collapsed": false,
4146 "input": [
4147 "[n for row in g1 for n in row]"
4148 ],
4149 "language": "python",
4150 "metadata": {},
4151 "outputs": [
4152 {
4153 "metadata": {},
4154 "output_type": "pyout",
4155 "prompt_number": 76,
4156 "text": [
4157 "[8,\n",
4158 " 2,\n",
4159 " 22,\n",
4160 " 97,\n",
4161 " 38,\n",
4162 " 15,\n",
4163 " 0,\n",
4164 " 40,\n",
4165 " 0,\n",
4166 " 75,\n",
4167 " 4,\n",
4168 " 5,\n",
4169 " 7,\n",
4170 " 78,\n",
4171 " 52,\n",
4172 " 12,\n",
4173 " 50,\n",
4174 " 77,\n",
4175 " 91,\n",
4176 " 8,\n",
4177 " 49,\n",
4178 " 49,\n",
4179 " 99,\n",
4180 " 40,\n",
4181 " 17,\n",
4182 " 81,\n",
4183 " 18,\n",
4184 " 57,\n",
4185 " 60,\n",
4186 " 87,\n",
4187 " 17,\n",
4188 " 40,\n",
4189 " 98,\n",
4190 " 43,\n",
4191 " 69,\n",
4192 " 48,\n",
4193 " 4,\n",
4194 " 56,\n",
4195 " 62,\n",
4196 " 0,\n",
4197 " 81,\n",
4198 " 49,\n",
4199 " 31,\n",
4200 " 73,\n",
4201 " 55,\n",
4202 " 79,\n",
4203 " 14,\n",
4204 " 29,\n",
4205 " 93,\n",
4206 " 71,\n",
4207 " 40,\n",
4208 " 67,\n",
4209 " 53,\n",
4210 " 88,\n",
4211 " 30,\n",
4212 " 3,\n",
4213 " 49,\n",
4214 " 13,\n",
4215 " 36,\n",
4216 " 65,\n",
4217 " 52,\n",
4218 " 70,\n",
4219 " 95,\n",
4220 " 23,\n",
4221 " 4,\n",
4222 " 60,\n",
4223 " 11,\n",
4224 " 42,\n",
4225 " 69,\n",
4226 " 24,\n",
4227 " 68,\n",
4228 " 56,\n",
4229 " 1,\n",
4230 " 32,\n",
4231 " 56,\n",
4232 " 71,\n",
4233 " 37,\n",
4234 " 2,\n",
4235 " 36,\n",
4236 " 91,\n",
4237 " 22,\n",
4238 " 31,\n",
4239 " 16,\n",
4240 " 71,\n",
4241 " 51,\n",
4242 " 67,\n",
4243 " 63,\n",
4244 " 89,\n",
4245 " 41,\n",
4246 " 92,\n",
4247 " 36,\n",
4248 " 54,\n",
4249 " 22,\n",
4250 " 40,\n",
4251 " 40,\n",
4252 " 28,\n",
4253 " 66,\n",
4254 " 33,\n",
4255 " 13,\n",
4256 " 80,\n",
4257 " 24,\n",
4258 " 47,\n",
4259 " 32,\n",
4260 " 60,\n",
4261 " 99,\n",
4262 " 3,\n",
4263 " 45,\n",
4264 " 2,\n",
4265 " 44,\n",
4266 " 75,\n",
4267 " 33,\n",
4268 " 53,\n",
4269 " 78,\n",
4270 " 36,\n",
4271 " 84,\n",
4272 " 20,\n",
4273 " 35,\n",
4274 " 17,\n",
4275 " 12,\n",
4276 " 50,\n",
4277 " 32,\n",
4278 " 98,\n",
4279 " 81,\n",
4280 " 28,\n",
4281 " 64,\n",
4282 " 23,\n",
4283 " 67,\n",
4284 " 10,\n",
4285 " 26,\n",
4286 " 38,\n",
4287 " 40,\n",
4288 " 67,\n",
4289 " 59,\n",
4290 " 54,\n",
4291 " 70,\n",
4292 " 66,\n",
4293 " 18,\n",
4294 " 38,\n",
4295 " 64,\n",
4296 " 70,\n",
4297 " 67,\n",
4298 " 26,\n",
4299 " 20,\n",
4300 " 68,\n",
4301 " 2,\n",
4302 " 62,\n",
4303 " 12,\n",
4304 " 20,\n",
4305 " 95,\n",
4306 " 63,\n",
4307 " 94,\n",
4308 " 39,\n",
4309 " 63,\n",
4310 " 8,\n",
4311 " 40,\n",
4312 " 91,\n",
4313 " 66,\n",
4314 " 49,\n",
4315 " 94,\n",
4316 " 21,\n",
4317 " 24,\n",
4318 " 55,\n",
4319 " 58,\n",
4320 " 5,\n",
4321 " 66,\n",
4322 " 73,\n",
4323 " 99,\n",
4324 " 26,\n",
4325 " 97,\n",
4326 " 17,\n",
4327 " 78,\n",
4328 " 78,\n",
4329 " 96,\n",
4330 " 83,\n",
4331 " 14,\n",
4332 " 88,\n",
4333 " 34,\n",
4334 " 89,\n",
4335 " 63,\n",
4336 " 72,\n",
4337 " 21,\n",
4338 " 36,\n",
4339 " 23,\n",
4340 " 9,\n",
4341 " 75,\n",
4342 " 0,\n",
4343 " 76,\n",
4344 " 44,\n",
4345 " 20,\n",
4346 " 45,\n",
4347 " 35,\n",
4348 " 14,\n",
4349 " 0,\n",
4350 " 61,\n",
4351 " 33,\n",
4352 " 97,\n",
4353 " 34,\n",
4354 " 31,\n",
4355 " 33,\n",
4356 " 95,\n",
4357 " 78,\n",
4358 " 17,\n",
4359 " 53,\n",
4360 " 28,\n",
4361 " 22,\n",
4362 " 75,\n",
4363 " 31,\n",
4364 " 67,\n",
4365 " 15,\n",
4366 " 94,\n",
4367 " 3,\n",
4368 " 80,\n",
4369 " 4,\n",
4370 " 62,\n",
4371 " 16,\n",
4372 " 14,\n",
4373 " 9,\n",
4374 " 53,\n",
4375 " 56,\n",
4376 " 92,\n",
4377 " 16,\n",
4378 " 39,\n",
4379 " 5,\n",
4380 " 42,\n",
4381 " 96,\n",
4382 " 35,\n",
4383 " 31,\n",
4384 " 47,\n",
4385 " 55,\n",
4386 " 58,\n",
4387 " 88,\n",
4388 " 24,\n",
4389 " 0,\n",
4390 " 17,\n",
4391 " 54,\n",
4392 " 24,\n",
4393 " 36,\n",
4394 " 29,\n",
4395 " 85,\n",
4396 " 57,\n",
4397 " 86,\n",
4398 " 56,\n",
4399 " 0,\n",
4400 " 48,\n",
4401 " 35,\n",
4402 " 71,\n",
4403 " 89,\n",
4404 " 7,\n",
4405 " 5,\n",
4406 " 44,\n",
4407 " 44,\n",
4408 " 37,\n",
4409 " 44,\n",
4410 " 60,\n",
4411 " 21,\n",
4412 " 58,\n",
4413 " 51,\n",
4414 " 54,\n",
4415 " 17,\n",
4416 " 58,\n",
4417 " 19,\n",
4418 " 80,\n",
4419 " 81,\n",
4420 " 68,\n",
4421 " 5,\n",
4422 " 94,\n",
4423 " 47,\n",
4424 " 69,\n",
4425 " 28,\n",
4426 " 73,\n",
4427 " 92,\n",
4428 " 13,\n",
4429 " 86,\n",
4430 " 52,\n",
4431 " 17,\n",
4432 " 77,\n",
4433 " 4,\n",
4434 " 89,\n",
4435 " 55,\n",
4436 " 40,\n",
4437 " 4,\n",
4438 " 52,\n",
4439 " 8,\n",
4440 " 83,\n",
4441 " 97,\n",
4442 " 35,\n",
4443 " 99,\n",
4444 " 16,\n",
4445 " 7,\n",
4446 " 97,\n",
4447 " 57,\n",
4448 " 32,\n",
4449 " 16,\n",
4450 " 26,\n",
4451 " 26,\n",
4452 " 79,\n",
4453 " 33,\n",
4454 " 27,\n",
4455 " 98,\n",
4456 " 66,\n",
4457 " 88,\n",
4458 " 36,\n",
4459 " 68,\n",
4460 " 87,\n",
4461 " 57,\n",
4462 " 62,\n",
4463 " 20,\n",
4464 " 72,\n",
4465 " 3,\n",
4466 " 46,\n",
4467 " 33,\n",
4468 " 67,\n",
4469 " 46,\n",
4470 " 55,\n",
4471 " 12,\n",
4472 " 32,\n",
4473 " 63,\n",
4474 " 93,\n",
4475 " 53,\n",
4476 " 69,\n",
4477 " 4,\n",
4478 " 42,\n",
4479 " 16,\n",
4480 " 73,\n",
4481 " 38,\n",
4482 " 25,\n",
4483 " 39,\n",
4484 " 11,\n",
4485 " 24,\n",
4486 " 94,\n",
4487 " 72,\n",
4488 " 18,\n",
4489 " 8,\n",
4490 " 46,\n",
4491 " 29,\n",
4492 " 32,\n",
4493 " 40,\n",
4494 " 62,\n",
4495 " 76,\n",
4496 " 36,\n",
4497 " 20,\n",
4498 " 69,\n",
4499 " 36,\n",
4500 " 41,\n",
4501 " 72,\n",
4502 " 30,\n",
4503 " 23,\n",
4504 " 88,\n",
4505 " 34,\n",
4506 " 62,\n",
4507 " 99,\n",
4508 " 69,\n",
4509 " 82,\n",
4510 " 67,\n",
4511 " 59,\n",
4512 " 85,\n",
4513 " 74,\n",
4514 " 4,\n",
4515 " 36,\n",
4516 " 16,\n",
4517 " 20,\n",
4518 " 73,\n",
4519 " 35,\n",
4520 " 29,\n",
4521 " 78,\n",
4522 " 31,\n",
4523 " 90,\n",
4524 " 1,\n",
4525 " 74,\n",
4526 " 31,\n",
4527 " 49,\n",
4528 " 71,\n",
4529 " 48,\n",
4530 " 86,\n",
4531 " 81,\n",
4532 " 16,\n",
4533 " 23,\n",
4534 " 57,\n",
4535 " 5,\n",
4536 " 54,\n",
4537 " 1,\n",
4538 " 70,\n",
4539 " 54,\n",
4540 " 71,\n",
4541 " 83,\n",
4542 " 51,\n",
4543 " 54,\n",
4544 " 69,\n",
4545 " 16,\n",
4546 " 92,\n",
4547 " 33,\n",
4548 " 48,\n",
4549 " 61,\n",
4550 " 43,\n",
4551 " 52,\n",
4552 " 1,\n",
4553 " 89,\n",
4554 " 19,\n",
4555 " 67,\n",
4556 " 48]"
4557 ]
4558 }
4559 ],
4560 "prompt_number": 76
4561 },
4562 {
4563 "cell_type": "code",
4564 "collapsed": false,
4565 "input": [
4566 "import collections\n",
4567 "import string\n",
4568 "collections.Counter(l for l in open('sherlock-holmes.txt').read()\n",
4569 " if l in string.ascii_letters)"
4570 ],
4571 "language": "python",
4572 "metadata": {},
4573 "outputs": [
4574 {
4575 "metadata": {},
4576 "output_type": "pyout",
4577 "prompt_number": 51,
4578 "text": [
4579 "Counter({'e': 52876, 't': 37842, 'a': 34376, 'o': 33200, 'n': 28378, 'h': 27803, 's': 26432, 'i': 26366, 'r': 24304, 'd': 18349, 'l': 16854, 'u': 13070, 'm': 11055, 'w': 10508, 'c': 10172, 'y': 8976, 'f': 8785, 'g': 7733, 'p': 6652, 'b': 5883, 'v': 4367, 'I': 3774, 'k': 3465, 'H': 1244, 'T': 1139, 'S': 762, 'A': 761, 'W': 758, 'M': 732, 'x': 541, 'B': 479, 'Y': 455, 'q': 406, 'j': 338, 'C': 327, 'O': 312, 'N': 304, 'L': 291, 'E': 235, 'D': 214, 'R': 204, 'F': 190, 'P': 183, 'G': 154, 'z': 147, 'J': 114, 'V': 85, 'K': 78, 'U': 46, 'Q': 20, 'X': 8, 'Z': 2})"
4580 ]
4581 }
4582 ],
4583 "prompt_number": 51
4584 },
4585 {
4586 "cell_type": "code",
4587 "collapsed": false,
4588 "input": [
4589 "import collections\n",
4590 "import string\n",
4591 "c = collections.Counter(l.lower() for l in open('sherlock-holmes.txt').read()\n",
4592 " if l in string.ascii_letters)\n",
4593 "[(l, c[l]) for l in sorted(c)]"
4594 ],
4595 "language": "python",
4596 "metadata": {},
4597 "outputs": [
4598 {
4599 "metadata": {},
4600 "output_type": "pyout",
4601 "prompt_number": 50,
4602 "text": [
4603 "[('a', 35137),\n",
4604 " ('b', 6362),\n",
4605 " ('c', 10499),\n",
4606 " ('d', 18563),\n",
4607 " ('e', 53111),\n",
4608 " ('f', 8975),\n",
4609 " ('g', 7887),\n",
4610 " ('h', 29047),\n",
4611 " ('i', 30140),\n",
4612 " ('j', 452),\n",
4613 " ('k', 3543),\n",
4614 " ('l', 17145),\n",
4615 " ('m', 11787),\n",
4616 " ('n', 28682),\n",
4617 " ('o', 33512),\n",
4618 " ('p', 6835),\n",
4619 " ('q', 426),\n",
4620 " ('r', 24508),\n",
4621 " ('s', 27194),\n",
4622 " ('t', 38981),\n",
4623 " ('u', 13116),\n",
4624 " ('v', 4452),\n",
4625 " ('w', 11266),\n",
4626 " ('x', 549),\n",
4627 " ('y', 9431),\n",
4628 " ('z', 149)]"
4629 ]
4630 }
4631 ],
4632 "prompt_number": 50
4633 },
4634 {
4635 "cell_type": "code",
4636 "collapsed": false,
4637 "input": [
4638 "import random\n",
4639 "import collections\n",
4640 "import string"
4641 ],
4642 "language": "python",
4643 "metadata": {},
4644 "outputs": [],
4645 "prompt_number": 52
4646 },
4647 {
4648 "cell_type": "code",
4649 "collapsed": false,
4650 "input": [
4651 "def only_lower_case(str):\n",
4652 " ???\n",
4653 " return ???"
4654 ],
4655 "language": "python",
4656 "metadata": {},
4657 "outputs": []
4658 },
4659 {
4660 "cell_type": "code",
4661 "collapsed": false,
4662 "input": [
4663 "words = [line.strip() \n",
4664 " for line in open('/usr/share/dict/british-english').readlines()\n",
4665 " if only_lower_case(line)]\n",
4666 "words[:20]"
4667 ],
4668 "language": "python",
4669 "metadata": {},
4670 "outputs": [
4671 {
4672 "metadata": {},
4673 "output_type": "pyout",
4674 "prompt_number": 57,
4675 "text": [
4676 "['A',\n",
4677 " \"A's\",\n",
4678 " \"AA's\",\n",
4679 " \"AB's\",\n",
4680 " \"ABM's\",\n",
4681 " \"AC's\",\n",
4682 " \"ACTH's\",\n",
4683 " \"AI's\",\n",
4684 " \"AIDS's\",\n",
4685 " \"AM's\",\n",
4686 " 'AOL',\n",
4687 " \"AOL's\",\n",
4688 " \"ASCII's\",\n",
4689 " \"ASL's\",\n",
4690 " \"ATM's\",\n",
4691 " \"ATP's\",\n",
4692 " \"AWOL's\",\n",
4693 " \"AZ's\",\n",
4694 " \"AZT's\",\n",
4695 " 'Aachen']"
4696 ]
4697 }
4698 ],
4699 "prompt_number": 57
4700 },
4701 {
4702 "cell_type": "code",
4703 "collapsed": false,
4704 "input": [
4705 "string.ascii_letters"
4706 ],
4707 "language": "python",
4708 "metadata": {},
4709 "outputs": [
4710 {
4711 "metadata": {},
4712 "output_type": "pyout",
4713 "prompt_number": 58,
4714 "text": [
4715 "'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'"
4716 ]
4717 }
4718 ],
4719 "prompt_number": 58
4720 },
4721 {
4722 "cell_type": "code",
4723 "collapsed": false,
4724 "input": [
4725 "string.ascii_lowercase"
4726 ],
4727 "language": "python",
4728 "metadata": {},
4729 "outputs": [
4730 {
4731 "metadata": {},
4732 "output_type": "pyout",
4733 "prompt_number": 60,
4734 "text": [
4735 "'abcdefghijklmnopqrstuvwxyz'"
4736 ]
4737 }
4738 ],
4739 "prompt_number": 60
4740 },
4741 {
4742 "cell_type": "code",
4743 "collapsed": false,
4744 "input": [
4745 "string.ascii_uppercase"
4746 ],
4747 "language": "python",
4748 "metadata": {},
4749 "outputs": [
4750 {
4751 "metadata": {},
4752 "output_type": "pyout",
4753 "prompt_number": 61,
4754 "text": [
4755 "'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"
4756 ]
4757 }
4758 ],
4759 "prompt_number": 61
4760 },
4761 {
4762 "cell_type": "code",
4763 "collapsed": false,
4764 "input": [
4765 "string.punctuation"
4766 ],
4767 "language": "python",
4768 "metadata": {},
4769 "outputs": [
4770 {
4771 "metadata": {},
4772 "output_type": "pyout",
4773 "prompt_number": 62,
4774 "text": [
4775 "'!\"#$%&\\'()*+,-./:;<=>?@[\\\\]^_`{|}~'"
4776 ]
4777 }
4778 ],
4779 "prompt_number": 62
4780 },
4781 {
4782 "cell_type": "code",
4783 "collapsed": false,
4784 "input": [
4785 "'b' in string.ascii_lowercase"
4786 ],
4787 "language": "python",
4788 "metadata": {},
4789 "outputs": [
4790 {
4791 "metadata": {},
4792 "output_type": "pyout",
4793 "prompt_number": 63,
4794 "text": [
4795 "True"
4796 ]
4797 }
4798 ],
4799 "prompt_number": 63
4800 },
4801 {
4802 "cell_type": "code",
4803 "collapsed": false,
4804 "input": [
4805 "'B' in string.ascii_lowercase"
4806 ],
4807 "language": "python",
4808 "metadata": {},
4809 "outputs": [
4810 {
4811 "metadata": {},
4812 "output_type": "pyout",
4813 "prompt_number": 64,
4814 "text": [
4815 "False"
4816 ]
4817 }
4818 ],
4819 "prompt_number": 64
4820 },
4821 {
4822 "cell_type": "code",
4823 "collapsed": false,
4824 "input": [
4825 "[l for l in 'hello']"
4826 ],
4827 "language": "python",
4828 "metadata": {},
4829 "outputs": [
4830 {
4831 "metadata": {},
4832 "output_type": "pyout",
4833 "prompt_number": 65,
4834 "text": [
4835 "['h', 'e', 'l', 'l', 'o']"
4836 ]
4837 }
4838 ],
4839 "prompt_number": 65
4840 },
4841 {
4842 "cell_type": "code",
4843 "collapsed": false,
4844 "input": [
4845 "for l in 'hello':\n",
4846 " print(l)"
4847 ],
4848 "language": "python",
4849 "metadata": {},
4850 "outputs": [
4851 {
4852 "output_type": "stream",
4853 "stream": "stdout",
4854 "text": [
4855 "h\n",
4856 "e\n",
4857 "l\n",
4858 "l\n",
4859 "o\n"
4860 ]
4861 }
4862 ],
4863 "prompt_number": 66
4864 },
4865 {
4866 "cell_type": "code",
4867 "collapsed": false,
4868 "input": [
4869 "'b' not in string.ascii_lowercase"
4870 ],
4871 "language": "python",
4872 "metadata": {},
4873 "outputs": [
4874 {
4875 "metadata": {},
4876 "output_type": "pyout",
4877 "prompt_number": 67,
4878 "text": [
4879 "False"
4880 ]
4881 }
4882 ],
4883 "prompt_number": 67
4884 },
4885 {
4886 "cell_type": "code",
4887 "collapsed": false,
4888 "input": [
4889 "'B' not in string.ascii_lowercase"
4890 ],
4891 "language": "python",
4892 "metadata": {},
4893 "outputs": [
4894 {
4895 "metadata": {},
4896 "output_type": "pyout",
4897 "prompt_number": 68,
4898 "text": [
4899 "True"
4900 ]
4901 }
4902 ],
4903 "prompt_number": 68
4904 },
4905 {
4906 "cell_type": "code",
4907 "collapsed": false,
4908 "input": [],
4909 "language": "python",
4910 "metadata": {},
4911 "outputs": []
4912 }
4913 ],
4914 "metadata": {}
4915 }
4916 ]
4917 }