Done Cadenus ciphers, but not automated breaking
[cipher-training.git] / 2014-challenge8.ipynb
1 {
2 "metadata": {
3 "name": "",
4 "signature": "sha256:552bea7734ea4d4e21f21be2dca0f09009e1c1eb9a767ab8c6c8097144b76db4"
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 matplotlib.pyplot as plt\n",
16 "import pandas as pd\n",
17 "import collections\n",
18 "import string\n",
19 "%matplotlib inline\n",
20 "\n",
21 "from cipherbreak import *\n",
22 "\n",
23 "c8a = open('2014/8a.ciphertext').read()\n",
24 "c8b = open('2014/8b.ciphertext').read().strip()"
25 ],
26 "language": "python",
27 "metadata": {},
28 "outputs": [],
29 "prompt_number": 1
30 },
31 {
32 "cell_type": "code",
33 "collapsed": false,
34 "input": [
35 "freqs = pd.Series(english_counts)\n",
36 "freqs.plot(kind='bar')"
37 ],
38 "language": "python",
39 "metadata": {},
40 "outputs": [
41 {
42 "metadata": {},
43 "output_type": "pyout",
44 "prompt_number": 2,
45 "text": [
46 "<matplotlib.axes.AxesSubplot at 0x7f2de7d75e10>"
47 ]
48 },
49 {
50 "metadata": {},
51 "output_type": "display_data",
52 "png": "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\nTkSuQmCC\n",
53 "text": [
54 "<matplotlib.figure.Figure at 0x7f2e1c1ae978>"
55 ]
56 }
57 ],
58 "prompt_number": 2
59 },
60 {
61 "cell_type": "code",
62 "collapsed": false,
63 "input": [
64 "freqs_8a = pd.Series(collections.Counter([l.lower() for l in c8a if l in string.ascii_letters]))\n",
65 "freqs_8a.plot(kind='bar')"
66 ],
67 "language": "python",
68 "metadata": {},
69 "outputs": [
70 {
71 "metadata": {},
72 "output_type": "pyout",
73 "prompt_number": 3,
74 "text": [
75 "<matplotlib.axes.AxesSubplot at 0x7f2de514fba8>"
76 ]
77 },
78 {
79 "metadata": {},
80 "output_type": "display_data",
81 "png": "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\nTkSuQmCC\n",
82 "text": [
83 "<matplotlib.figure.Figure at 0x7f2de5155a58>"
84 ]
85 }
86 ],
87 "prompt_number": 3
88 },
89 {
90 "cell_type": "code",
91 "collapsed": false,
92 "input": [
93 "c8as = sanitise(c8a)\n",
94 "c8as"
95 ],
96 "language": "python",
97 "metadata": {},
98 "outputs": [
99 {
100 "metadata": {},
101 "output_type": "pyout",
102 "prompt_number": 4,
103 "text": [
104 "'nyvlggsyglchxfeuytqcesqxpziufiggrbjhpayncruyfpsxufiupskyrectmmcncruyregxigrlglbtiblmecebzsvrlpuxpbibjajrljreobajrlufigjehbezywtmgjyxfqxictsgrdgtbjafyoocwtmjblctwwucqmgofrlfmrfrlfwlbtijlwuypmchjqxicrfchumtsmzjbimyvhcuvyrugxjcwpdtpuisrlfdhbaencyqumufeogrhcrjmytqsmsxjmrcsxjrmttiswzvjrfpecjitnidgemdssaitasvjhuyofgxpsxgmvvqfvrxiyxxmymbxfjpufigbeufeuuiiyzfavbaofbxicmsamqfisqwpgrtribbmtskhcwuuimcxufinbitrvpwxsmnbljppytuixgpmlifbgpmtfpeugsodvpkxicsnyrjeswcvokioreoyvnchggkirishiuyrerlfdpjeluasorvpjwzqxfkwgpsnyhsmrfkiblaigpfuiociersflwvpiuusufmoewpliufeuuiemrprwflhdpmuggbjmodsskeugsoygsmwtrlfzecypnyreyftrvbgxblhuusufeuuivqiblsoavjrmdyplcchcrfpeugsonvprsdmpplxiyxdfeolimemwcrufimczfjsgasnkmukiorxicjeylbtitfsxlmobiwcppnmoexigwqjeogenqyscxiyxufizummjvfgrtreucxictpuisqyqnpzumufmoyjfuqplxiqfvrajrlmsglrlfwajjpomxhsitqxiyxxcoomabzsvrmuyreuixgpmnyugxpsxpdfvqmocwtdssjsoeiomyhfxpasncyqumufeqjeomjpsvpurumiynppgxjrmorlfkiblxjkixcrpuoomaufeurlfgvigkicwuqidsvjrcdmqnsrjaeugsoqescioavznxfbytgrhygbbioswdgticvtmafaeoqxbpxisrugrhrlsmyhfxichbrecywfdssmxicvjlxfpgfnxtuidyrdpedixigwnycccxicfscelrlsmyhfaffewcffcrmmslgrhdssgrufiggkirehymoqxufigbemcxtlsuqgscajryqypmrlfzitrlbpvz'"
105 ]
106 }
107 ],
108 "prompt_number": 4
109 },
110 {
111 "cell_type": "code",
112 "collapsed": false,
113 "input": [
114 "key_a, score = vigenere_frequency_break(c8as)\n",
115 "key_a, score"
116 ],
117 "language": "python",
118 "metadata": {},
119 "outputs": [
120 {
121 "metadata": {},
122 "output_type": "pyout",
123 "prompt_number": 5,
124 "text": [
125 "('bye', -1461.9840974270046)"
126 ]
127 }
128 ],
129 "prompt_number": 5
130 },
131 {
132 "cell_type": "code",
133 "collapsed": false,
134 "input": [
135 "' '.join(segment(vigenere_decipher(c8as, key_a)))"
136 ],
137 "language": "python",
138 "metadata": {},
139 "outputs": [
140 {
141 "metadata": {},
142 "output_type": "pyout",
143 "prompt_number": 6,
144 "text": [
145 "'mark i cracked what appears to be the final document about the trojan deployment and i think i have an idea about how to deal with it and with the flag day associates the principal weakness of any system like the one they have installed is the need to provide large quantities of power the fda came up with an ingenious solution but it is very vulnerable special forces could take it out for us but that would tell the fda that we have cracked their ciphers so instead i suggest we let them destroy trojan for us we will need cooperation from the omani government an armed fighter jet and the flight control systems from a drone meanwhile we need to ensure two things one that we do not send critical information across the ba balm and abstrait and two that we use an on critical key generation protocol on that channel given the level of commitment the fda have shown in developing this plan i am sure that they will reinstate the powersupply within a few months but with luck they will not guess that we know about it and we will put it out of business for long enough to come up with a plan of our own to exploit it in the meantime we now know that their highest security communications are encrypted using a caden us cipher so we can start hunting through the database for other intercepts we can crack this maybe the breakthrough we have been looking for in the fight against the fda lets not screw it up all the best harry'"
146 ]
147 }
148 ],
149 "prompt_number": 6
150 },
151 {
152 "cell_type": "code",
153 "collapsed": false,
154 "input": [
155 "len(c8b) / 8"
156 ],
157 "language": "python",
158 "metadata": {},
159 "outputs": [
160 {
161 "metadata": {},
162 "output_type": "pyout",
163 "prompt_number": 7,
164 "text": [
165 "875.0"
166 ]
167 }
168 ],
169 "prompt_number": 7
170 },
171 {
172 "cell_type": "code",
173 "collapsed": false,
174 "input": [
175 "[c for c in chunks(c8b, 5)]"
176 ],
177 "language": "python",
178 "metadata": {},
179 "outputs": [
180 {
181 "metadata": {},
182 "output_type": "pyout",
183 "prompt_number": 8,
184 "text": [
185 "['00000',\n",
186 " '00101',\n",
187 " '00010',\n",
188 " '00000',\n",
189 " '00100',\n",
190 " '10100',\n",
191 " '01110',\n",
192 " '10011',\n",
193 " '10011',\n",
194 " '00000',\n",
195 " '00010',\n",
196 " '10011',\n",
197 " '00111',\n",
198 " '10001',\n",
199 " '01000',\n",
200 " '01110',\n",
201 " '01011',\n",
202 " '00100',\n",
203 " '10011',\n",
204 " '00010',\n",
205 " '10010',\n",
206 " '00100',\n",
207 " '10001',\n",
208 " '10011',\n",
209 " '00111',\n",
210 " '10010',\n",
211 " '00111',\n",
212 " '10011',\n",
213 " '10001',\n",
214 " '00000',\n",
215 " '00111',\n",
216 " '01010',\n",
217 " '11000',\n",
218 " '01110',\n",
219 " '10001',\n",
220 " '01111',\n",
221 " '00101',\n",
222 " '10001',\n",
223 " '00110',\n",
224 " '00100',\n",
225 " '01110',\n",
226 " '00000',\n",
227 " '00011',\n",
228 " '01111',\n",
229 " '01111',\n",
230 " '01001',\n",
231 " '01101',\n",
232 " '00110',\n",
233 " '01011',\n",
234 " '10011',\n",
235 " '00100',\n",
236 " '10001',\n",
237 " '01101',\n",
238 " '00100',\n",
239 " '00101',\n",
240 " '00100',\n",
241 " '01110',\n",
242 " '00101',\n",
243 " '01000',\n",
244 " '01110',\n",
245 " '10001',\n",
246 " '10011',\n",
247 " '10010',\n",
248 " '00011',\n",
249 " '00011',\n",
250 " '01110',\n",
251 " '00100',\n",
252 " '00100',\n",
253 " '10100',\n",
254 " '01100',\n",
255 " '10010',\n",
256 " '00010',\n",
257 " '10001',\n",
258 " '10100',\n",
259 " '00100',\n",
260 " '10001',\n",
261 " '01101',\n",
262 " '00101',\n",
263 " '00100',\n",
264 " '10011',\n",
265 " '01011',\n",
266 " '00000',\n",
267 " '00000',\n",
268 " '00101',\n",
269 " '10010',\n",
270 " '10011',\n",
271 " '10110',\n",
272 " '01000',\n",
273 " '00100',\n",
274 " '01101',\n",
275 " '10011',\n",
276 " '10001',\n",
277 " '10101',\n",
278 " '01110',\n",
279 " '01110',\n",
280 " '01101',\n",
281 " '00100',\n",
282 " '10001',\n",
283 " '00111',\n",
284 " '10100',\n",
285 " '00000',\n",
286 " '00111',\n",
287 " '10001',\n",
288 " '00000',\n",
289 " '10101',\n",
290 " '00100',\n",
291 " '10001',\n",
292 " '00100',\n",
293 " '00100',\n",
294 " '10011',\n",
295 " '10010',\n",
296 " '10101',\n",
297 " '10010',\n",
298 " '01000',\n",
299 " '00100',\n",
300 " '01011',\n",
301 " '00111',\n",
302 " '01011',\n",
303 " '01110',\n",
304 " '10010',\n",
305 " '10011',\n",
306 " '00011',\n",
307 " '01110',\n",
308 " '00000',\n",
309 " '01011',\n",
310 " '01110',\n",
311 " '11000',\n",
312 " '00000',\n",
313 " '00100',\n",
314 " '10010',\n",
315 " '01100',\n",
316 " '01101',\n",
317 " '01101',\n",
318 " '00011',\n",
319 " '01000',\n",
320 " '00110',\n",
321 " '01101',\n",
322 " '01101',\n",
323 " '10001',\n",
324 " '00111',\n",
325 " '01110',\n",
326 " '00111',\n",
327 " '00111',\n",
328 " '10011',\n",
329 " '10010',\n",
330 " '01101',\n",
331 " '00000',\n",
332 " '01110',\n",
333 " '01000',\n",
334 " '01011',\n",
335 " '01101',\n",
336 " '00010',\n",
337 " '01101',\n",
338 " '10010',\n",
339 " '10010',\n",
340 " '01000',\n",
341 " '00010',\n",
342 " '10001',\n",
343 " '00100',\n",
344 " '00000',\n",
345 " '01101',\n",
346 " '01101',\n",
347 " '00100',\n",
348 " '00100',\n",
349 " '01000',\n",
350 " '01000',\n",
351 " '01000',\n",
352 " '00100',\n",
353 " '10001',\n",
354 " '10110',\n",
355 " '10011',\n",
356 " '00000',\n",
357 " '01101',\n",
358 " '00100',\n",
359 " '10010',\n",
360 " '10001',\n",
361 " '10101',\n",
362 " '01110',\n",
363 " '00110',\n",
364 " '01000',\n",
365 " '00100',\n",
366 " '01000',\n",
367 " '11000',\n",
368 " '10110',\n",
369 " '10010',\n",
370 " '10010',\n",
371 " '00011',\n",
372 " '00110',\n",
373 " '01111',\n",
374 " '10101',\n",
375 " '01110',\n",
376 " '01000',\n",
377 " '00000',\n",
378 " '01000',\n",
379 " '10010',\n",
380 " '00000',\n",
381 " '01110',\n",
382 " '00000',\n",
383 " '00100',\n",
384 " '01110',\n",
385 " '00000',\n",
386 " '00100',\n",
387 " '00011',\n",
388 " '10001',\n",
389 " '01101',\n",
390 " '01000',\n",
391 " '10011',\n",
392 " '10001',\n",
393 " '01101',\n",
394 " '10111',\n",
395 " '00100',\n",
396 " '01000',\n",
397 " '00110',\n",
398 " '10001',\n",
399 " '01111',\n",
400 " '10010',\n",
401 " '10010',\n",
402 " '00111',\n",
403 " '00000',\n",
404 " '00011',\n",
405 " '00111',\n",
406 " '00011',\n",
407 " '10011',\n",
408 " '01110',\n",
409 " '01000',\n",
410 " '01111',\n",
411 " '00000',\n",
412 " '00000',\n",
413 " '10011',\n",
414 " '00100',\n",
415 " '10111',\n",
416 " '00100',\n",
417 " '01101',\n",
418 " '01101',\n",
419 " '00100',\n",
420 " '10010',\n",
421 " '00000',\n",
422 " '00110',\n",
423 " '10001',\n",
424 " '01110',\n",
425 " '00001',\n",
426 " '10011',\n",
427 " '01011',\n",
428 " '00100',\n",
429 " '10010',\n",
430 " '10001',\n",
431 " '01101',\n",
432 " '10001',\n",
433 " '01110',\n",
434 " '01000',\n",
435 " '10001',\n",
436 " '11000',\n",
437 " '01111',\n",
438 " '00001',\n",
439 " '00110',\n",
440 " '00100',\n",
441 " '00011',\n",
442 " '00010',\n",
443 " '01011',\n",
444 " '01011',\n",
445 " '01000',\n",
446 " '10110',\n",
447 " '00000',\n",
448 " '01011',\n",
449 " '00000',\n",
450 " '01011',\n",
451 " '00100',\n",
452 " '00100',\n",
453 " '01101',\n",
454 " '01000',\n",
455 " '00110',\n",
456 " '10001',\n",
457 " '10001',\n",
458 " '01101',\n",
459 " '10110',\n",
460 " '11000',\n",
461 " '10001',\n",
462 " '01011',\n",
463 " '01000',\n",
464 " '01100',\n",
465 " '01011',\n",
466 " '01111',\n",
467 " '10010',\n",
468 " '10011',\n",
469 " '01110',\n",
470 " '01011',\n",
471 " '00100',\n",
472 " '00101',\n",
473 " '10011',\n",
474 " '10001',\n",
475 " '00011',\n",
476 " '01100',\n",
477 " '10100',\n",
478 " '00000',\n",
479 " '10001',\n",
480 " '01000',\n",
481 " '00100',\n",
482 " '00100',\n",
483 " '00100',\n",
484 " '01000',\n",
485 " '01000',\n",
486 " '00000',\n",
487 " '01110',\n",
488 " '01011',\n",
489 " '01101',\n",
490 " '00100',\n",
491 " '10110',\n",
492 " '10010',\n",
493 " '00000',\n",
494 " '01110',\n",
495 " '00111',\n",
496 " '10001',\n",
497 " '10011',\n",
498 " '01011',\n",
499 " '10010',\n",
500 " '10011',\n",
501 " '01110',\n",
502 " '00001',\n",
503 " '00100',\n",
504 " '10011',\n",
505 " '01101',\n",
506 " '10010',\n",
507 " '01011',\n",
508 " '10101',\n",
509 " '00101',\n",
510 " '01000',\n",
511 " '10101',\n",
512 " '00011',\n",
513 " '01110',\n",
514 " '10101',\n",
515 " '10011',\n",
516 " '01111',\n",
517 " '01110',\n",
518 " '00000',\n",
519 " '00100',\n",
520 " '00100',\n",
521 " '01000',\n",
522 " '10010',\n",
523 " '00010',\n",
524 " '01000',\n",
525 " '01110',\n",
526 " '00111',\n",
527 " '01000',\n",
528 " '01111',\n",
529 " '10010',\n",
530 " '00100',\n",
531 " '10101',\n",
532 " '00100',\n",
533 " '00100',\n",
534 " '00011',\n",
535 " '10011',\n",
536 " '00100',\n",
537 " '10110',\n",
538 " '00101',\n",
539 " '00000',\n",
540 " '10001',\n",
541 " '01101',\n",
542 " '00111',\n",
543 " '00100',\n",
544 " '00001',\n",
545 " '01011',\n",
546 " '00100',\n",
547 " '00000',\n",
548 " '01110',\n",
549 " '10011',\n",
550 " '01110',\n",
551 " '00111',\n",
552 " '10011',\n",
553 " '10011',\n",
554 " '10011',\n",
555 " '00100',\n",
556 " '01111',\n",
557 " '01101',\n",
558 " '00010',\n",
559 " '01010',\n",
560 " '00000',\n",
561 " '01110',\n",
562 " '01101',\n",
563 " '00111',\n",
564 " '10110',\n",
565 " '00100',\n",
566 " '10011',\n",
567 " '01100',\n",
568 " '10101',\n",
569 " '11000',\n",
570 " '01111',\n",
571 " '10001',\n",
572 " '10001',\n",
573 " '00100',\n",
574 " '01110',\n",
575 " '01101',\n",
576 " '01101',\n",
577 " '00000',\n",
578 " '10010',\n",
579 " '00110',\n",
580 " '00011',\n",
581 " '00100',\n",
582 " '00011',\n",
583 " '01110',\n",
584 " '00100',\n",
585 " '00100',\n",
586 " '00100',\n",
587 " '01110',\n",
588 " '00000',\n",
589 " '00000',\n",
590 " '01100',\n",
591 " '10011',\n",
592 " '00010',\n",
593 " '01000',\n",
594 " '00010',\n",
595 " '10011',\n",
596 " '10011',\n",
597 " '01000',\n",
598 " '00101',\n",
599 " '01101',\n",
600 " '00000',\n",
601 " '00011',\n",
602 " '10001',\n",
603 " '00100',\n",
604 " '10010',\n",
605 " '10001',\n",
606 " '10011',\n",
607 " '10010',\n",
608 " '00100',\n",
609 " '10001',\n",
610 " '01110',\n",
611 " '10010',\n",
612 " '00100',\n",
613 " '10011',\n",
614 " '10001',\n",
615 " '00111',\n",
616 " '00010',\n",
617 " '01000',\n",
618 " '00010',\n",
619 " '10011',\n",
620 " '01111',\n",
621 " '10010',\n",
622 " '00000',\n",
623 " '00000',\n",
624 " '00100',\n",
625 " '00111',\n",
626 " '01011',\n",
627 " '00011',\n",
628 " '00111',\n",
629 " '10010',\n",
630 " '00101',\n",
631 " '10111',\n",
632 " '10010',\n",
633 " '01110',\n",
634 " '00000',\n",
635 " '01110',\n",
636 " '10011',\n",
637 " '00010',\n",
638 " '10011',\n",
639 " '00001',\n",
640 " '00001',\n",
641 " '10010',\n",
642 " '01110',\n",
643 " '00100',\n",
644 " '01000',\n",
645 " '10001',\n",
646 " '01101',\n",
647 " '10010',\n",
648 " '00000',\n",
649 " '00011',\n",
650 " '01011',\n",
651 " '11000',\n",
652 " '10011',\n",
653 " '10001',\n",
654 " '10001',\n",
655 " '10100',\n",
656 " '01101',\n",
657 " '10001',\n",
658 " '00010',\n",
659 " '00100',\n",
660 " '01111',\n",
661 " '10011',\n",
662 " '10011',\n",
663 " '00111',\n",
664 " '10001',\n",
665 " '00100',\n",
666 " '10100',\n",
667 " '00111',\n",
668 " '01101',\n",
669 " '01010',\n",
670 " '10011',\n",
671 " '00000',\n",
672 " '00010',\n",
673 " '00100',\n",
674 " '00010',\n",
675 " '00100',\n",
676 " '00100',\n",
677 " '01011',\n",
678 " '10001',\n",
679 " '10110',\n",
680 " '01101',\n",
681 " '01000',\n",
682 " '10001',\n",
683 " '00100',\n",
684 " '00100',\n",
685 " '00100',\n",
686 " '00000',\n",
687 " '00100',\n",
688 " '10010',\n",
689 " '00100',\n",
690 " '00100',\n",
691 " '00100',\n",
692 " '01000',\n",
693 " '00011',\n",
694 " '01000',\n",
695 " '10010',\n",
696 " '01110',\n",
697 " '00110',\n",
698 " '00010',\n",
699 " '00100',\n",
700 " '01110',\n",
701 " '01100',\n",
702 " '01101',\n",
703 " '10001',\n",
704 " '10011',\n",
705 " '00100',\n",
706 " '01001',\n",
707 " '00111',\n",
708 " '00000',\n",
709 " '00110',\n",
710 " '00000',\n",
711 " '00001',\n",
712 " '10010',\n",
713 " '00100',\n",
714 " '01101',\n",
715 " '01000',\n",
716 " '10011',\n",
717 " '01011',\n",
718 " '10110',\n",
719 " '10011',\n",
720 " '10001',\n",
721 " '01101',\n",
722 " '00001',\n",
723 " '01100',\n",
724 " '01000',\n",
725 " '00100',\n",
726 " '01011',\n",
727 " '10010',\n",
728 " '00000',\n",
729 " '10001',\n",
730 " '00100',\n",
731 " '10011',\n",
732 " '00100',\n",
733 " '10010',\n",
734 " '10001',\n",
735 " '01101',\n",
736 " '00110',\n",
737 " '10010',\n",
738 " '01101',\n",
739 " '00111',\n",
740 " '00100',\n",
741 " '00001',\n",
742 " '01000',\n",
743 " '01110',\n",
744 " '10010',\n",
745 " '00011',\n",
746 " '01000',\n",
747 " '00100',\n",
748 " '01101',\n",
749 " '00000',\n",
750 " '00101',\n",
751 " '01011',\n",
752 " '00100',\n",
753 " '01000',\n",
754 " '10010',\n",
755 " '00000',\n",
756 " '00111',\n",
757 " '01110',\n",
758 " '00010',\n",
759 " '01000',\n",
760 " '00101',\n",
761 " '00100',\n",
762 " '10101',\n",
763 " '01100',\n",
764 " '00101',\n",
765 " '00000',\n",
766 " '10011',\n",
767 " '00000',\n",
768 " '01101',\n",
769 " '00000',\n",
770 " '10011',\n",
771 " '10001',\n",
772 " '01101',\n",
773 " '01000',\n",
774 " '00000',\n",
775 " '00110',\n",
776 " '01101',\n",
777 " '00111',\n",
778 " '00000',\n",
779 " '10011',\n",
780 " '01101',\n",
781 " '01100',\n",
782 " '01000',\n",
783 " '00001',\n",
784 " '01101',\n",
785 " '01000',\n",
786 " '10100',\n",
787 " '00101',\n",
788 " '00100',\n",
789 " '01101',\n",
790 " '10001',\n",
791 " '10011',\n",
792 " '01110',\n",
793 " '10011',\n",
794 " '10011',\n",
795 " '10001',\n",
796 " '01101',\n",
797 " '11000',\n",
798 " '01111',\n",
799 " '00000',\n",
800 " '01000',\n",
801 " '00011',\n",
802 " '11000',\n",
803 " '01000',\n",
804 " '00100',\n",
805 " '00110',\n",
806 " '00011',\n",
807 " '01101',\n",
808 " '01100',\n",
809 " '00100',\n",
810 " '10001',\n",
811 " '00111',\n",
812 " '00111',\n",
813 " '01000',\n",
814 " '01110',\n",
815 " '10011',\n",
816 " '10001',\n",
817 " '00100',\n",
818 " '10011',\n",
819 " '00010',\n",
820 " '00100',\n",
821 " '10010',\n",
822 " '10010',\n",
823 " '00100',\n",
824 " '01000',\n",
825 " '01011',\n",
826 " '00011',\n",
827 " '10001',\n",
828 " '00001',\n",
829 " '00010',\n",
830 " '00100',\n",
831 " '01111',\n",
832 " '10001',\n",
833 " '01000',\n",
834 " '00110',\n",
835 " '00000',\n",
836 " '00100',\n",
837 " '10010',\n",
838 " '01110',\n",
839 " '00000',\n",
840 " '00011',\n",
841 " '01011',\n",
842 " '10011',\n",
843 " '00000',\n",
844 " '00111',\n",
845 " '01000',\n",
846 " '00100',\n",
847 " '10101',\n",
848 " '00100',\n",
849 " '00001',\n",
850 " '10001',\n",
851 " '00010',\n",
852 " '00100',\n",
853 " '01101',\n",
854 " '01011',\n",
855 " '00100',\n",
856 " '10101',\n",
857 " '00000',\n",
858 " '10010',\n",
859 " '00000',\n",
860 " '00011',\n",
861 " '01101',\n",
862 " '01101',\n",
863 " '10011',\n",
864 " '00111',\n",
865 " '01101',\n",
866 " '00100',\n",
867 " '01000',\n",
868 " '10011',\n",
869 " '00100',\n",
870 " '01000',\n",
871 " '01000',\n",
872 " '10010',\n",
873 " '00000',\n",
874 " '00111',\n",
875 " '10100',\n",
876 " '00111',\n",
877 " '00111',\n",
878 " '10100',\n",
879 " '00000',\n",
880 " '01100',\n",
881 " '01110',\n",
882 " '01101',\n",
883 " '00100',\n",
884 " '00101',\n",
885 " '11000',\n",
886 " '00111',\n",
887 " '01011',\n",
888 " '01110',\n",
889 " '01101',\n",
890 " '10110',\n",
891 " '00111',\n",
892 " '00000',\n",
893 " '00100',\n",
894 " '00100',\n",
895 " '00100',\n",
896 " '00100',\n",
897 " '01110',\n",
898 " '10010',\n",
899 " '01101',\n",
900 " '00100',\n",
901 " '00100',\n",
902 " '11000',\n",
903 " '00000',\n",
904 " '01101',\n",
905 " '00100',\n",
906 " '01000',\n",
907 " '10010',\n",
908 " '00100',\n",
909 " '10011',\n",
910 " '01110',\n",
911 " '00110',\n",
912 " '11000',\n",
913 " '01000',\n",
914 " '10011',\n",
915 " '00100',\n",
916 " '10001',\n",
917 " '01011',\n",
918 " '01000',\n",
919 " '00111',\n",
920 " '10011',\n",
921 " '00010',\n",
922 " '01100',\n",
923 " '01000',\n",
924 " '01110',\n",
925 " '01000',\n",
926 " '10001',\n",
927 " '00000',\n",
928 " '10001',\n",
929 " '00101',\n",
930 " '00011',\n",
931 " '01110',\n",
932 " '00100',\n",
933 " '10011',\n",
934 " '01101',\n",
935 " '01000',\n",
936 " '00111',\n",
937 " '10011',\n",
938 " '01101',\n",
939 " '00100',\n",
940 " '00111',\n",
941 " '01000',\n",
942 " '01000',\n",
943 " '01010',\n",
944 " '00000',\n",
945 " '01100',\n",
946 " '10001',\n",
947 " '00011',\n",
948 " '01100',\n",
949 " '01101',\n",
950 " '00000',\n",
951 " '00011',\n",
952 " '00000',\n",
953 " '01101',\n",
954 " '00000',\n",
955 " '01110',\n",
956 " '00011',\n",
957 " '10010',\n",
958 " '00100',\n",
959 " '10010',\n",
960 " '00100',\n",
961 " '01000',\n",
962 " '11000',\n",
963 " '00010',\n",
964 " '01011',\n",
965 " '10010',\n",
966 " '01000',\n",
967 " '00000',\n",
968 " '01101',\n",
969 " '10011',\n",
970 " '00000',\n",
971 " '01110',\n",
972 " '01011',\n",
973 " '10011',\n",
974 " '00010',\n",
975 " '01000',\n",
976 " '11000',\n",
977 " '01100',\n",
978 " '01000',\n",
979 " '00011',\n",
980 " '00100',\n",
981 " '01101',\n",
982 " '10011',\n",
983 " '10011',\n",
984 " '00111',\n",
985 " '01011',\n",
986 " '10011',\n",
987 " '01101',\n",
988 " '00011',\n",
989 " '10111',\n",
990 " '10011',\n",
991 " '10011',\n",
992 " '10011',\n",
993 " '01100',\n",
994 " '00000',\n",
995 " '10010',\n",
996 " '00001',\n",
997 " '01011',\n",
998 " '00100',\n",
999 " '00000',\n",
1000 " '00100',\n",
1001 " '00100',\n",
1002 " '10011',\n",
1003 " '01011',\n",
1004 " '01000',\n",
1005 " '10010',\n",
1006 " '01000',\n",
1007 " '10001',\n",
1008 " '10011',\n",
1009 " '10110',\n",
1010 " '10011',\n",
1011 " '10100',\n",
1012 " '10001',\n",
1013 " '01111',\n",
1014 " '00101',\n",
1015 " '00000',\n",
1016 " '01000',\n",
1017 " '01011',\n",
1018 " '10011',\n",
1019 " '00100',\n",
1020 " '00000',\n",
1021 " '01110',\n",
1022 " '00100',\n",
1023 " '00101',\n",
1024 " '00100',\n",
1025 " '01000',\n",
1026 " '10010',\n",
1027 " '01000',\n",
1028 " '01000',\n",
1029 " '01000',\n",
1030 " '11000',\n",
1031 " '01000',\n",
1032 " '10010',\n",
1033 " '01000',\n",
1034 " '01010',\n",
1035 " '10101',\n",
1036 " '10011',\n",
1037 " '10110',\n",
1038 " '01000',\n",
1039 " '10010',\n",
1040 " '01111',\n",
1041 " '10001',\n",
1042 " '00001',\n",
1043 " '10010',\n",
1044 " '01000',\n",
1045 " '01101',\n",
1046 " '00100',\n",
1047 " '01011',\n",
1048 " '01111',\n",
1049 " '00111',\n",
1050 " '10001',\n",
1051 " '01100',\n",
1052 " '01110',\n",
1053 " '00111',\n",
1054 " '01000',\n",
1055 " '00000',\n",
1056 " '00110',\n",
1057 " '01101',\n",
1058 " '01011',\n",
1059 " '10010',\n",
1060 " '01011',\n",
1061 " '10101',\n",
1062 " '01000',\n",
1063 " '10011',\n",
1064 " '01110',\n",
1065 " '00011',\n",
1066 " '00000',\n",
1067 " '01000',\n",
1068 " '10010',\n",
1069 " '00011',\n",
1070 " '01111',\n",
1071 " '01101',\n",
1072 " '11000',\n",
1073 " '00011',\n",
1074 " '00011',\n",
1075 " '00010',\n",
1076 " '00000',\n",
1077 " '00000',\n",
1078 " '01110',\n",
1079 " '10011',\n",
1080 " '00000',\n",
1081 " '00111',\n",
1082 " '00010',\n",
1083 " '00100',\n",
1084 " '00111',\n",
1085 " '10011',\n",
1086 " '10100',\n",
1087 " '00100',\n",
1088 " '01000',\n",
1089 " '10001',\n",
1090 " '10001',\n",
1091 " '00100',\n",
1092 " '00011',\n",
1093 " '00000',\n",
1094 " '00100',\n",
1095 " '00010',\n",
1096 " '10011',\n",
1097 " '01110',\n",
1098 " '10010',\n",
1099 " '01101',\n",
1100 " '10001',\n",
1101 " '00111',\n",
1102 " '10101',\n",
1103 " '01101',\n",
1104 " '00000',\n",
1105 " '01110',\n",
1106 " '00011',\n",
1107 " '01110',\n",
1108 " '01000',\n",
1109 " '01010',\n",
1110 " '01110',\n",
1111 " '00100',\n",
1112 " '10011',\n",
1113 " '00010',\n",
1114 " '01000',\n",
1115 " '01101',\n",
1116 " '00100',\n",
1117 " '01101',\n",
1118 " '00100',\n",
1119 " '10100',\n",
1120 " '10001',\n",
1121 " '10001',\n",
1122 " '01000',\n",
1123 " '10010',\n",
1124 " '00011',\n",
1125 " '00010',\n",
1126 " '01110',\n",
1127 " '10100',\n",
1128 " '10001',\n",
1129 " '00000',\n",
1130 " '00110',\n",
1131 " '01011',\n",
1132 " '10101',\n",
1133 " '01000',\n",
1134 " '01100',\n",
1135 " '01100',\n",
1136 " '10100',\n",
1137 " '01111',\n",
1138 " '01111',\n",
1139 " '00011',\n",
1140 " '01000',\n",
1141 " '10011',\n",
1142 " '00100',\n",
1143 " '00000',\n",
1144 " '01101',\n",
1145 " '00011',\n",
1146 " '01000',\n",
1147 " '10011',\n",
1148 " '01100',\n",
1149 " '00000',\n",
1150 " '00000',\n",
1151 " '01000',\n",
1152 " '00000',\n",
1153 " '01000',\n",
1154 " '00100',\n",
1155 " '01011',\n",
1156 " '00100',\n",
1157 " '01110',\n",
1158 " '01101',\n",
1159 " '01101',\n",
1160 " '10001',\n",
1161 " '00100',\n",
1162 " '00100',\n",
1163 " '00011',\n",
1164 " '00000',\n",
1165 " '01110',\n",
1166 " '00011',\n",
1167 " '00001',\n",
1168 " '01110',\n",
1169 " '01000',\n",
1170 " '10100',\n",
1171 " '01100',\n",
1172 " '00100',\n",
1173 " '01011',\n",
1174 " '10001',\n",
1175 " '01110',\n",
1176 " '10011',\n",
1177 " '01101',\n",
1178 " '10011',\n",
1179 " '10011',\n",
1180 " '10011',\n",
1181 " '00110',\n",
1182 " '01000',\n",
1183 " '10011',\n",
1184 " '01101',\n",
1185 " ...]"
1186 ]
1187 }
1188 ],
1189 "prompt_number": 8
1190 },
1191 {
1192 "cell_type": "code",
1193 "collapsed": false,
1194 "input": [
1195 "[(int(c, 2)) for c in chunks(c8b, 5)]"
1196 ],
1197 "language": "python",
1198 "metadata": {},
1199 "outputs": [
1200 {
1201 "metadata": {},
1202 "output_type": "pyout",
1203 "prompt_number": 9,
1204 "text": [
1205 "[0,\n",
1206 " 5,\n",
1207 " 2,\n",
1208 " 0,\n",
1209 " 4,\n",
1210 " 20,\n",
1211 " 14,\n",
1212 " 19,\n",
1213 " 19,\n",
1214 " 0,\n",
1215 " 2,\n",
1216 " 19,\n",
1217 " 7,\n",
1218 " 17,\n",
1219 " 8,\n",
1220 " 14,\n",
1221 " 11,\n",
1222 " 4,\n",
1223 " 19,\n",
1224 " 2,\n",
1225 " 18,\n",
1226 " 4,\n",
1227 " 17,\n",
1228 " 19,\n",
1229 " 7,\n",
1230 " 18,\n",
1231 " 7,\n",
1232 " 19,\n",
1233 " 17,\n",
1234 " 0,\n",
1235 " 7,\n",
1236 " 10,\n",
1237 " 24,\n",
1238 " 14,\n",
1239 " 17,\n",
1240 " 15,\n",
1241 " 5,\n",
1242 " 17,\n",
1243 " 6,\n",
1244 " 4,\n",
1245 " 14,\n",
1246 " 0,\n",
1247 " 3,\n",
1248 " 15,\n",
1249 " 15,\n",
1250 " 9,\n",
1251 " 13,\n",
1252 " 6,\n",
1253 " 11,\n",
1254 " 19,\n",
1255 " 4,\n",
1256 " 17,\n",
1257 " 13,\n",
1258 " 4,\n",
1259 " 5,\n",
1260 " 4,\n",
1261 " 14,\n",
1262 " 5,\n",
1263 " 8,\n",
1264 " 14,\n",
1265 " 17,\n",
1266 " 19,\n",
1267 " 18,\n",
1268 " 3,\n",
1269 " 3,\n",
1270 " 14,\n",
1271 " 4,\n",
1272 " 4,\n",
1273 " 20,\n",
1274 " 12,\n",
1275 " 18,\n",
1276 " 2,\n",
1277 " 17,\n",
1278 " 20,\n",
1279 " 4,\n",
1280 " 17,\n",
1281 " 13,\n",
1282 " 5,\n",
1283 " 4,\n",
1284 " 19,\n",
1285 " 11,\n",
1286 " 0,\n",
1287 " 0,\n",
1288 " 5,\n",
1289 " 18,\n",
1290 " 19,\n",
1291 " 22,\n",
1292 " 8,\n",
1293 " 4,\n",
1294 " 13,\n",
1295 " 19,\n",
1296 " 17,\n",
1297 " 21,\n",
1298 " 14,\n",
1299 " 14,\n",
1300 " 13,\n",
1301 " 4,\n",
1302 " 17,\n",
1303 " 7,\n",
1304 " 20,\n",
1305 " 0,\n",
1306 " 7,\n",
1307 " 17,\n",
1308 " 0,\n",
1309 " 21,\n",
1310 " 4,\n",
1311 " 17,\n",
1312 " 4,\n",
1313 " 4,\n",
1314 " 19,\n",
1315 " 18,\n",
1316 " 21,\n",
1317 " 18,\n",
1318 " 8,\n",
1319 " 4,\n",
1320 " 11,\n",
1321 " 7,\n",
1322 " 11,\n",
1323 " 14,\n",
1324 " 18,\n",
1325 " 19,\n",
1326 " 3,\n",
1327 " 14,\n",
1328 " 0,\n",
1329 " 11,\n",
1330 " 14,\n",
1331 " 24,\n",
1332 " 0,\n",
1333 " 4,\n",
1334 " 18,\n",
1335 " 12,\n",
1336 " 13,\n",
1337 " 13,\n",
1338 " 3,\n",
1339 " 8,\n",
1340 " 6,\n",
1341 " 13,\n",
1342 " 13,\n",
1343 " 17,\n",
1344 " 7,\n",
1345 " 14,\n",
1346 " 7,\n",
1347 " 7,\n",
1348 " 19,\n",
1349 " 18,\n",
1350 " 13,\n",
1351 " 0,\n",
1352 " 14,\n",
1353 " 8,\n",
1354 " 11,\n",
1355 " 13,\n",
1356 " 2,\n",
1357 " 13,\n",
1358 " 18,\n",
1359 " 18,\n",
1360 " 8,\n",
1361 " 2,\n",
1362 " 17,\n",
1363 " 4,\n",
1364 " 0,\n",
1365 " 13,\n",
1366 " 13,\n",
1367 " 4,\n",
1368 " 4,\n",
1369 " 8,\n",
1370 " 8,\n",
1371 " 8,\n",
1372 " 4,\n",
1373 " 17,\n",
1374 " 22,\n",
1375 " 19,\n",
1376 " 0,\n",
1377 " 13,\n",
1378 " 4,\n",
1379 " 18,\n",
1380 " 17,\n",
1381 " 21,\n",
1382 " 14,\n",
1383 " 6,\n",
1384 " 8,\n",
1385 " 4,\n",
1386 " 8,\n",
1387 " 24,\n",
1388 " 22,\n",
1389 " 18,\n",
1390 " 18,\n",
1391 " 3,\n",
1392 " 6,\n",
1393 " 15,\n",
1394 " 21,\n",
1395 " 14,\n",
1396 " 8,\n",
1397 " 0,\n",
1398 " 8,\n",
1399 " 18,\n",
1400 " 0,\n",
1401 " 14,\n",
1402 " 0,\n",
1403 " 4,\n",
1404 " 14,\n",
1405 " 0,\n",
1406 " 4,\n",
1407 " 3,\n",
1408 " 17,\n",
1409 " 13,\n",
1410 " 8,\n",
1411 " 19,\n",
1412 " 17,\n",
1413 " 13,\n",
1414 " 23,\n",
1415 " 4,\n",
1416 " 8,\n",
1417 " 6,\n",
1418 " 17,\n",
1419 " 15,\n",
1420 " 18,\n",
1421 " 18,\n",
1422 " 7,\n",
1423 " 0,\n",
1424 " 3,\n",
1425 " 7,\n",
1426 " 3,\n",
1427 " 19,\n",
1428 " 14,\n",
1429 " 8,\n",
1430 " 15,\n",
1431 " 0,\n",
1432 " 0,\n",
1433 " 19,\n",
1434 " 4,\n",
1435 " 23,\n",
1436 " 4,\n",
1437 " 13,\n",
1438 " 13,\n",
1439 " 4,\n",
1440 " 18,\n",
1441 " 0,\n",
1442 " 6,\n",
1443 " 17,\n",
1444 " 14,\n",
1445 " 1,\n",
1446 " 19,\n",
1447 " 11,\n",
1448 " 4,\n",
1449 " 18,\n",
1450 " 17,\n",
1451 " 13,\n",
1452 " 17,\n",
1453 " 14,\n",
1454 " 8,\n",
1455 " 17,\n",
1456 " 24,\n",
1457 " 15,\n",
1458 " 1,\n",
1459 " 6,\n",
1460 " 4,\n",
1461 " 3,\n",
1462 " 2,\n",
1463 " 11,\n",
1464 " 11,\n",
1465 " 8,\n",
1466 " 22,\n",
1467 " 0,\n",
1468 " 11,\n",
1469 " 0,\n",
1470 " 11,\n",
1471 " 4,\n",
1472 " 4,\n",
1473 " 13,\n",
1474 " 8,\n",
1475 " 6,\n",
1476 " 17,\n",
1477 " 17,\n",
1478 " 13,\n",
1479 " 22,\n",
1480 " 24,\n",
1481 " 17,\n",
1482 " 11,\n",
1483 " 8,\n",
1484 " 12,\n",
1485 " 11,\n",
1486 " 15,\n",
1487 " 18,\n",
1488 " 19,\n",
1489 " 14,\n",
1490 " 11,\n",
1491 " 4,\n",
1492 " 5,\n",
1493 " 19,\n",
1494 " 17,\n",
1495 " 3,\n",
1496 " 12,\n",
1497 " 20,\n",
1498 " 0,\n",
1499 " 17,\n",
1500 " 8,\n",
1501 " 4,\n",
1502 " 4,\n",
1503 " 4,\n",
1504 " 8,\n",
1505 " 8,\n",
1506 " 0,\n",
1507 " 14,\n",
1508 " 11,\n",
1509 " 13,\n",
1510 " 4,\n",
1511 " 22,\n",
1512 " 18,\n",
1513 " 0,\n",
1514 " 14,\n",
1515 " 7,\n",
1516 " 17,\n",
1517 " 19,\n",
1518 " 11,\n",
1519 " 18,\n",
1520 " 19,\n",
1521 " 14,\n",
1522 " 1,\n",
1523 " 4,\n",
1524 " 19,\n",
1525 " 13,\n",
1526 " 18,\n",
1527 " 11,\n",
1528 " 21,\n",
1529 " 5,\n",
1530 " 8,\n",
1531 " 21,\n",
1532 " 3,\n",
1533 " 14,\n",
1534 " 21,\n",
1535 " 19,\n",
1536 " 15,\n",
1537 " 14,\n",
1538 " 0,\n",
1539 " 4,\n",
1540 " 4,\n",
1541 " 8,\n",
1542 " 18,\n",
1543 " 2,\n",
1544 " 8,\n",
1545 " 14,\n",
1546 " 7,\n",
1547 " 8,\n",
1548 " 15,\n",
1549 " 18,\n",
1550 " 4,\n",
1551 " 21,\n",
1552 " 4,\n",
1553 " 4,\n",
1554 " 3,\n",
1555 " 19,\n",
1556 " 4,\n",
1557 " 22,\n",
1558 " 5,\n",
1559 " 0,\n",
1560 " 17,\n",
1561 " 13,\n",
1562 " 7,\n",
1563 " 4,\n",
1564 " 1,\n",
1565 " 11,\n",
1566 " 4,\n",
1567 " 0,\n",
1568 " 14,\n",
1569 " 19,\n",
1570 " 14,\n",
1571 " 7,\n",
1572 " 19,\n",
1573 " 19,\n",
1574 " 19,\n",
1575 " 4,\n",
1576 " 15,\n",
1577 " 13,\n",
1578 " 2,\n",
1579 " 10,\n",
1580 " 0,\n",
1581 " 14,\n",
1582 " 13,\n",
1583 " 7,\n",
1584 " 22,\n",
1585 " 4,\n",
1586 " 19,\n",
1587 " 12,\n",
1588 " 21,\n",
1589 " 24,\n",
1590 " 15,\n",
1591 " 17,\n",
1592 " 17,\n",
1593 " 4,\n",
1594 " 14,\n",
1595 " 13,\n",
1596 " 13,\n",
1597 " 0,\n",
1598 " 18,\n",
1599 " 6,\n",
1600 " 3,\n",
1601 " 4,\n",
1602 " 3,\n",
1603 " 14,\n",
1604 " 4,\n",
1605 " 4,\n",
1606 " 4,\n",
1607 " 14,\n",
1608 " 0,\n",
1609 " 0,\n",
1610 " 12,\n",
1611 " 19,\n",
1612 " 2,\n",
1613 " 8,\n",
1614 " 2,\n",
1615 " 19,\n",
1616 " 19,\n",
1617 " 8,\n",
1618 " 5,\n",
1619 " 13,\n",
1620 " 0,\n",
1621 " 3,\n",
1622 " 17,\n",
1623 " 4,\n",
1624 " 18,\n",
1625 " 17,\n",
1626 " 19,\n",
1627 " 18,\n",
1628 " 4,\n",
1629 " 17,\n",
1630 " 14,\n",
1631 " 18,\n",
1632 " 4,\n",
1633 " 19,\n",
1634 " 17,\n",
1635 " 7,\n",
1636 " 2,\n",
1637 " 8,\n",
1638 " 2,\n",
1639 " 19,\n",
1640 " 15,\n",
1641 " 18,\n",
1642 " 0,\n",
1643 " 0,\n",
1644 " 4,\n",
1645 " 7,\n",
1646 " 11,\n",
1647 " 3,\n",
1648 " 7,\n",
1649 " 18,\n",
1650 " 5,\n",
1651 " 23,\n",
1652 " 18,\n",
1653 " 14,\n",
1654 " 0,\n",
1655 " 14,\n",
1656 " 19,\n",
1657 " 2,\n",
1658 " 19,\n",
1659 " 1,\n",
1660 " 1,\n",
1661 " 18,\n",
1662 " 14,\n",
1663 " 4,\n",
1664 " 8,\n",
1665 " 17,\n",
1666 " 13,\n",
1667 " 18,\n",
1668 " 0,\n",
1669 " 3,\n",
1670 " 11,\n",
1671 " 24,\n",
1672 " 19,\n",
1673 " 17,\n",
1674 " 17,\n",
1675 " 20,\n",
1676 " 13,\n",
1677 " 17,\n",
1678 " 2,\n",
1679 " 4,\n",
1680 " 15,\n",
1681 " 19,\n",
1682 " 19,\n",
1683 " 7,\n",
1684 " 17,\n",
1685 " 4,\n",
1686 " 20,\n",
1687 " 7,\n",
1688 " 13,\n",
1689 " 10,\n",
1690 " 19,\n",
1691 " 0,\n",
1692 " 2,\n",
1693 " 4,\n",
1694 " 2,\n",
1695 " 4,\n",
1696 " 4,\n",
1697 " 11,\n",
1698 " 17,\n",
1699 " 22,\n",
1700 " 13,\n",
1701 " 8,\n",
1702 " 17,\n",
1703 " 4,\n",
1704 " 4,\n",
1705 " 4,\n",
1706 " 0,\n",
1707 " 4,\n",
1708 " 18,\n",
1709 " 4,\n",
1710 " 4,\n",
1711 " 4,\n",
1712 " 8,\n",
1713 " 3,\n",
1714 " 8,\n",
1715 " 18,\n",
1716 " 14,\n",
1717 " 6,\n",
1718 " 2,\n",
1719 " 4,\n",
1720 " 14,\n",
1721 " 12,\n",
1722 " 13,\n",
1723 " 17,\n",
1724 " 19,\n",
1725 " 4,\n",
1726 " 9,\n",
1727 " 7,\n",
1728 " 0,\n",
1729 " 6,\n",
1730 " 0,\n",
1731 " 1,\n",
1732 " 18,\n",
1733 " 4,\n",
1734 " 13,\n",
1735 " 8,\n",
1736 " 19,\n",
1737 " 11,\n",
1738 " 22,\n",
1739 " 19,\n",
1740 " 17,\n",
1741 " 13,\n",
1742 " 1,\n",
1743 " 12,\n",
1744 " 8,\n",
1745 " 4,\n",
1746 " 11,\n",
1747 " 18,\n",
1748 " 0,\n",
1749 " 17,\n",
1750 " 4,\n",
1751 " 19,\n",
1752 " 4,\n",
1753 " 18,\n",
1754 " 17,\n",
1755 " 13,\n",
1756 " 6,\n",
1757 " 18,\n",
1758 " 13,\n",
1759 " 7,\n",
1760 " 4,\n",
1761 " 1,\n",
1762 " 8,\n",
1763 " 14,\n",
1764 " 18,\n",
1765 " 3,\n",
1766 " 8,\n",
1767 " 4,\n",
1768 " 13,\n",
1769 " 0,\n",
1770 " 5,\n",
1771 " 11,\n",
1772 " 4,\n",
1773 " 8,\n",
1774 " 18,\n",
1775 " 0,\n",
1776 " 7,\n",
1777 " 14,\n",
1778 " 2,\n",
1779 " 8,\n",
1780 " 5,\n",
1781 " 4,\n",
1782 " 21,\n",
1783 " 12,\n",
1784 " 5,\n",
1785 " 0,\n",
1786 " 19,\n",
1787 " 0,\n",
1788 " 13,\n",
1789 " 0,\n",
1790 " 19,\n",
1791 " 17,\n",
1792 " 13,\n",
1793 " 8,\n",
1794 " 0,\n",
1795 " 6,\n",
1796 " 13,\n",
1797 " 7,\n",
1798 " 0,\n",
1799 " 19,\n",
1800 " 13,\n",
1801 " 12,\n",
1802 " 8,\n",
1803 " 1,\n",
1804 " 13,\n",
1805 " 8,\n",
1806 " 20,\n",
1807 " 5,\n",
1808 " 4,\n",
1809 " 13,\n",
1810 " 17,\n",
1811 " 19,\n",
1812 " 14,\n",
1813 " 19,\n",
1814 " 19,\n",
1815 " 17,\n",
1816 " 13,\n",
1817 " 24,\n",
1818 " 15,\n",
1819 " 0,\n",
1820 " 8,\n",
1821 " 3,\n",
1822 " 24,\n",
1823 " 8,\n",
1824 " 4,\n",
1825 " 6,\n",
1826 " 3,\n",
1827 " 13,\n",
1828 " 12,\n",
1829 " 4,\n",
1830 " 17,\n",
1831 " 7,\n",
1832 " 7,\n",
1833 " 8,\n",
1834 " 14,\n",
1835 " 19,\n",
1836 " 17,\n",
1837 " 4,\n",
1838 " 19,\n",
1839 " 2,\n",
1840 " 4,\n",
1841 " 18,\n",
1842 " 18,\n",
1843 " 4,\n",
1844 " 8,\n",
1845 " 11,\n",
1846 " 3,\n",
1847 " 17,\n",
1848 " 1,\n",
1849 " 2,\n",
1850 " 4,\n",
1851 " 15,\n",
1852 " 17,\n",
1853 " 8,\n",
1854 " 6,\n",
1855 " 0,\n",
1856 " 4,\n",
1857 " 18,\n",
1858 " 14,\n",
1859 " 0,\n",
1860 " 3,\n",
1861 " 11,\n",
1862 " 19,\n",
1863 " 0,\n",
1864 " 7,\n",
1865 " 8,\n",
1866 " 4,\n",
1867 " 21,\n",
1868 " 4,\n",
1869 " 1,\n",
1870 " 17,\n",
1871 " 2,\n",
1872 " 4,\n",
1873 " 13,\n",
1874 " 11,\n",
1875 " 4,\n",
1876 " 21,\n",
1877 " 0,\n",
1878 " 18,\n",
1879 " 0,\n",
1880 " 3,\n",
1881 " 13,\n",
1882 " 13,\n",
1883 " 19,\n",
1884 " 7,\n",
1885 " 13,\n",
1886 " 4,\n",
1887 " 8,\n",
1888 " 19,\n",
1889 " 4,\n",
1890 " 8,\n",
1891 " 8,\n",
1892 " 18,\n",
1893 " 0,\n",
1894 " 7,\n",
1895 " 20,\n",
1896 " 7,\n",
1897 " 7,\n",
1898 " 20,\n",
1899 " 0,\n",
1900 " 12,\n",
1901 " 14,\n",
1902 " 13,\n",
1903 " 4,\n",
1904 " 5,\n",
1905 " 24,\n",
1906 " 7,\n",
1907 " 11,\n",
1908 " 14,\n",
1909 " 13,\n",
1910 " 22,\n",
1911 " 7,\n",
1912 " 0,\n",
1913 " 4,\n",
1914 " 4,\n",
1915 " 4,\n",
1916 " 4,\n",
1917 " 14,\n",
1918 " 18,\n",
1919 " 13,\n",
1920 " 4,\n",
1921 " 4,\n",
1922 " 24,\n",
1923 " 0,\n",
1924 " 13,\n",
1925 " 4,\n",
1926 " 8,\n",
1927 " 18,\n",
1928 " 4,\n",
1929 " 19,\n",
1930 " 14,\n",
1931 " 6,\n",
1932 " 24,\n",
1933 " 8,\n",
1934 " 19,\n",
1935 " 4,\n",
1936 " 17,\n",
1937 " 11,\n",
1938 " 8,\n",
1939 " 7,\n",
1940 " 19,\n",
1941 " 2,\n",
1942 " 12,\n",
1943 " 8,\n",
1944 " 14,\n",
1945 " 8,\n",
1946 " 17,\n",
1947 " 0,\n",
1948 " 17,\n",
1949 " 5,\n",
1950 " 3,\n",
1951 " 14,\n",
1952 " 4,\n",
1953 " 19,\n",
1954 " 13,\n",
1955 " 8,\n",
1956 " 7,\n",
1957 " 19,\n",
1958 " 13,\n",
1959 " 4,\n",
1960 " 7,\n",
1961 " 8,\n",
1962 " 8,\n",
1963 " 10,\n",
1964 " 0,\n",
1965 " 12,\n",
1966 " 17,\n",
1967 " 3,\n",
1968 " 12,\n",
1969 " 13,\n",
1970 " 0,\n",
1971 " 3,\n",
1972 " 0,\n",
1973 " 13,\n",
1974 " 0,\n",
1975 " 14,\n",
1976 " 3,\n",
1977 " 18,\n",
1978 " 4,\n",
1979 " 18,\n",
1980 " 4,\n",
1981 " 8,\n",
1982 " 24,\n",
1983 " 2,\n",
1984 " 11,\n",
1985 " 18,\n",
1986 " 8,\n",
1987 " 0,\n",
1988 " 13,\n",
1989 " 19,\n",
1990 " 0,\n",
1991 " 14,\n",
1992 " 11,\n",
1993 " 19,\n",
1994 " 2,\n",
1995 " 8,\n",
1996 " 24,\n",
1997 " 12,\n",
1998 " 8,\n",
1999 " 3,\n",
2000 " 4,\n",
2001 " 13,\n",
2002 " 19,\n",
2003 " 19,\n",
2004 " 7,\n",
2005 " 11,\n",
2006 " 19,\n",
2007 " 13,\n",
2008 " 3,\n",
2009 " 23,\n",
2010 " 19,\n",
2011 " 19,\n",
2012 " 19,\n",
2013 " 12,\n",
2014 " 0,\n",
2015 " 18,\n",
2016 " 1,\n",
2017 " 11,\n",
2018 " 4,\n",
2019 " 0,\n",
2020 " 4,\n",
2021 " 4,\n",
2022 " 19,\n",
2023 " 11,\n",
2024 " 8,\n",
2025 " 18,\n",
2026 " 8,\n",
2027 " 17,\n",
2028 " 19,\n",
2029 " 22,\n",
2030 " 19,\n",
2031 " 20,\n",
2032 " 17,\n",
2033 " 15,\n",
2034 " 5,\n",
2035 " 0,\n",
2036 " 8,\n",
2037 " 11,\n",
2038 " 19,\n",
2039 " 4,\n",
2040 " 0,\n",
2041 " 14,\n",
2042 " 4,\n",
2043 " 5,\n",
2044 " 4,\n",
2045 " 8,\n",
2046 " 18,\n",
2047 " 8,\n",
2048 " 8,\n",
2049 " 8,\n",
2050 " 24,\n",
2051 " 8,\n",
2052 " 18,\n",
2053 " 8,\n",
2054 " 10,\n",
2055 " 21,\n",
2056 " 19,\n",
2057 " 22,\n",
2058 " 8,\n",
2059 " 18,\n",
2060 " 15,\n",
2061 " 17,\n",
2062 " 1,\n",
2063 " 18,\n",
2064 " 8,\n",
2065 " 13,\n",
2066 " 4,\n",
2067 " 11,\n",
2068 " 15,\n",
2069 " 7,\n",
2070 " 17,\n",
2071 " 12,\n",
2072 " 14,\n",
2073 " 7,\n",
2074 " 8,\n",
2075 " 0,\n",
2076 " 6,\n",
2077 " 13,\n",
2078 " 11,\n",
2079 " 18,\n",
2080 " 11,\n",
2081 " 21,\n",
2082 " 8,\n",
2083 " 19,\n",
2084 " 14,\n",
2085 " 3,\n",
2086 " 0,\n",
2087 " 8,\n",
2088 " 18,\n",
2089 " 3,\n",
2090 " 15,\n",
2091 " 13,\n",
2092 " 24,\n",
2093 " 3,\n",
2094 " 3,\n",
2095 " 2,\n",
2096 " 0,\n",
2097 " 0,\n",
2098 " 14,\n",
2099 " 19,\n",
2100 " 0,\n",
2101 " 7,\n",
2102 " 2,\n",
2103 " 4,\n",
2104 " 7,\n",
2105 " 19,\n",
2106 " 20,\n",
2107 " 4,\n",
2108 " 8,\n",
2109 " 17,\n",
2110 " 17,\n",
2111 " 4,\n",
2112 " 3,\n",
2113 " 0,\n",
2114 " 4,\n",
2115 " 2,\n",
2116 " 19,\n",
2117 " 14,\n",
2118 " 18,\n",
2119 " 13,\n",
2120 " 17,\n",
2121 " 7,\n",
2122 " 21,\n",
2123 " 13,\n",
2124 " 0,\n",
2125 " 14,\n",
2126 " 3,\n",
2127 " 14,\n",
2128 " 8,\n",
2129 " 10,\n",
2130 " 14,\n",
2131 " 4,\n",
2132 " 19,\n",
2133 " 2,\n",
2134 " 8,\n",
2135 " 13,\n",
2136 " 4,\n",
2137 " 13,\n",
2138 " 4,\n",
2139 " 20,\n",
2140 " 17,\n",
2141 " 17,\n",
2142 " 8,\n",
2143 " 18,\n",
2144 " 3,\n",
2145 " 2,\n",
2146 " 14,\n",
2147 " 20,\n",
2148 " 17,\n",
2149 " 0,\n",
2150 " 6,\n",
2151 " 11,\n",
2152 " 21,\n",
2153 " 8,\n",
2154 " 12,\n",
2155 " 12,\n",
2156 " 20,\n",
2157 " 15,\n",
2158 " 15,\n",
2159 " 3,\n",
2160 " 8,\n",
2161 " 19,\n",
2162 " 4,\n",
2163 " 0,\n",
2164 " 13,\n",
2165 " 3,\n",
2166 " 8,\n",
2167 " 19,\n",
2168 " 12,\n",
2169 " 0,\n",
2170 " 0,\n",
2171 " 8,\n",
2172 " 0,\n",
2173 " 8,\n",
2174 " 4,\n",
2175 " 11,\n",
2176 " 4,\n",
2177 " 14,\n",
2178 " 13,\n",
2179 " 13,\n",
2180 " 17,\n",
2181 " 4,\n",
2182 " 4,\n",
2183 " 3,\n",
2184 " 0,\n",
2185 " 14,\n",
2186 " 3,\n",
2187 " 1,\n",
2188 " 14,\n",
2189 " 8,\n",
2190 " 20,\n",
2191 " 12,\n",
2192 " 4,\n",
2193 " 11,\n",
2194 " 17,\n",
2195 " 14,\n",
2196 " 19,\n",
2197 " 13,\n",
2198 " 19,\n",
2199 " 19,\n",
2200 " 19,\n",
2201 " 6,\n",
2202 " 8,\n",
2203 " 19,\n",
2204 " 13,\n",
2205 " ...]"
2206 ]
2207 }
2208 ],
2209 "prompt_number": 9
2210 },
2211 {
2212 "cell_type": "code",
2213 "collapsed": false,
2214 "input": [
2215 "min([(int(c, 2)) for c in chunks(c8b, 5)])"
2216 ],
2217 "language": "python",
2218 "metadata": {},
2219 "outputs": [
2220 {
2221 "metadata": {},
2222 "output_type": "pyout",
2223 "prompt_number": 10,
2224 "text": [
2225 "0"
2226 ]
2227 }
2228 ],
2229 "prompt_number": 10
2230 },
2231 {
2232 "cell_type": "code",
2233 "collapsed": false,
2234 "input": [
2235 "max([chr(int(c, 2) + ord('a')) for c in chunks(c8b, 5)])"
2236 ],
2237 "language": "python",
2238 "metadata": {},
2239 "outputs": [
2240 {
2241 "metadata": {},
2242 "output_type": "pyout",
2243 "prompt_number": 11,
2244 "text": [
2245 "'y'"
2246 ]
2247 }
2248 ],
2249 "prompt_number": 11
2250 },
2251 {
2252 "cell_type": "code",
2253 "collapsed": false,
2254 "input": [
2255 "def cadenus_letter(n, doubled='v'):\n",
2256 " letter = chr(n + ord('a'))\n",
2257 " if letter > doubled:\n",
2258 " letter = chr(n + ord('a') + 1)\n",
2259 " return letter"
2260 ],
2261 "language": "python",
2262 "metadata": {},
2263 "outputs": [],
2264 "prompt_number": 12
2265 },
2266 {
2267 "cell_type": "code",
2268 "collapsed": false,
2269 "input": [
2270 "c8bl = ''.join([cadenus_letter(int(c, 2)) for c in chunks(c8b, 5)])\n",
2271 "c8bl"
2272 ],
2273 "language": "python",
2274 "metadata": {},
2275 "outputs": [
2276 {
2277 "metadata": {},
2278 "output_type": "pyout",
2279 "prompt_number": 13,
2280 "text": [
2281 "'afcaeuottacthrioletcserthshtrahkzorpfrgeoadppjnglternefeofiortsddoeeumscruernfetlaafstxientrvoonerhuahravereetsvsielhlostdoalozaesmnndignnrhohhtsnaoilncnssicreanneeiiierxtanesrvogieizxssdgpvoiaisaoaeoaedrnitrnyeigrpsshadhdtoipaateyennesagrobtlesrnroirzpbgedcllixalaleenigrrnxzrlimlpstoleftrdmuarieeeiiaolnexsaohrtlstobetnslvfivdovtpoaeeisciohipseveedtexfarnhebleaotohtttepnckaonhxetmvzprreonnasgdedoeeeoaamtcicttifnadresrtserosetrhcictpsaaehldhsfysoaotctbbsoeirnsadlztrrunrceptthreuhnktaceceelrxnireeeaeseeeidisogceomnrtejhagabsenitlxtrnbmielsaretesrngsnhebiosdienafleisahocifevmfatanatrniagnhatnmibniufenrtottrnzpaidziegdnmerhhiotretcesseildrbceprigaesoadltahievebrcenlevasadnnthneiteiisahuhhuamonefzhlonxhaeeeeosneezaneisetogziterlihtcmioirarfdoetnihtnehiikamrdmnadanaodseseizclsiantaoltcizmidentthltndytttmasbleaeetlisirtxturpfailteaoefeisiiizisikvtxisprbsinelphrmohiagnlslvitodaisdpnzddcaaotahcehtueirredaectosnrhvnaodoikoetcineneurrisdcouraglvimmuppditeanditmaaiaieleonnreedaodboiumelrotntttgitnrlrienniklzsogstcifzpipvidvssmnceiasiitsnneatitomrhbnhnidprlrepoznalsnvsdosanesitfaenltgodatteeaisicrootmsmfhauenirsghznxeintegodiileedtarnosrcaaendtcuttfdrbehtmfitoordruiaozaanoeeldoinhusgiteaoriecevemntratmtfpeucutahamtnexonicdeemrpaolitoafesoosspfnlneeootachllirssysofpdftfrnpraeeazlonahautntcntcbaxloneftoatecvoxdlxvnneedtiioigtegmtaheeatefaaeprrcrosheerrpalediengidrreouhvesuroztnsosinuiuiofprda'"
2282 ]
2283 }
2284 ],
2285 "prompt_number": 13
2286 },
2287 {
2288 "cell_type": "code",
2289 "collapsed": false,
2290 "input": [
2291 "min(c8bl), max(c8bl)"
2292 ],
2293 "language": "python",
2294 "metadata": {},
2295 "outputs": [
2296 {
2297 "metadata": {},
2298 "output_type": "pyout",
2299 "prompt_number": 14,
2300 "text": [
2301 "('a', 'z')"
2302 ]
2303 }
2304 ],
2305 "prompt_number": 14
2306 },
2307 {
2308 "cell_type": "code",
2309 "collapsed": false,
2310 "input": [
2311 "len(c8bl), len(c8bl) / 25"
2312 ],
2313 "language": "python",
2314 "metadata": {},
2315 "outputs": [
2316 {
2317 "metadata": {},
2318 "output_type": "pyout",
2319 "prompt_number": 15,
2320 "text": [
2321 "(1400, 56.0)"
2322 ]
2323 }
2324 ],
2325 "prompt_number": 15
2326 },
2327 {
2328 "cell_type": "code",
2329 "collapsed": false,
2330 "input": [
2331 "freqs_8b = pd.Series(collections.Counter([l.lower() for l in c8bl if l in string.ascii_letters]))\n",
2332 "freqs_8b.plot(kind='bar')"
2333 ],
2334 "language": "python",
2335 "metadata": {},
2336 "outputs": [
2337 {
2338 "metadata": {},
2339 "output_type": "pyout",
2340 "prompt_number": 16,
2341 "text": [
2342 "<matplotlib.axes.AxesSubplot at 0x7f2de5006ba8>"
2343 ]
2344 },
2345 {
2346 "metadata": {},
2347 "output_type": "display_data",
2348 "png": "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\nfwNwK7U2g91uAAAAAElFTkSuQmCC\n",
2349 "text": [
2350 "<matplotlib.figure.Figure at 0x7f2de5006198>"
2351 ]
2352 }
2353 ],
2354 "prompt_number": 16
2355 },
2356 {
2357 "cell_type": "code",
2358 "collapsed": false,
2359 "input": [
2360 "freqs = pd.Series(english_counts)\n",
2361 "freqs.plot(kind='bar')"
2362 ],
2363 "language": "python",
2364 "metadata": {},
2365 "outputs": [
2366 {
2367 "metadata": {},
2368 "output_type": "pyout",
2369 "prompt_number": 17,
2370 "text": [
2371 "<matplotlib.axes.AxesSubplot at 0x7f2de80f8a90>"
2372 ]
2373 },
2374 {
2375 "metadata": {},
2376 "output_type": "display_data",
2377 "png": "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\nTkSuQmCC\n",
2378 "text": [
2379 "<matplotlib.figure.Figure at 0x7f2de4f43eb8>"
2380 ]
2381 }
2382 ],
2383 "prompt_number": 17
2384 },
2385 {
2386 "cell_type": "code",
2387 "collapsed": false,
2388 "input": [
2389 "rows = chunks(c8bl, len(c8bl) // 25)\n",
2390 "rows"
2391 ],
2392 "language": "python",
2393 "metadata": {},
2394 "outputs": [
2395 {
2396 "metadata": {},
2397 "output_type": "pyout",
2398 "prompt_number": 18,
2399 "text": [
2400 "['afcaeuottacthrioletcserthshtrahkzorpfrgeoadppjnglternefe',\n",
2401 " 'ofiortsddoeeumscruernfetlaafstxientrvoonerhuahravereetsv',\n",
2402 " 'sielhlostdoalozaesmnndignnrhohhtsnaoilncnssicreanneeiiie',\n",
2403 " 'rxtanesrvogieizxssdgpvoiaisaoaeoaedrnitrnyeigrpsshadhdto',\n",
2404 " 'ipaateyennesagrobtlesrnroirzpbgedcllixalaleenigrrnxzrlim',\n",
2405 " 'lpstoleftrdmuarieeeiiaolnexsaohrtlstobetnslvfivdovtpoaee',\n",
2406 " 'isciohipseveedtexfarnhebleaotohtttepnckaonhxetmvzprreonn',\n",
2407 " 'asgdedoeeeoaamtcicttifnadresrtserosetrhcictpsaaehldhsfys',\n",
2408 " 'oaotctbbsoeirnsadlztrrunrceptthreuhnktaceceelrxnireeeaes',\n",
2409 " 'eeeidisogceomnrtejhagabsenitlxtrnbmielsaretesrngsnhebios',\n",
2410 " 'dienafleisahocifevmfatanatrniagnhatnmibniufenrtottrnzpai',\n",
2411 " 'dziegdnmerhhiotretcesseildrbceprigaesoadltahievebrcenlev',\n",
2412 " 'asadnnthneiteiisahuhhuamonefzhlonxhaeeeeosneezaneisetogz',\n",
2413 " 'iterlihtcmioirarfdoetnihtnehiikamrdmnadanaodseseizclsian',\n",
2414 " 'taoltcizmidentthltndytttmasbleaeetlisirtxturpfailteaoefe',\n",
2415 " 'isiiizisikvtxisprbsinelphrmohiagnlslvitodaisdpnzddcaaota',\n",
2416 " 'hcehtueirredaectosnrhvnaodoikoetcineneurrisdcouraglvimmu',\n",
2417 " 'ppditeanditmaaiaieleonnreedaodboiumelrotntttgitnrlrienni',\n",
2418 " 'klzsogstcifzpipvidvssmnceiasiitsnneatitomrhbnhnidprlrepo',\n",
2419 " 'znalsnvsdosanesitfaenltgodatteeaisicrootmsmfhauenirsghzn',\n",
2420 " 'xeintegodiileedtarnosrcaaendtcuttfdrbehtmfitoordruiaozaa',\n",
2421 " 'noeeldoinhusgiteaoriecevemntratmtfpeucutahamtnexonicdeem',\n",
2422 " 'rpaolitoafesoosspfnlneeootachllirssysofpdftfrnpraeeazlon',\n",
2423 " 'ahautntcntcbaxloneftoatecvoxdlxvnneedtiioigtegmtaheeatef',\n",
2424 " 'aaeprrcrosheerrpalediengidrreouhvesuroztnsosinuiuiofprda']"
2425 ]
2426 }
2427 ],
2428 "prompt_number": 18
2429 },
2430 {
2431 "cell_type": "code",
2432 "collapsed": false,
2433 "input": [
2434 "chunks(''.join([l if l in 'phase' else '.' for l in c8bl]), 56)"
2435 ],
2436 "language": "python",
2437 "metadata": {},
2438 "outputs": [
2439 {
2440 "metadata": {},
2441 "output_type": "pyout",
2442 "prompt_number": 19,
2443 "text": [
2444 "['a..ae....a..h....e..se..hsh..ah....p...e.a.pp.....e..e.e',\n",
2445 " '......s...ee..s...e...e..aa.s...e.......e.h.ah.a.e.ee.s.',\n",
2446 " 's.e.h..s...a...aes.........h.hh.s.a......ss...ea..ee...e',\n",
2447 " '...a.es.....e...ss..p...a.sa.ae.ae........e...pssha.h...',\n",
2448 " '.paa.e.e..esa......es.......p..e......a.a.ee............',\n",
2449 " '.ps...e......a..eee..a...e.sa.h...s...e..s.........p.aee',\n",
2450 " '.s...h.pse.ee..e..a..he..ea...h...ep...a..h.e....p..e...',\n",
2451 " 'as..e..eee.aa..........a..es..se..se..h....psaaeh..hs..s',\n",
2452 " '.a......s.e...sa..........ep..h.e.h...a.e.ee......eeeaes',\n",
2453 " 'eee...s...e.....e.ha.a.se...........e.sa.e.es...s.he...s',\n",
2454 " '..e.a..e.sah....e...a.a.a....a..ha.........e.........pa.',\n",
2455 " '...e....e.hh....e..esse......ep...aes.a...ah.e.e...e..e.',\n",
2456 " 'asa....h.e..e..sah.hh.a...e..h....haeeee.s.ee.a.e.se....',\n",
2457 " '..e...h.......a....e...h..eh...a.....a.a.a..sese....s.a.',\n",
2458 " '.a.........e...h.........as..eaee...s.......p.a...ea.e.e',\n",
2459 " '.s.....s......sp..s..e.ph...h.a...s......a.s.p.....aa..a',\n",
2460 " 'h.eh..e...e.ae...s..h..a......e....e.e....s.....a.......',\n",
2461 " 'pp...ea.....aa.a.e.e....ee.a.......e................e...',\n",
2462 " '...s..s.....p.p....ss...e.as...s..ea......h..h...p...ep.',\n",
2463 " '..a.s..s..sa.es...ae......a..eea.s.......s..ha.e...s.h..',\n",
2464 " '.e...e......ee..a...s..aae...........eh............a..aa',\n",
2465 " '..ee.....h.s...ea...e.e.e....a....pe....aha...e......ee.',\n",
2466 " '.pa.....a.es..ssp....ee...a.h....ss.s..p......p.aeea....',\n",
2467 " 'aha.........a....e...a.e..........ee........e...aheea.e.',\n",
2468 " 'aaep.....shee..pa.e..e......e..h.es......s.s........p..a']"
2469 ]
2470 }
2471 ],
2472 "prompt_number": 19
2473 },
2474 {
2475 "cell_type": "code",
2476 "collapsed": false,
2477 "input": [
2478 "columns = [''.join(c) for c in zip(*rows)]\n",
2479 "columns"
2480 ],
2481 "language": "python",
2482 "metadata": {},
2483 "outputs": [
2484 {
2485 "metadata": {},
2486 "output_type": "pyout",
2487 "prompt_number": 20,
2488 "text": [
2489 "['aosriliaoeddaitihpkzxnraa',\n",
2490 " 'ffixppssaeizstascplneopha',\n",
2491 " 'cietascgoeeiaeoiedzaieaae',\n",
2492 " 'aolaatidtinedrlihislneoup',\n",
2493 " 'erhntooecdagnltittostlltr',\n",
2494 " 'utleelhdtifdniczuegnedinr',\n",
2495 " 'ososyeiobslnthiieasvgottc',\n",
2496 " 'tdsrefpeboemhtzsintsoiocr',\n",
2497 " 'tdtvntsesgiencmirdcddnano',\n",
2498 " 'aodonreeocsremikriioihfts',\n",
2499 " 'ceogedvoeeahiidvetfsiuech',\n",
2500 " 'teaismeaiohhtoetdmzalssbe',\n",
2501 " 'huleauearmoieinxaapnegoae',\n",
2502 " 'rmoigadmnncoirtieaieeioxr',\n",
2503 " 'iszzrrttsritiatscipsdtslr',\n",
2504 " 'ocaxoiecatfrsrhptavitesop',\n",
2505 " 'lresbexideeeaflroiitaapna',\n",
2506 " 'eusstefcljvthdtbsedfrofel',\n",
2507 " 'temdleatzhmcuonsnlvanrnfe',\n",
2508 " 'crngeirttafehedireseoiltd',\n",
2509 " 'snnpsinirgashtynhosnsenoi',\n",
2510 " 'efdvrahfratsuntevnmlrceae',\n",
2511 " 'reionoenubaeaitlnnntceetn',\n",
2512 " 'ttgirlbansnimhtparcgavoeg',\n",
2513 " 'hlnaonldrealotmhoeeoaeoci',\n",
2514 " 'saniieercntdnnardeidemtvd',\n",
2515 " 'harsrxaeeirreesmodaannaor',\n",
2516 " 'tfhazsosptnbfhboiastdtcxr',\n",
2517 " 'rsoopatrtliczilhkoittrhde',\n",
2518 " 'athaboottxaehieiodiecallo',\n",
2519 " 'hxheghhshtgplkaaebteutlxu',\n",
2520 " 'kitoerterrnroaegtosatmivh',\n",
2521 " 'zesadttrenhinmencinittrnv',\n",
2522 " 'onnecltoubagxrtliunsffsne',\n",
2523 " 'rtadlseshmtahdlsnmeidpses',\n",
2524 " 'prorltpenineamileeacreyeu',\n",
2525 " 'fviniontkemsensvnltrbusdr',\n",
2526 " 'rolixbcrtlioeaiierioecoto',\n",
2527 " 'gontaekhasbaedrtuotohufiz',\n",
2528 " 'encrltaccandeatortotttpit',\n",
2529 " 'oennanoierilonxdrnmmmadon',\n",
2530 " 'arsylsncceutsataitrsfhfis',\n",
2531 " 'dhseelhtetfanouisthmiatgo',\n",
2532 " 'puiievxpeeehedrsdtbftmfts',\n",
2533 " 'pacgnfeslsniespdcgnhotrei',\n",
2534 " 'jhrriitarrrezefpoihaonngn',\n",
2535 " 'nrepgvmaxntvasanutnurepmu',\n",
2536 " 'gaasrdvengoeneizrniedxrti',\n",
2537 " 'lvnsrozhistbeildardnroaau',\n",
2538 " 'tenhnvplrntriztdglpiunehi',\n",
2539 " 'ereaxtrdehrcsceclrrriieeo',\n",
2540 " 'reedzprheeneelaavilsacaef',\n",
2541 " 'neihroesebzntsoaiergodzap',\n",
2542 " 'etidlaofaiploieomnehzeltr',\n",
2543 " 'fsitienyeoaegaftmnpzaeoed',\n",
2544 " 'eveomensssivzneauionamnfa']"
2545 ]
2546 }
2547 ],
2548 "prompt_number": 20
2549 },
2550 {
2551 "cell_type": "code",
2552 "collapsed": false,
2553 "input": [
2554 "letter_positions = {letter: [(r, c) for r, row in enumerate(rows) for c, char in enumerate(row) if char == letter] for letter in 'phaseeight'}\n",
2555 "letter_positions"
2556 ],
2557 "language": "python",
2558 "metadata": {},
2559 "outputs": [
2560 {
2561 "metadata": {},
2562 "output_type": "pyout",
2563 "prompt_number": 21,
2564 "text": [
2565 "{'h': [(0, 12),\n",
2566 " (0, 24),\n",
2567 " (0, 26),\n",
2568 " (0, 30),\n",
2569 " (1, 42),\n",
2570 " (1, 45),\n",
2571 " (2, 4),\n",
2572 " (2, 27),\n",
2573 " (2, 29),\n",
2574 " (2, 30),\n",
2575 " (3, 49),\n",
2576 " (3, 52),\n",
2577 " (5, 30),\n",
2578 " (6, 5),\n",
2579 " (6, 21),\n",
2580 " (6, 30),\n",
2581 " (6, 42),\n",
2582 " (7, 38),\n",
2583 " (7, 48),\n",
2584 " (7, 51),\n",
2585 " (8, 30),\n",
2586 " (8, 34),\n",
2587 " (9, 18),\n",
2588 " (9, 50),\n",
2589 " (10, 11),\n",
2590 " (10, 32),\n",
2591 " (11, 10),\n",
2592 " (11, 11),\n",
2593 " (11, 43),\n",
2594 " (12, 7),\n",
2595 " (12, 17),\n",
2596 " (12, 19),\n",
2597 " (12, 20),\n",
2598 " (12, 29),\n",
2599 " (12, 34),\n",
2600 " (13, 6),\n",
2601 " (13, 23),\n",
2602 " (13, 27),\n",
2603 " (14, 15),\n",
2604 " (15, 24),\n",
2605 " (15, 28),\n",
2606 " (16, 0),\n",
2607 " (16, 3),\n",
2608 " (16, 20),\n",
2609 " (18, 42),\n",
2610 " (18, 45),\n",
2611 " (19, 44),\n",
2612 " (19, 53),\n",
2613 " (20, 38),\n",
2614 " (21, 9),\n",
2615 " (21, 41),\n",
2616 " (22, 28),\n",
2617 " (23, 1),\n",
2618 " (23, 49),\n",
2619 " (24, 10),\n",
2620 " (24, 31)],\n",
2621 " 'e': [(0, 4),\n",
2622 " (0, 17),\n",
2623 " (0, 21),\n",
2624 " (0, 39),\n",
2625 " (0, 50),\n",
2626 " (0, 53),\n",
2627 " (0, 55),\n",
2628 " (1, 10),\n",
2629 " (1, 11),\n",
2630 " (1, 18),\n",
2631 " (1, 22),\n",
2632 " (1, 32),\n",
2633 " (1, 40),\n",
2634 " (1, 49),\n",
2635 " (1, 51),\n",
2636 " (1, 52),\n",
2637 " (2, 2),\n",
2638 " (2, 16),\n",
2639 " (2, 46),\n",
2640 " (2, 50),\n",
2641 " (2, 51),\n",
2642 " (2, 55),\n",
2643 " (3, 5),\n",
2644 " (3, 12),\n",
2645 " (3, 30),\n",
2646 " (3, 33),\n",
2647 " (3, 42),\n",
2648 " (4, 5),\n",
2649 " (4, 7),\n",
2650 " (4, 10),\n",
2651 " (4, 19),\n",
2652 " (4, 31),\n",
2653 " (4, 42),\n",
2654 " (4, 43),\n",
2655 " (5, 6),\n",
2656 " (5, 16),\n",
2657 " (5, 17),\n",
2658 " (5, 18),\n",
2659 " (5, 25),\n",
2660 " (5, 38),\n",
2661 " (5, 54),\n",
2662 " (5, 55),\n",
2663 " (6, 9),\n",
2664 " (6, 11),\n",
2665 " (6, 12),\n",
2666 " (6, 15),\n",
2667 " (6, 22),\n",
2668 " (6, 25),\n",
2669 " (6, 34),\n",
2670 " (6, 44),\n",
2671 " (6, 52),\n",
2672 " (7, 4),\n",
2673 " (7, 7),\n",
2674 " (7, 8),\n",
2675 " (7, 9),\n",
2676 " (7, 26),\n",
2677 " (7, 31),\n",
2678 " (7, 35),\n",
2679 " (7, 47),\n",
2680 " (8, 10),\n",
2681 " (8, 26),\n",
2682 " (8, 32),\n",
2683 " (8, 40),\n",
2684 " (8, 42),\n",
2685 " (8, 43),\n",
2686 " (8, 50),\n",
2687 " (8, 51),\n",
2688 " (8, 52),\n",
2689 " (8, 54),\n",
2690 " (9, 0),\n",
2691 " (9, 1),\n",
2692 " (9, 2),\n",
2693 " (9, 10),\n",
2694 " (9, 16),\n",
2695 " (9, 24),\n",
2696 " (9, 36),\n",
2697 " (9, 41),\n",
2698 " (9, 43),\n",
2699 " (9, 51),\n",
2700 " (10, 2),\n",
2701 " (10, 7),\n",
2702 " (10, 16),\n",
2703 " (10, 43),\n",
2704 " (11, 3),\n",
2705 " (11, 8),\n",
2706 " (11, 16),\n",
2707 " (11, 19),\n",
2708 " (11, 22),\n",
2709 " (11, 29),\n",
2710 " (11, 35),\n",
2711 " (11, 45),\n",
2712 " (11, 47),\n",
2713 " (11, 51),\n",
2714 " (11, 54),\n",
2715 " (12, 9),\n",
2716 " (12, 12),\n",
2717 " (12, 26),\n",
2718 " (12, 36),\n",
2719 " (12, 37),\n",
2720 " (12, 38),\n",
2721 " (12, 39),\n",
2722 " (12, 43),\n",
2723 " (12, 44),\n",
2724 " (12, 48),\n",
2725 " (12, 51),\n",
2726 " (13, 2),\n",
2727 " (13, 19),\n",
2728 " (13, 26),\n",
2729 " (13, 45),\n",
2730 " (13, 47),\n",
2731 " (14, 11),\n",
2732 " (14, 29),\n",
2733 " (14, 31),\n",
2734 " (14, 32),\n",
2735 " (14, 50),\n",
2736 " (14, 53),\n",
2737 " (14, 55),\n",
2738 " (15, 21),\n",
2739 " (16, 2),\n",
2740 " (16, 6),\n",
2741 " (16, 10),\n",
2742 " (16, 13),\n",
2743 " (16, 30),\n",
2744 " (16, 35),\n",
2745 " (16, 37),\n",
2746 " (17, 5),\n",
2747 " (17, 17),\n",
2748 " (17, 19),\n",
2749 " (17, 24),\n",
2750 " (17, 25),\n",
2751 " (17, 35),\n",
2752 " (17, 52),\n",
2753 " (18, 24),\n",
2754 " (18, 34),\n",
2755 " (18, 53),\n",
2756 " (19, 13),\n",
2757 " (19, 19),\n",
2758 " (19, 29),\n",
2759 " (19, 30),\n",
2760 " (19, 47),\n",
2761 " (20, 1),\n",
2762 " (20, 5),\n",
2763 " (20, 12),\n",
2764 " (20, 13),\n",
2765 " (20, 25),\n",
2766 " (20, 37),\n",
2767 " (21, 2),\n",
2768 " (21, 3),\n",
2769 " (21, 15),\n",
2770 " (21, 20),\n",
2771 " (21, 22),\n",
2772 " (21, 24),\n",
2773 " (21, 35),\n",
2774 " (21, 46),\n",
2775 " (21, 53),\n",
2776 " (21, 54),\n",
2777 " (22, 10),\n",
2778 " (22, 21),\n",
2779 " (22, 22),\n",
2780 " (22, 49),\n",
2781 " (22, 50),\n",
2782 " (23, 17),\n",
2783 " (23, 23),\n",
2784 " (23, 34),\n",
2785 " (23, 35),\n",
2786 " (23, 44),\n",
2787 " (23, 50),\n",
2788 " (23, 51),\n",
2789 " (23, 54),\n",
2790 " (24, 2),\n",
2791 " (24, 11),\n",
2792 " (24, 12),\n",
2793 " (24, 18),\n",
2794 " (24, 21),\n",
2795 " (24, 28),\n",
2796 " (24, 33)],\n",
2797 " 'a': [(0, 0),\n",
2798 " (0, 3),\n",
2799 " (0, 9),\n",
2800 " (0, 29),\n",
2801 " (0, 41),\n",
2802 " (1, 25),\n",
2803 " (1, 26),\n",
2804 " (1, 44),\n",
2805 " (1, 47),\n",
2806 " (2, 11),\n",
2807 " (2, 15),\n",
2808 " (2, 34),\n",
2809 " (2, 47),\n",
2810 " (3, 3),\n",
2811 " (3, 24),\n",
2812 " (3, 27),\n",
2813 " (3, 29),\n",
2814 " (3, 32),\n",
2815 " (3, 50),\n",
2816 " (4, 2),\n",
2817 " (4, 3),\n",
2818 " (4, 12),\n",
2819 " (4, 38),\n",
2820 " (4, 40),\n",
2821 " (5, 13),\n",
2822 " (5, 21),\n",
2823 " (5, 28),\n",
2824 " (5, 53),\n",
2825 " (6, 18),\n",
2826 " (6, 26),\n",
2827 " (6, 39),\n",
2828 " (7, 0),\n",
2829 " (7, 11),\n",
2830 " (7, 12),\n",
2831 " (7, 23),\n",
2832 " (7, 45),\n",
2833 " (7, 46),\n",
2834 " (8, 1),\n",
2835 " (8, 15),\n",
2836 " (8, 38),\n",
2837 " (8, 53),\n",
2838 " (9, 19),\n",
2839 " (9, 21),\n",
2840 " (9, 39),\n",
2841 " (10, 4),\n",
2842 " (10, 10),\n",
2843 " (10, 20),\n",
2844 " (10, 22),\n",
2845 " (10, 24),\n",
2846 " (10, 29),\n",
2847 " (10, 33),\n",
2848 " (10, 54),\n",
2849 " (11, 34),\n",
2850 " (11, 38),\n",
2851 " (11, 42),\n",
2852 " (12, 0),\n",
2853 " (12, 2),\n",
2854 " (12, 16),\n",
2855 " (12, 22),\n",
2856 " (12, 35),\n",
2857 " (12, 46),\n",
2858 " (13, 14),\n",
2859 " (13, 31),\n",
2860 " (13, 37),\n",
2861 " (13, 39),\n",
2862 " (13, 41),\n",
2863 " (13, 54),\n",
2864 " (14, 1),\n",
2865 " (14, 25),\n",
2866 " (14, 30),\n",
2867 " (14, 46),\n",
2868 " (14, 51),\n",
2869 " (15, 30),\n",
2870 " (15, 41),\n",
2871 " (15, 51),\n",
2872 " (15, 52),\n",
2873 " (15, 55),\n",
2874 " (16, 12),\n",
2875 " (16, 23),\n",
2876 " (16, 48),\n",
2877 " (17, 6),\n",
2878 " (17, 12),\n",
2879 " (17, 13),\n",
2880 " (17, 15),\n",
2881 " (17, 27),\n",
2882 " (18, 26),\n",
2883 " (18, 35),\n",
2884 " (19, 2),\n",
2885 " (19, 11),\n",
2886 " (19, 18),\n",
2887 " (19, 26),\n",
2888 " (19, 31),\n",
2889 " (19, 45),\n",
2890 " (20, 16),\n",
2891 " (20, 23),\n",
2892 " (20, 24),\n",
2893 " (20, 51),\n",
2894 " (20, 54),\n",
2895 " (20, 55),\n",
2896 " (21, 16),\n",
2897 " (21, 29),\n",
2898 " (21, 40),\n",
2899 " (21, 42),\n",
2900 " (22, 2),\n",
2901 " (22, 8),\n",
2902 " (22, 26),\n",
2903 " (22, 48),\n",
2904 " (22, 51),\n",
2905 " (23, 0),\n",
2906 " (23, 2),\n",
2907 " (23, 12),\n",
2908 " (23, 21),\n",
2909 " (23, 48),\n",
2910 " (23, 52),\n",
2911 " (24, 0),\n",
2912 " (24, 1),\n",
2913 " (24, 16),\n",
2914 " (24, 55)],\n",
2915 " 'p': [(0, 35),\n",
2916 " (0, 43),\n",
2917 " (0, 44),\n",
2918 " (3, 20),\n",
2919 " (3, 46),\n",
2920 " (4, 1),\n",
2921 " (4, 28),\n",
2922 " (5, 1),\n",
2923 " (5, 51),\n",
2924 " (6, 7),\n",
2925 " (6, 35),\n",
2926 " (6, 49),\n",
2927 " (7, 43),\n",
2928 " (8, 27),\n",
2929 " (10, 53),\n",
2930 " (11, 30),\n",
2931 " (14, 44),\n",
2932 " (15, 15),\n",
2933 " (15, 23),\n",
2934 " (15, 45),\n",
2935 " (17, 0),\n",
2936 " (17, 1),\n",
2937 " (18, 12),\n",
2938 " (18, 14),\n",
2939 " (18, 49),\n",
2940 " (18, 54),\n",
2941 " (21, 34),\n",
2942 " (22, 1),\n",
2943 " (22, 16),\n",
2944 " (22, 39),\n",
2945 " (22, 46),\n",
2946 " (24, 3),\n",
2947 " (24, 15),\n",
2948 " (24, 52)],\n",
2949 " 'g': [(0, 38),\n",
2950 " (0, 47),\n",
2951 " (2, 23),\n",
2952 " (3, 10),\n",
2953 " (3, 19),\n",
2954 " (3, 44),\n",
2955 " (4, 13),\n",
2956 " (4, 30),\n",
2957 " (4, 46),\n",
2958 " (7, 2),\n",
2959 " (9, 8),\n",
2960 " (9, 20),\n",
2961 " (9, 47),\n",
2962 " (10, 30),\n",
2963 " (11, 4),\n",
2964 " (11, 33),\n",
2965 " (12, 54),\n",
2966 " (15, 31),\n",
2967 " (16, 49),\n",
2968 " (17, 44),\n",
2969 " (18, 5),\n",
2970 " (19, 23),\n",
2971 " (19, 52),\n",
2972 " (20, 6),\n",
2973 " (21, 12),\n",
2974 " (23, 42),\n",
2975 " (23, 45),\n",
2976 " (24, 23)],\n",
2977 " 'i': [(0, 14),\n",
2978 " (1, 2),\n",
2979 " (1, 31),\n",
2980 " (2, 1),\n",
2981 " (2, 22),\n",
2982 " (2, 36),\n",
2983 " (2, 43),\n",
2984 " (2, 52),\n",
2985 " (2, 53),\n",
2986 " (2, 54),\n",
2987 " (3, 11),\n",
2988 " (3, 13),\n",
2989 " (3, 23),\n",
2990 " (3, 25),\n",
2991 " (3, 37),\n",
2992 " (3, 43),\n",
2993 " (4, 0),\n",
2994 " (4, 25),\n",
2995 " (4, 36),\n",
2996 " (4, 45),\n",
2997 " (4, 54),\n",
2998 " (5, 15),\n",
2999 " (5, 19),\n",
3000 " (5, 20),\n",
3001 " (5, 45),\n",
3002 " (6, 0),\n",
3003 " (6, 3),\n",
3004 " (6, 6),\n",
3005 " (7, 16),\n",
3006 " (7, 20),\n",
3007 " (7, 40),\n",
3008 " (8, 11),\n",
3009 " (8, 48),\n",
3010 " (9, 3),\n",
3011 " (9, 5),\n",
3012 " (9, 26),\n",
3013 " (9, 35),\n",
3014 " (9, 53),\n",
3015 " (10, 1),\n",
3016 " (10, 8),\n",
3017 " (10, 14),\n",
3018 " (10, 28),\n",
3019 " (10, 37),\n",
3020 " (10, 40),\n",
3021 " (10, 55),\n",
3022 " (11, 2),\n",
3023 " (11, 12),\n",
3024 " (11, 23),\n",
3025 " (11, 32),\n",
3026 " (11, 44),\n",
3027 " (12, 10),\n",
3028 " (12, 13),\n",
3029 " (12, 14),\n",
3030 " (12, 49),\n",
3031 " (13, 0),\n",
3032 " (13, 5),\n",
3033 " (13, 10),\n",
3034 " (13, 12),\n",
3035 " (13, 22),\n",
3036 " (13, 28),\n",
3037 " (13, 29),\n",
3038 " (13, 48),\n",
3039 " (13, 53),\n",
3040 " (14, 6),\n",
3041 " (14, 9),\n",
3042 " (14, 35),\n",
3043 " (14, 37),\n",
3044 " (14, 47),\n",
3045 " (15, 0),\n",
3046 " (15, 2),\n",
3047 " (15, 3),\n",
3048 " (15, 4),\n",
3049 " (15, 6),\n",
3050 " (15, 8),\n",
3051 " (15, 13),\n",
3052 " (15, 19),\n",
3053 " (15, 29),\n",
3054 " (15, 37),\n",
3055 " (15, 42),\n",
3056 " (16, 7),\n",
3057 " (16, 27),\n",
3058 " (16, 33),\n",
3059 " (16, 41),\n",
3060 " (16, 52),\n",
3061 " (17, 3),\n",
3062 " (17, 9),\n",
3063 " (17, 14),\n",
3064 " (17, 16),\n",
3065 " (17, 32),\n",
3066 " (17, 45),\n",
3067 " (17, 51),\n",
3068 " (17, 55),\n",
3069 " (18, 9),\n",
3070 " (18, 13),\n",
3071 " (18, 16),\n",
3072 " (18, 25),\n",
3073 " (18, 28),\n",
3074 " (18, 29),\n",
3075 " (18, 37),\n",
3076 " (18, 47),\n",
3077 " (19, 15),\n",
3078 " (19, 32),\n",
3079 " (19, 34),\n",
3080 " (19, 49),\n",
3081 " (20, 2),\n",
3082 " (20, 9),\n",
3083 " (20, 10),\n",
3084 " (20, 42),\n",
3085 " (20, 50),\n",
3086 " (21, 7),\n",
3087 " (21, 13),\n",
3088 " (21, 19),\n",
3089 " (21, 50),\n",
3090 " (22, 5),\n",
3091 " (22, 31),\n",
3092 " (23, 38),\n",
3093 " (23, 39),\n",
3094 " (23, 41),\n",
3095 " (24, 20),\n",
3096 " (24, 24),\n",
3097 " (24, 44),\n",
3098 " (24, 47),\n",
3099 " (24, 49)],\n",
3100 " 't': [(0, 7),\n",
3101 " (0, 8),\n",
3102 " (0, 11),\n",
3103 " (0, 18),\n",
3104 " (0, 23),\n",
3105 " (0, 27),\n",
3106 " (0, 49),\n",
3107 " (1, 5),\n",
3108 " (1, 23),\n",
3109 " (1, 29),\n",
3110 " (1, 34),\n",
3111 " (1, 53),\n",
3112 " (2, 8),\n",
3113 " (2, 31),\n",
3114 " (3, 2),\n",
3115 " (3, 38),\n",
3116 " (3, 54),\n",
3117 " (4, 4),\n",
3118 " (4, 17),\n",
3119 " (5, 3),\n",
3120 " (5, 8),\n",
3121 " (5, 32),\n",
3122 " (5, 35),\n",
3123 " (5, 39),\n",
3124 " (5, 50),\n",
3125 " (6, 14),\n",
3126 " (6, 28),\n",
3127 " (6, 31),\n",
3128 " (6, 32),\n",
3129 " (6, 33),\n",
3130 " (6, 45),\n",
3131 " (7, 14),\n",
3132 " (7, 18),\n",
3133 " (7, 19),\n",
3134 " (7, 29),\n",
3135 " (7, 36),\n",
3136 " (7, 42),\n",
3137 " (8, 3),\n",
3138 " (8, 5),\n",
3139 " (8, 19),\n",
3140 " (8, 28),\n",
3141 " (8, 29),\n",
3142 " (8, 37),\n",
3143 " (9, 15),\n",
3144 " (9, 27),\n",
3145 " (9, 30),\n",
3146 " (9, 42),\n",
3147 " (10, 21),\n",
3148 " (10, 25),\n",
3149 " (10, 34),\n",
3150 " (10, 46),\n",
3151 " (10, 48),\n",
3152 " (10, 49),\n",
3153 " (11, 14),\n",
3154 " (11, 17),\n",
3155 " (11, 41),\n",
3156 " (12, 6),\n",
3157 " (12, 11),\n",
3158 " (12, 52),\n",
3159 " (13, 1),\n",
3160 " (13, 7),\n",
3161 " (13, 20),\n",
3162 " (13, 24),\n",
3163 " (14, 0),\n",
3164 " (14, 4),\n",
3165 " (14, 13),\n",
3166 " (14, 14),\n",
3167 " (14, 17),\n",
3168 " (14, 21),\n",
3169 " (14, 22),\n",
3170 " (14, 23),\n",
3171 " (14, 33),\n",
3172 " (14, 39),\n",
3173 " (14, 41),\n",
3174 " (14, 49),\n",
3175 " (15, 11),\n",
3176 " (15, 38),\n",
3177 " (15, 54),\n",
3178 " (16, 4),\n",
3179 " (16, 15),\n",
3180 " (16, 31),\n",
3181 " (17, 4),\n",
3182 " (17, 10),\n",
3183 " (17, 39),\n",
3184 " (17, 41),\n",
3185 " (17, 42),\n",
3186 " (17, 43),\n",
3187 " (17, 46),\n",
3188 " (18, 7),\n",
3189 " (18, 30),\n",
3190 " (18, 36),\n",
3191 " (18, 38),\n",
3192 " (19, 16),\n",
3193 " (19, 22),\n",
3194 " (19, 27),\n",
3195 " (19, 28),\n",
3196 " (19, 39),\n",
3197 " (20, 4),\n",
3198 " (20, 15),\n",
3199 " (20, 28),\n",
3200 " (20, 31),\n",
3201 " (20, 32),\n",
3202 " (20, 39),\n",
3203 " (20, 43),\n",
3204 " (21, 14),\n",
3205 " (21, 27),\n",
3206 " (21, 30),\n",
3207 " (21, 32),\n",
3208 " (21, 39),\n",
3209 " (21, 44),\n",
3210 " (22, 6),\n",
3211 " (22, 25),\n",
3212 " (22, 42),\n",
3213 " (23, 4),\n",
3214 " (23, 6),\n",
3215 " (23, 9),\n",
3216 " (23, 19),\n",
3217 " (23, 22),\n",
3218 " (23, 37),\n",
3219 " (23, 43),\n",
3220 " (23, 47),\n",
3221 " (23, 53),\n",
3222 " (24, 39)],\n",
3223 " 's': [(0, 20),\n",
3224 " (0, 25),\n",
3225 " (1, 6),\n",
3226 " (1, 14),\n",
3227 " (1, 28),\n",
3228 " (1, 54),\n",
3229 " (2, 0),\n",
3230 " (2, 7),\n",
3231 " (2, 17),\n",
3232 " (2, 32),\n",
3233 " (2, 41),\n",
3234 " (2, 42),\n",
3235 " (3, 6),\n",
3236 " (3, 16),\n",
3237 " (3, 17),\n",
3238 " (3, 26),\n",
3239 " (3, 47),\n",
3240 " (3, 48),\n",
3241 " (4, 11),\n",
3242 " (4, 20),\n",
3243 " (5, 2),\n",
3244 " (5, 27),\n",
3245 " (5, 34),\n",
3246 " (5, 41),\n",
3247 " (6, 1),\n",
3248 " (6, 8),\n",
3249 " (7, 1),\n",
3250 " (7, 27),\n",
3251 " (7, 30),\n",
3252 " (7, 34),\n",
3253 " (7, 44),\n",
3254 " (7, 52),\n",
3255 " (7, 55),\n",
3256 " (8, 8),\n",
3257 " (8, 14),\n",
3258 " (8, 55),\n",
3259 " (9, 6),\n",
3260 " (9, 23),\n",
3261 " (9, 38),\n",
3262 " (9, 44),\n",
3263 " (9, 48),\n",
3264 " (9, 55),\n",
3265 " (10, 9),\n",
3266 " (11, 20),\n",
3267 " (11, 21),\n",
3268 " (11, 36),\n",
3269 " (12, 1),\n",
3270 " (12, 15),\n",
3271 " (12, 41),\n",
3272 " (12, 50),\n",
3273 " (13, 44),\n",
3274 " (13, 46),\n",
3275 " (13, 52),\n",
3276 " (14, 26),\n",
3277 " (14, 36),\n",
3278 " (15, 1),\n",
3279 " (15, 7),\n",
3280 " (15, 14),\n",
3281 " (15, 18),\n",
3282 " (15, 34),\n",
3283 " (15, 43),\n",
3284 " (16, 17),\n",
3285 " (16, 42),\n",
3286 " (18, 3),\n",
3287 " (18, 6),\n",
3288 " (18, 19),\n",
3289 " (18, 20),\n",
3290 " (18, 27),\n",
3291 " (18, 31),\n",
3292 " (19, 4),\n",
3293 " (19, 7),\n",
3294 " (19, 10),\n",
3295 " (19, 14),\n",
3296 " (19, 33),\n",
3297 " (19, 41),\n",
3298 " (19, 51),\n",
3299 " (20, 20),\n",
3300 " (21, 11),\n",
3301 " (22, 11),\n",
3302 " (22, 14),\n",
3303 " (22, 15),\n",
3304 " (22, 33),\n",
3305 " (22, 34),\n",
3306 " (22, 36),\n",
3307 " (24, 9),\n",
3308 " (24, 34),\n",
3309 " (24, 41),\n",
3310 " (24, 43)]}"
3311 ]
3312 }
3313 ],
3314 "prompt_number": 21
3315 },
3316 {
3317 "cell_type": "code",
3318 "collapsed": false,
3319 "input": [
3320 "solutions = [[p] for p in letter_positions['p']]\n",
3321 "for letter in 'has': #'haseeight':\n",
3322 " new_solutions = []\n",
3323 " for solution in solutions:\n",
3324 " used_columns = [p[1] for p in solution]\n",
3325 " for position in letter_positions[letter]:\n",
3326 " if position[1] not in used_columns:\n",
3327 " new_solutions += [solution + [position]]\n",
3328 " solutions = new_solutions\n",
3329 "len(solutions)"
3330 ],
3331 "language": "python",
3332 "metadata": {},
3333 "outputs": [
3334 {
3335 "metadata": {},
3336 "output_type": "pyout",
3337 "prompt_number": 24,
3338 "text": [
3339 "17639131"
3340 ]
3341 }
3342 ],
3343 "prompt_number": 24
3344 },
3345 {
3346 "cell_type": "code",
3347 "collapsed": false,
3348 "input": [],
3349 "language": "python",
3350 "metadata": {},
3351 "outputs": [],
3352 "prompt_number": 22
3353 }
3354 ],
3355 "metadata": {}
3356 }
3357 ]
3358 }