f6d9d2e5e37fec50951141724a05d68faae5d3ea
[cipher-tools.git] / 2014 / 2014-challenge8.ipynb
1 {
2 "cells": [
3 {
4 "cell_type": "code",
5 "execution_count": 1,
6 "metadata": {
7 "collapsed": false
8 },
9 "outputs": [],
10 "source": [
11 "import os,sys,inspect\n",
12 "currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))\n",
13 "parentdir = os.path.dirname(currentdir)\n",
14 "sys.path.insert(0,parentdir) \n",
15 "\n",
16 "import matplotlib.pyplot as plt\n",
17 "import pandas as pd\n",
18 "import collections\n",
19 "import string\n",
20 "%matplotlib inline\n",
21 "\n",
22 "from cipherbreak import *\n",
23 "\n",
24 "c8a = open('8a.ciphertext').read()\n",
25 "c8b = open('8b.ciphertext').read().strip()"
26 ]
27 },
28 {
29 "cell_type": "code",
30 "execution_count": 2,
31 "metadata": {
32 "collapsed": false
33 },
34 "outputs": [
35 {
36 "data": {
37 "text/plain": [
38 "<matplotlib.axes._subplots.AxesSubplot at 0x7f42359ab6a0>"
39 ]
40 },
41 "execution_count": 2,
42 "metadata": {},
43 "output_type": "execute_result"
44 },
45 {
46 "data": {
47 "image/png": "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\n",
48 "text/plain": [
49 "<matplotlib.figure.Figure at 0x7f4235991f60>"
50 ]
51 },
52 "metadata": {},
53 "output_type": "display_data"
54 }
55 ],
56 "source": [
57 "freqs = pd.Series(english_counts)\n",
58 "freqs.plot(kind='bar')"
59 ]
60 },
61 {
62 "cell_type": "code",
63 "execution_count": 3,
64 "metadata": {
65 "collapsed": false
66 },
67 "outputs": [
68 {
69 "data": {
70 "text/plain": [
71 "<matplotlib.axes._subplots.AxesSubplot at 0x7f420b429860>"
72 ]
73 },
74 "execution_count": 3,
75 "metadata": {},
76 "output_type": "execute_result"
77 },
78 {
79 "data": {
80 "image/png": "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\nAAAAAElFTkSuQmCC\n",
81 "text/plain": [
82 "<matplotlib.figure.Figure at 0x7f420b4599b0>"
83 ]
84 },
85 "metadata": {},
86 "output_type": "display_data"
87 }
88 ],
89 "source": [
90 "freqs_8a = pd.Series(collections.Counter([l.lower() for l in c8a if l in string.ascii_letters]))\n",
91 "freqs_8a.plot(kind='bar')"
92 ]
93 },
94 {
95 "cell_type": "code",
96 "execution_count": 4,
97 "metadata": {
98 "collapsed": false
99 },
100 "outputs": [
101 {
102 "data": {
103 "text/plain": [
104 "'nyvlggsyglchxfeuytqcesqxpziufiggrbjhpayncruyfpsxufiupskyrectmmcncruyregxigrlglbtiblmecebzsvrlpuxpbibjajrljreobajrlufigjehbezywtmgjyxfqxictsgrdgtbjafyoocwtmjblctwwucqmgofrlfmrfrlfwlbtijlwuypmchjqxicrfchumtsmzjbimyvhcuvyrugxjcwpdtpuisrlfdhbaencyqumufeogrhcrjmytqsmsxjmrcsxjrmttiswzvjrfpecjitnidgemdssaitasvjhuyofgxpsxgmvvqfvrxiyxxmymbxfjpufigbeufeuuiiyzfavbaofbxicmsamqfisqwpgrtribbmtskhcwuuimcxufinbitrvpwxsmnbljppytuixgpmlifbgpmtfpeugsodvpkxicsnyrjeswcvokioreoyvnchggkirishiuyrerlfdpjeluasorvpjwzqxfkwgpsnyhsmrfkiblaigpfuiociersflwvpiuusufmoewpliufeuuiemrprwflhdpmuggbjmodsskeugsoygsmwtrlfzecypnyreyftrvbgxblhuusufeuuivqiblsoavjrmdyplcchcrfpeugsonvprsdmpplxiyxdfeolimemwcrufimczfjsgasnkmukiorxicjeylbtitfsxlmobiwcppnmoexigwqjeogenqyscxiyxufizummjvfgrtreucxictpuisqyqnpzumufmoyjfuqplxiqfvrajrlmsglrlfwajjpomxhsitqxiyxxcoomabzsvrmuyreuixgpmnyugxpsxpdfvqmocwtdssjsoeiomyhfxpasncyqumufeqjeomjpsvpurumiynppgxjrmorlfkiblxjkixcrpuoomaufeurlfgvigkicwuqidsvjrcdmqnsrjaeugsoqescioavznxfbytgrhygbbioswdgticvtmafaeoqxbpxisrugrhrlsmyhfxichbrecywfdssmxicvjlxfpgfnxtuidyrdpedixigwnycccxicfscelrlsmyhfaffewcffcrmmslgrhdssgrufiggkirehymoqxufigbemcxtlsuqgscajryqypmrlfzitrlbpvz'"
105 ]
106 },
107 "execution_count": 4,
108 "metadata": {},
109 "output_type": "execute_result"
110 }
111 ],
112 "source": [
113 "c8as = sanitise(c8a)\n",
114 "c8as"
115 ]
116 },
117 {
118 "cell_type": "code",
119 "execution_count": 5,
120 "metadata": {
121 "collapsed": false
122 },
123 "outputs": [
124 {
125 "data": {
126 "text/plain": [
127 "('bye', -1461.9840974270046)"
128 ]
129 },
130 "execution_count": 5,
131 "metadata": {},
132 "output_type": "execute_result"
133 }
134 ],
135 "source": [
136 "key_a, score = vigenere_frequency_break(c8as)\n",
137 "key_a, score"
138 ]
139 },
140 {
141 "cell_type": "code",
142 "execution_count": 6,
143 "metadata": {
144 "collapsed": false
145 },
146 "outputs": [
147 {
148 "data": {
149 "text/plain": [
150 "'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'"
151 ]
152 },
153 "execution_count": 6,
154 "metadata": {},
155 "output_type": "execute_result"
156 }
157 ],
158 "source": [
159 "' '.join(segment(vigenere_decipher(c8as, key_a)))"
160 ]
161 },
162 {
163 "cell_type": "code",
164 "execution_count": 7,
165 "metadata": {
166 "collapsed": false
167 },
168 "outputs": [
169 {
170 "data": {
171 "text/plain": [
172 "875.0"
173 ]
174 },
175 "execution_count": 7,
176 "metadata": {},
177 "output_type": "execute_result"
178 }
179 ],
180 "source": [
181 "len(c8b) / 8"
182 ]
183 },
184 {
185 "cell_type": "code",
186 "execution_count": 8,
187 "metadata": {
188 "collapsed": false
189 },
190 "outputs": [
191 {
192 "data": {
193 "text/plain": [
194 "['00000',\n",
195 " '00101',\n",
196 " '00010',\n",
197 " '00000',\n",
198 " '00100',\n",
199 " '10100',\n",
200 " '01110',\n",
201 " '10011',\n",
202 " '10011',\n",
203 " '00000',\n",
204 " '00010',\n",
205 " '10011',\n",
206 " '00111',\n",
207 " '10001',\n",
208 " '01000',\n",
209 " '01110',\n",
210 " '01011',\n",
211 " '00100',\n",
212 " '10011',\n",
213 " '00010',\n",
214 " '10010',\n",
215 " '00100',\n",
216 " '10001',\n",
217 " '10011',\n",
218 " '00111',\n",
219 " '10010',\n",
220 " '00111',\n",
221 " '10011',\n",
222 " '10001',\n",
223 " '00000',\n",
224 " '00111',\n",
225 " '01010',\n",
226 " '11000',\n",
227 " '01110',\n",
228 " '10001',\n",
229 " '01111',\n",
230 " '00101',\n",
231 " '10001',\n",
232 " '00110',\n",
233 " '00100',\n",
234 " '01110',\n",
235 " '00000',\n",
236 " '00011',\n",
237 " '01111',\n",
238 " '01111',\n",
239 " '01001',\n",
240 " '01101',\n",
241 " '00110',\n",
242 " '01011',\n",
243 " '10011',\n",
244 " '00100',\n",
245 " '10001',\n",
246 " '01101',\n",
247 " '00100',\n",
248 " '00101',\n",
249 " '00100',\n",
250 " '01110',\n",
251 " '00101',\n",
252 " '01000',\n",
253 " '01110',\n",
254 " '10001',\n",
255 " '10011',\n",
256 " '10010',\n",
257 " '00011',\n",
258 " '00011',\n",
259 " '01110',\n",
260 " '00100',\n",
261 " '00100',\n",
262 " '10100',\n",
263 " '01100',\n",
264 " '10010',\n",
265 " '00010',\n",
266 " '10001',\n",
267 " '10100',\n",
268 " '00100',\n",
269 " '10001',\n",
270 " '01101',\n",
271 " '00101',\n",
272 " '00100',\n",
273 " '10011',\n",
274 " '01011',\n",
275 " '00000',\n",
276 " '00000',\n",
277 " '00101',\n",
278 " '10010',\n",
279 " '10011',\n",
280 " '10110',\n",
281 " '01000',\n",
282 " '00100',\n",
283 " '01101',\n",
284 " '10011',\n",
285 " '10001',\n",
286 " '10101',\n",
287 " '01110',\n",
288 " '01110',\n",
289 " '01101',\n",
290 " '00100',\n",
291 " '10001',\n",
292 " '00111',\n",
293 " '10100',\n",
294 " '00000',\n",
295 " '00111',\n",
296 " '10001',\n",
297 " '00000',\n",
298 " '10101',\n",
299 " '00100',\n",
300 " '10001',\n",
301 " '00100',\n",
302 " '00100',\n",
303 " '10011',\n",
304 " '10010',\n",
305 " '10101',\n",
306 " '10010',\n",
307 " '01000',\n",
308 " '00100',\n",
309 " '01011',\n",
310 " '00111',\n",
311 " '01011',\n",
312 " '01110',\n",
313 " '10010',\n",
314 " '10011',\n",
315 " '00011',\n",
316 " '01110',\n",
317 " '00000',\n",
318 " '01011',\n",
319 " '01110',\n",
320 " '11000',\n",
321 " '00000',\n",
322 " '00100',\n",
323 " '10010',\n",
324 " '01100',\n",
325 " '01101',\n",
326 " '01101',\n",
327 " '00011',\n",
328 " '01000',\n",
329 " '00110',\n",
330 " '01101',\n",
331 " '01101',\n",
332 " '10001',\n",
333 " '00111',\n",
334 " '01110',\n",
335 " '00111',\n",
336 " '00111',\n",
337 " '10011',\n",
338 " '10010',\n",
339 " '01101',\n",
340 " '00000',\n",
341 " '01110',\n",
342 " '01000',\n",
343 " '01011',\n",
344 " '01101',\n",
345 " '00010',\n",
346 " '01101',\n",
347 " '10010',\n",
348 " '10010',\n",
349 " '01000',\n",
350 " '00010',\n",
351 " '10001',\n",
352 " '00100',\n",
353 " '00000',\n",
354 " '01101',\n",
355 " '01101',\n",
356 " '00100',\n",
357 " '00100',\n",
358 " '01000',\n",
359 " '01000',\n",
360 " '01000',\n",
361 " '00100',\n",
362 " '10001',\n",
363 " '10110',\n",
364 " '10011',\n",
365 " '00000',\n",
366 " '01101',\n",
367 " '00100',\n",
368 " '10010',\n",
369 " '10001',\n",
370 " '10101',\n",
371 " '01110',\n",
372 " '00110',\n",
373 " '01000',\n",
374 " '00100',\n",
375 " '01000',\n",
376 " '11000',\n",
377 " '10110',\n",
378 " '10010',\n",
379 " '10010',\n",
380 " '00011',\n",
381 " '00110',\n",
382 " '01111',\n",
383 " '10101',\n",
384 " '01110',\n",
385 " '01000',\n",
386 " '00000',\n",
387 " '01000',\n",
388 " '10010',\n",
389 " '00000',\n",
390 " '01110',\n",
391 " '00000',\n",
392 " '00100',\n",
393 " '01110',\n",
394 " '00000',\n",
395 " '00100',\n",
396 " '00011',\n",
397 " '10001',\n",
398 " '01101',\n",
399 " '01000',\n",
400 " '10011',\n",
401 " '10001',\n",
402 " '01101',\n",
403 " '10111',\n",
404 " '00100',\n",
405 " '01000',\n",
406 " '00110',\n",
407 " '10001',\n",
408 " '01111',\n",
409 " '10010',\n",
410 " '10010',\n",
411 " '00111',\n",
412 " '00000',\n",
413 " '00011',\n",
414 " '00111',\n",
415 " '00011',\n",
416 " '10011',\n",
417 " '01110',\n",
418 " '01000',\n",
419 " '01111',\n",
420 " '00000',\n",
421 " '00000',\n",
422 " '10011',\n",
423 " '00100',\n",
424 " '10111',\n",
425 " '00100',\n",
426 " '01101',\n",
427 " '01101',\n",
428 " '00100',\n",
429 " '10010',\n",
430 " '00000',\n",
431 " '00110',\n",
432 " '10001',\n",
433 " '01110',\n",
434 " '00001',\n",
435 " '10011',\n",
436 " '01011',\n",
437 " '00100',\n",
438 " '10010',\n",
439 " '10001',\n",
440 " '01101',\n",
441 " '10001',\n",
442 " '01110',\n",
443 " '01000',\n",
444 " '10001',\n",
445 " '11000',\n",
446 " '01111',\n",
447 " '00001',\n",
448 " '00110',\n",
449 " '00100',\n",
450 " '00011',\n",
451 " '00010',\n",
452 " '01011',\n",
453 " '01011',\n",
454 " '01000',\n",
455 " '10110',\n",
456 " '00000',\n",
457 " '01011',\n",
458 " '00000',\n",
459 " '01011',\n",
460 " '00100',\n",
461 " '00100',\n",
462 " '01101',\n",
463 " '01000',\n",
464 " '00110',\n",
465 " '10001',\n",
466 " '10001',\n",
467 " '01101',\n",
468 " '10110',\n",
469 " '11000',\n",
470 " '10001',\n",
471 " '01011',\n",
472 " '01000',\n",
473 " '01100',\n",
474 " '01011',\n",
475 " '01111',\n",
476 " '10010',\n",
477 " '10011',\n",
478 " '01110',\n",
479 " '01011',\n",
480 " '00100',\n",
481 " '00101',\n",
482 " '10011',\n",
483 " '10001',\n",
484 " '00011',\n",
485 " '01100',\n",
486 " '10100',\n",
487 " '00000',\n",
488 " '10001',\n",
489 " '01000',\n",
490 " '00100',\n",
491 " '00100',\n",
492 " '00100',\n",
493 " '01000',\n",
494 " '01000',\n",
495 " '00000',\n",
496 " '01110',\n",
497 " '01011',\n",
498 " '01101',\n",
499 " '00100',\n",
500 " '10110',\n",
501 " '10010',\n",
502 " '00000',\n",
503 " '01110',\n",
504 " '00111',\n",
505 " '10001',\n",
506 " '10011',\n",
507 " '01011',\n",
508 " '10010',\n",
509 " '10011',\n",
510 " '01110',\n",
511 " '00001',\n",
512 " '00100',\n",
513 " '10011',\n",
514 " '01101',\n",
515 " '10010',\n",
516 " '01011',\n",
517 " '10101',\n",
518 " '00101',\n",
519 " '01000',\n",
520 " '10101',\n",
521 " '00011',\n",
522 " '01110',\n",
523 " '10101',\n",
524 " '10011',\n",
525 " '01111',\n",
526 " '01110',\n",
527 " '00000',\n",
528 " '00100',\n",
529 " '00100',\n",
530 " '01000',\n",
531 " '10010',\n",
532 " '00010',\n",
533 " '01000',\n",
534 " '01110',\n",
535 " '00111',\n",
536 " '01000',\n",
537 " '01111',\n",
538 " '10010',\n",
539 " '00100',\n",
540 " '10101',\n",
541 " '00100',\n",
542 " '00100',\n",
543 " '00011',\n",
544 " '10011',\n",
545 " '00100',\n",
546 " '10110',\n",
547 " '00101',\n",
548 " '00000',\n",
549 " '10001',\n",
550 " '01101',\n",
551 " '00111',\n",
552 " '00100',\n",
553 " '00001',\n",
554 " '01011',\n",
555 " '00100',\n",
556 " '00000',\n",
557 " '01110',\n",
558 " '10011',\n",
559 " '01110',\n",
560 " '00111',\n",
561 " '10011',\n",
562 " '10011',\n",
563 " '10011',\n",
564 " '00100',\n",
565 " '01111',\n",
566 " '01101',\n",
567 " '00010',\n",
568 " '01010',\n",
569 " '00000',\n",
570 " '01110',\n",
571 " '01101',\n",
572 " '00111',\n",
573 " '10110',\n",
574 " '00100',\n",
575 " '10011',\n",
576 " '01100',\n",
577 " '10101',\n",
578 " '11000',\n",
579 " '01111',\n",
580 " '10001',\n",
581 " '10001',\n",
582 " '00100',\n",
583 " '01110',\n",
584 " '01101',\n",
585 " '01101',\n",
586 " '00000',\n",
587 " '10010',\n",
588 " '00110',\n",
589 " '00011',\n",
590 " '00100',\n",
591 " '00011',\n",
592 " '01110',\n",
593 " '00100',\n",
594 " '00100',\n",
595 " '00100',\n",
596 " '01110',\n",
597 " '00000',\n",
598 " '00000',\n",
599 " '01100',\n",
600 " '10011',\n",
601 " '00010',\n",
602 " '01000',\n",
603 " '00010',\n",
604 " '10011',\n",
605 " '10011',\n",
606 " '01000',\n",
607 " '00101',\n",
608 " '01101',\n",
609 " '00000',\n",
610 " '00011',\n",
611 " '10001',\n",
612 " '00100',\n",
613 " '10010',\n",
614 " '10001',\n",
615 " '10011',\n",
616 " '10010',\n",
617 " '00100',\n",
618 " '10001',\n",
619 " '01110',\n",
620 " '10010',\n",
621 " '00100',\n",
622 " '10011',\n",
623 " '10001',\n",
624 " '00111',\n",
625 " '00010',\n",
626 " '01000',\n",
627 " '00010',\n",
628 " '10011',\n",
629 " '01111',\n",
630 " '10010',\n",
631 " '00000',\n",
632 " '00000',\n",
633 " '00100',\n",
634 " '00111',\n",
635 " '01011',\n",
636 " '00011',\n",
637 " '00111',\n",
638 " '10010',\n",
639 " '00101',\n",
640 " '10111',\n",
641 " '10010',\n",
642 " '01110',\n",
643 " '00000',\n",
644 " '01110',\n",
645 " '10011',\n",
646 " '00010',\n",
647 " '10011',\n",
648 " '00001',\n",
649 " '00001',\n",
650 " '10010',\n",
651 " '01110',\n",
652 " '00100',\n",
653 " '01000',\n",
654 " '10001',\n",
655 " '01101',\n",
656 " '10010',\n",
657 " '00000',\n",
658 " '00011',\n",
659 " '01011',\n",
660 " '11000',\n",
661 " '10011',\n",
662 " '10001',\n",
663 " '10001',\n",
664 " '10100',\n",
665 " '01101',\n",
666 " '10001',\n",
667 " '00010',\n",
668 " '00100',\n",
669 " '01111',\n",
670 " '10011',\n",
671 " '10011',\n",
672 " '00111',\n",
673 " '10001',\n",
674 " '00100',\n",
675 " '10100',\n",
676 " '00111',\n",
677 " '01101',\n",
678 " '01010',\n",
679 " '10011',\n",
680 " '00000',\n",
681 " '00010',\n",
682 " '00100',\n",
683 " '00010',\n",
684 " '00100',\n",
685 " '00100',\n",
686 " '01011',\n",
687 " '10001',\n",
688 " '10110',\n",
689 " '01101',\n",
690 " '01000',\n",
691 " '10001',\n",
692 " '00100',\n",
693 " '00100',\n",
694 " '00100',\n",
695 " '00000',\n",
696 " '00100',\n",
697 " '10010',\n",
698 " '00100',\n",
699 " '00100',\n",
700 " '00100',\n",
701 " '01000',\n",
702 " '00011',\n",
703 " '01000',\n",
704 " '10010',\n",
705 " '01110',\n",
706 " '00110',\n",
707 " '00010',\n",
708 " '00100',\n",
709 " '01110',\n",
710 " '01100',\n",
711 " '01101',\n",
712 " '10001',\n",
713 " '10011',\n",
714 " '00100',\n",
715 " '01001',\n",
716 " '00111',\n",
717 " '00000',\n",
718 " '00110',\n",
719 " '00000',\n",
720 " '00001',\n",
721 " '10010',\n",
722 " '00100',\n",
723 " '01101',\n",
724 " '01000',\n",
725 " '10011',\n",
726 " '01011',\n",
727 " '10110',\n",
728 " '10011',\n",
729 " '10001',\n",
730 " '01101',\n",
731 " '00001',\n",
732 " '01100',\n",
733 " '01000',\n",
734 " '00100',\n",
735 " '01011',\n",
736 " '10010',\n",
737 " '00000',\n",
738 " '10001',\n",
739 " '00100',\n",
740 " '10011',\n",
741 " '00100',\n",
742 " '10010',\n",
743 " '10001',\n",
744 " '01101',\n",
745 " '00110',\n",
746 " '10010',\n",
747 " '01101',\n",
748 " '00111',\n",
749 " '00100',\n",
750 " '00001',\n",
751 " '01000',\n",
752 " '01110',\n",
753 " '10010',\n",
754 " '00011',\n",
755 " '01000',\n",
756 " '00100',\n",
757 " '01101',\n",
758 " '00000',\n",
759 " '00101',\n",
760 " '01011',\n",
761 " '00100',\n",
762 " '01000',\n",
763 " '10010',\n",
764 " '00000',\n",
765 " '00111',\n",
766 " '01110',\n",
767 " '00010',\n",
768 " '01000',\n",
769 " '00101',\n",
770 " '00100',\n",
771 " '10101',\n",
772 " '01100',\n",
773 " '00101',\n",
774 " '00000',\n",
775 " '10011',\n",
776 " '00000',\n",
777 " '01101',\n",
778 " '00000',\n",
779 " '10011',\n",
780 " '10001',\n",
781 " '01101',\n",
782 " '01000',\n",
783 " '00000',\n",
784 " '00110',\n",
785 " '01101',\n",
786 " '00111',\n",
787 " '00000',\n",
788 " '10011',\n",
789 " '01101',\n",
790 " '01100',\n",
791 " '01000',\n",
792 " '00001',\n",
793 " '01101',\n",
794 " '01000',\n",
795 " '10100',\n",
796 " '00101',\n",
797 " '00100',\n",
798 " '01101',\n",
799 " '10001',\n",
800 " '10011',\n",
801 " '01110',\n",
802 " '10011',\n",
803 " '10011',\n",
804 " '10001',\n",
805 " '01101',\n",
806 " '11000',\n",
807 " '01111',\n",
808 " '00000',\n",
809 " '01000',\n",
810 " '00011',\n",
811 " '11000',\n",
812 " '01000',\n",
813 " '00100',\n",
814 " '00110',\n",
815 " '00011',\n",
816 " '01101',\n",
817 " '01100',\n",
818 " '00100',\n",
819 " '10001',\n",
820 " '00111',\n",
821 " '00111',\n",
822 " '01000',\n",
823 " '01110',\n",
824 " '10011',\n",
825 " '10001',\n",
826 " '00100',\n",
827 " '10011',\n",
828 " '00010',\n",
829 " '00100',\n",
830 " '10010',\n",
831 " '10010',\n",
832 " '00100',\n",
833 " '01000',\n",
834 " '01011',\n",
835 " '00011',\n",
836 " '10001',\n",
837 " '00001',\n",
838 " '00010',\n",
839 " '00100',\n",
840 " '01111',\n",
841 " '10001',\n",
842 " '01000',\n",
843 " '00110',\n",
844 " '00000',\n",
845 " '00100',\n",
846 " '10010',\n",
847 " '01110',\n",
848 " '00000',\n",
849 " '00011',\n",
850 " '01011',\n",
851 " '10011',\n",
852 " '00000',\n",
853 " '00111',\n",
854 " '01000',\n",
855 " '00100',\n",
856 " '10101',\n",
857 " '00100',\n",
858 " '00001',\n",
859 " '10001',\n",
860 " '00010',\n",
861 " '00100',\n",
862 " '01101',\n",
863 " '01011',\n",
864 " '00100',\n",
865 " '10101',\n",
866 " '00000',\n",
867 " '10010',\n",
868 " '00000',\n",
869 " '00011',\n",
870 " '01101',\n",
871 " '01101',\n",
872 " '10011',\n",
873 " '00111',\n",
874 " '01101',\n",
875 " '00100',\n",
876 " '01000',\n",
877 " '10011',\n",
878 " '00100',\n",
879 " '01000',\n",
880 " '01000',\n",
881 " '10010',\n",
882 " '00000',\n",
883 " '00111',\n",
884 " '10100',\n",
885 " '00111',\n",
886 " '00111',\n",
887 " '10100',\n",
888 " '00000',\n",
889 " '01100',\n",
890 " '01110',\n",
891 " '01101',\n",
892 " '00100',\n",
893 " '00101',\n",
894 " '11000',\n",
895 " '00111',\n",
896 " '01011',\n",
897 " '01110',\n",
898 " '01101',\n",
899 " '10110',\n",
900 " '00111',\n",
901 " '00000',\n",
902 " '00100',\n",
903 " '00100',\n",
904 " '00100',\n",
905 " '00100',\n",
906 " '01110',\n",
907 " '10010',\n",
908 " '01101',\n",
909 " '00100',\n",
910 " '00100',\n",
911 " '11000',\n",
912 " '00000',\n",
913 " '01101',\n",
914 " '00100',\n",
915 " '01000',\n",
916 " '10010',\n",
917 " '00100',\n",
918 " '10011',\n",
919 " '01110',\n",
920 " '00110',\n",
921 " '11000',\n",
922 " '01000',\n",
923 " '10011',\n",
924 " '00100',\n",
925 " '10001',\n",
926 " '01011',\n",
927 " '01000',\n",
928 " '00111',\n",
929 " '10011',\n",
930 " '00010',\n",
931 " '01100',\n",
932 " '01000',\n",
933 " '01110',\n",
934 " '01000',\n",
935 " '10001',\n",
936 " '00000',\n",
937 " '10001',\n",
938 " '00101',\n",
939 " '00011',\n",
940 " '01110',\n",
941 " '00100',\n",
942 " '10011',\n",
943 " '01101',\n",
944 " '01000',\n",
945 " '00111',\n",
946 " '10011',\n",
947 " '01101',\n",
948 " '00100',\n",
949 " '00111',\n",
950 " '01000',\n",
951 " '01000',\n",
952 " '01010',\n",
953 " '00000',\n",
954 " '01100',\n",
955 " '10001',\n",
956 " '00011',\n",
957 " '01100',\n",
958 " '01101',\n",
959 " '00000',\n",
960 " '00011',\n",
961 " '00000',\n",
962 " '01101',\n",
963 " '00000',\n",
964 " '01110',\n",
965 " '00011',\n",
966 " '10010',\n",
967 " '00100',\n",
968 " '10010',\n",
969 " '00100',\n",
970 " '01000',\n",
971 " '11000',\n",
972 " '00010',\n",
973 " '01011',\n",
974 " '10010',\n",
975 " '01000',\n",
976 " '00000',\n",
977 " '01101',\n",
978 " '10011',\n",
979 " '00000',\n",
980 " '01110',\n",
981 " '01011',\n",
982 " '10011',\n",
983 " '00010',\n",
984 " '01000',\n",
985 " '11000',\n",
986 " '01100',\n",
987 " '01000',\n",
988 " '00011',\n",
989 " '00100',\n",
990 " '01101',\n",
991 " '10011',\n",
992 " '10011',\n",
993 " '00111',\n",
994 " '01011',\n",
995 " '10011',\n",
996 " '01101',\n",
997 " '00011',\n",
998 " '10111',\n",
999 " '10011',\n",
1000 " '10011',\n",
1001 " '10011',\n",
1002 " '01100',\n",
1003 " '00000',\n",
1004 " '10010',\n",
1005 " '00001',\n",
1006 " '01011',\n",
1007 " '00100',\n",
1008 " '00000',\n",
1009 " '00100',\n",
1010 " '00100',\n",
1011 " '10011',\n",
1012 " '01011',\n",
1013 " '01000',\n",
1014 " '10010',\n",
1015 " '01000',\n",
1016 " '10001',\n",
1017 " '10011',\n",
1018 " '10110',\n",
1019 " '10011',\n",
1020 " '10100',\n",
1021 " '10001',\n",
1022 " '01111',\n",
1023 " '00101',\n",
1024 " '00000',\n",
1025 " '01000',\n",
1026 " '01011',\n",
1027 " '10011',\n",
1028 " '00100',\n",
1029 " '00000',\n",
1030 " '01110',\n",
1031 " '00100',\n",
1032 " '00101',\n",
1033 " '00100',\n",
1034 " '01000',\n",
1035 " '10010',\n",
1036 " '01000',\n",
1037 " '01000',\n",
1038 " '01000',\n",
1039 " '11000',\n",
1040 " '01000',\n",
1041 " '10010',\n",
1042 " '01000',\n",
1043 " '01010',\n",
1044 " '10101',\n",
1045 " '10011',\n",
1046 " '10110',\n",
1047 " '01000',\n",
1048 " '10010',\n",
1049 " '01111',\n",
1050 " '10001',\n",
1051 " '00001',\n",
1052 " '10010',\n",
1053 " '01000',\n",
1054 " '01101',\n",
1055 " '00100',\n",
1056 " '01011',\n",
1057 " '01111',\n",
1058 " '00111',\n",
1059 " '10001',\n",
1060 " '01100',\n",
1061 " '01110',\n",
1062 " '00111',\n",
1063 " '01000',\n",
1064 " '00000',\n",
1065 " '00110',\n",
1066 " '01101',\n",
1067 " '01011',\n",
1068 " '10010',\n",
1069 " '01011',\n",
1070 " '10101',\n",
1071 " '01000',\n",
1072 " '10011',\n",
1073 " '01110',\n",
1074 " '00011',\n",
1075 " '00000',\n",
1076 " '01000',\n",
1077 " '10010',\n",
1078 " '00011',\n",
1079 " '01111',\n",
1080 " '01101',\n",
1081 " '11000',\n",
1082 " '00011',\n",
1083 " '00011',\n",
1084 " '00010',\n",
1085 " '00000',\n",
1086 " '00000',\n",
1087 " '01110',\n",
1088 " '10011',\n",
1089 " '00000',\n",
1090 " '00111',\n",
1091 " '00010',\n",
1092 " '00100',\n",
1093 " '00111',\n",
1094 " '10011',\n",
1095 " '10100',\n",
1096 " '00100',\n",
1097 " '01000',\n",
1098 " '10001',\n",
1099 " '10001',\n",
1100 " '00100',\n",
1101 " '00011',\n",
1102 " '00000',\n",
1103 " '00100',\n",
1104 " '00010',\n",
1105 " '10011',\n",
1106 " '01110',\n",
1107 " '10010',\n",
1108 " '01101',\n",
1109 " '10001',\n",
1110 " '00111',\n",
1111 " '10101',\n",
1112 " '01101',\n",
1113 " '00000',\n",
1114 " '01110',\n",
1115 " '00011',\n",
1116 " '01110',\n",
1117 " '01000',\n",
1118 " '01010',\n",
1119 " '01110',\n",
1120 " '00100',\n",
1121 " '10011',\n",
1122 " '00010',\n",
1123 " '01000',\n",
1124 " '01101',\n",
1125 " '00100',\n",
1126 " '01101',\n",
1127 " '00100',\n",
1128 " '10100',\n",
1129 " '10001',\n",
1130 " '10001',\n",
1131 " '01000',\n",
1132 " '10010',\n",
1133 " '00011',\n",
1134 " '00010',\n",
1135 " '01110',\n",
1136 " '10100',\n",
1137 " '10001',\n",
1138 " '00000',\n",
1139 " '00110',\n",
1140 " '01011',\n",
1141 " '10101',\n",
1142 " '01000',\n",
1143 " '01100',\n",
1144 " '01100',\n",
1145 " '10100',\n",
1146 " '01111',\n",
1147 " '01111',\n",
1148 " '00011',\n",
1149 " '01000',\n",
1150 " '10011',\n",
1151 " '00100',\n",
1152 " '00000',\n",
1153 " '01101',\n",
1154 " '00011',\n",
1155 " '01000',\n",
1156 " '10011',\n",
1157 " '01100',\n",
1158 " '00000',\n",
1159 " '00000',\n",
1160 " '01000',\n",
1161 " '00000',\n",
1162 " '01000',\n",
1163 " '00100',\n",
1164 " '01011',\n",
1165 " '00100',\n",
1166 " '01110',\n",
1167 " '01101',\n",
1168 " '01101',\n",
1169 " '10001',\n",
1170 " '00100',\n",
1171 " '00100',\n",
1172 " '00011',\n",
1173 " '00000',\n",
1174 " '01110',\n",
1175 " '00011',\n",
1176 " '00001',\n",
1177 " '01110',\n",
1178 " '01000',\n",
1179 " '10100',\n",
1180 " '01100',\n",
1181 " '00100',\n",
1182 " '01011',\n",
1183 " '10001',\n",
1184 " '01110',\n",
1185 " '10011',\n",
1186 " '01101',\n",
1187 " '10011',\n",
1188 " '10011',\n",
1189 " '10011',\n",
1190 " '00110',\n",
1191 " '01000',\n",
1192 " '10011',\n",
1193 " '01101',\n",
1194 " ...]"
1195 ]
1196 },
1197 "execution_count": 8,
1198 "metadata": {},
1199 "output_type": "execute_result"
1200 }
1201 ],
1202 "source": [
1203 "[c for c in chunks(c8b, 5)]"
1204 ]
1205 },
1206 {
1207 "cell_type": "code",
1208 "execution_count": 9,
1209 "metadata": {
1210 "collapsed": false
1211 },
1212 "outputs": [
1213 {
1214 "data": {
1215 "text/plain": [
1216 "[0,\n",
1217 " 5,\n",
1218 " 2,\n",
1219 " 0,\n",
1220 " 4,\n",
1221 " 20,\n",
1222 " 14,\n",
1223 " 19,\n",
1224 " 19,\n",
1225 " 0,\n",
1226 " 2,\n",
1227 " 19,\n",
1228 " 7,\n",
1229 " 17,\n",
1230 " 8,\n",
1231 " 14,\n",
1232 " 11,\n",
1233 " 4,\n",
1234 " 19,\n",
1235 " 2,\n",
1236 " 18,\n",
1237 " 4,\n",
1238 " 17,\n",
1239 " 19,\n",
1240 " 7,\n",
1241 " 18,\n",
1242 " 7,\n",
1243 " 19,\n",
1244 " 17,\n",
1245 " 0,\n",
1246 " 7,\n",
1247 " 10,\n",
1248 " 24,\n",
1249 " 14,\n",
1250 " 17,\n",
1251 " 15,\n",
1252 " 5,\n",
1253 " 17,\n",
1254 " 6,\n",
1255 " 4,\n",
1256 " 14,\n",
1257 " 0,\n",
1258 " 3,\n",
1259 " 15,\n",
1260 " 15,\n",
1261 " 9,\n",
1262 " 13,\n",
1263 " 6,\n",
1264 " 11,\n",
1265 " 19,\n",
1266 " 4,\n",
1267 " 17,\n",
1268 " 13,\n",
1269 " 4,\n",
1270 " 5,\n",
1271 " 4,\n",
1272 " 14,\n",
1273 " 5,\n",
1274 " 8,\n",
1275 " 14,\n",
1276 " 17,\n",
1277 " 19,\n",
1278 " 18,\n",
1279 " 3,\n",
1280 " 3,\n",
1281 " 14,\n",
1282 " 4,\n",
1283 " 4,\n",
1284 " 20,\n",
1285 " 12,\n",
1286 " 18,\n",
1287 " 2,\n",
1288 " 17,\n",
1289 " 20,\n",
1290 " 4,\n",
1291 " 17,\n",
1292 " 13,\n",
1293 " 5,\n",
1294 " 4,\n",
1295 " 19,\n",
1296 " 11,\n",
1297 " 0,\n",
1298 " 0,\n",
1299 " 5,\n",
1300 " 18,\n",
1301 " 19,\n",
1302 " 22,\n",
1303 " 8,\n",
1304 " 4,\n",
1305 " 13,\n",
1306 " 19,\n",
1307 " 17,\n",
1308 " 21,\n",
1309 " 14,\n",
1310 " 14,\n",
1311 " 13,\n",
1312 " 4,\n",
1313 " 17,\n",
1314 " 7,\n",
1315 " 20,\n",
1316 " 0,\n",
1317 " 7,\n",
1318 " 17,\n",
1319 " 0,\n",
1320 " 21,\n",
1321 " 4,\n",
1322 " 17,\n",
1323 " 4,\n",
1324 " 4,\n",
1325 " 19,\n",
1326 " 18,\n",
1327 " 21,\n",
1328 " 18,\n",
1329 " 8,\n",
1330 " 4,\n",
1331 " 11,\n",
1332 " 7,\n",
1333 " 11,\n",
1334 " 14,\n",
1335 " 18,\n",
1336 " 19,\n",
1337 " 3,\n",
1338 " 14,\n",
1339 " 0,\n",
1340 " 11,\n",
1341 " 14,\n",
1342 " 24,\n",
1343 " 0,\n",
1344 " 4,\n",
1345 " 18,\n",
1346 " 12,\n",
1347 " 13,\n",
1348 " 13,\n",
1349 " 3,\n",
1350 " 8,\n",
1351 " 6,\n",
1352 " 13,\n",
1353 " 13,\n",
1354 " 17,\n",
1355 " 7,\n",
1356 " 14,\n",
1357 " 7,\n",
1358 " 7,\n",
1359 " 19,\n",
1360 " 18,\n",
1361 " 13,\n",
1362 " 0,\n",
1363 " 14,\n",
1364 " 8,\n",
1365 " 11,\n",
1366 " 13,\n",
1367 " 2,\n",
1368 " 13,\n",
1369 " 18,\n",
1370 " 18,\n",
1371 " 8,\n",
1372 " 2,\n",
1373 " 17,\n",
1374 " 4,\n",
1375 " 0,\n",
1376 " 13,\n",
1377 " 13,\n",
1378 " 4,\n",
1379 " 4,\n",
1380 " 8,\n",
1381 " 8,\n",
1382 " 8,\n",
1383 " 4,\n",
1384 " 17,\n",
1385 " 22,\n",
1386 " 19,\n",
1387 " 0,\n",
1388 " 13,\n",
1389 " 4,\n",
1390 " 18,\n",
1391 " 17,\n",
1392 " 21,\n",
1393 " 14,\n",
1394 " 6,\n",
1395 " 8,\n",
1396 " 4,\n",
1397 " 8,\n",
1398 " 24,\n",
1399 " 22,\n",
1400 " 18,\n",
1401 " 18,\n",
1402 " 3,\n",
1403 " 6,\n",
1404 " 15,\n",
1405 " 21,\n",
1406 " 14,\n",
1407 " 8,\n",
1408 " 0,\n",
1409 " 8,\n",
1410 " 18,\n",
1411 " 0,\n",
1412 " 14,\n",
1413 " 0,\n",
1414 " 4,\n",
1415 " 14,\n",
1416 " 0,\n",
1417 " 4,\n",
1418 " 3,\n",
1419 " 17,\n",
1420 " 13,\n",
1421 " 8,\n",
1422 " 19,\n",
1423 " 17,\n",
1424 " 13,\n",
1425 " 23,\n",
1426 " 4,\n",
1427 " 8,\n",
1428 " 6,\n",
1429 " 17,\n",
1430 " 15,\n",
1431 " 18,\n",
1432 " 18,\n",
1433 " 7,\n",
1434 " 0,\n",
1435 " 3,\n",
1436 " 7,\n",
1437 " 3,\n",
1438 " 19,\n",
1439 " 14,\n",
1440 " 8,\n",
1441 " 15,\n",
1442 " 0,\n",
1443 " 0,\n",
1444 " 19,\n",
1445 " 4,\n",
1446 " 23,\n",
1447 " 4,\n",
1448 " 13,\n",
1449 " 13,\n",
1450 " 4,\n",
1451 " 18,\n",
1452 " 0,\n",
1453 " 6,\n",
1454 " 17,\n",
1455 " 14,\n",
1456 " 1,\n",
1457 " 19,\n",
1458 " 11,\n",
1459 " 4,\n",
1460 " 18,\n",
1461 " 17,\n",
1462 " 13,\n",
1463 " 17,\n",
1464 " 14,\n",
1465 " 8,\n",
1466 " 17,\n",
1467 " 24,\n",
1468 " 15,\n",
1469 " 1,\n",
1470 " 6,\n",
1471 " 4,\n",
1472 " 3,\n",
1473 " 2,\n",
1474 " 11,\n",
1475 " 11,\n",
1476 " 8,\n",
1477 " 22,\n",
1478 " 0,\n",
1479 " 11,\n",
1480 " 0,\n",
1481 " 11,\n",
1482 " 4,\n",
1483 " 4,\n",
1484 " 13,\n",
1485 " 8,\n",
1486 " 6,\n",
1487 " 17,\n",
1488 " 17,\n",
1489 " 13,\n",
1490 " 22,\n",
1491 " 24,\n",
1492 " 17,\n",
1493 " 11,\n",
1494 " 8,\n",
1495 " 12,\n",
1496 " 11,\n",
1497 " 15,\n",
1498 " 18,\n",
1499 " 19,\n",
1500 " 14,\n",
1501 " 11,\n",
1502 " 4,\n",
1503 " 5,\n",
1504 " 19,\n",
1505 " 17,\n",
1506 " 3,\n",
1507 " 12,\n",
1508 " 20,\n",
1509 " 0,\n",
1510 " 17,\n",
1511 " 8,\n",
1512 " 4,\n",
1513 " 4,\n",
1514 " 4,\n",
1515 " 8,\n",
1516 " 8,\n",
1517 " 0,\n",
1518 " 14,\n",
1519 " 11,\n",
1520 " 13,\n",
1521 " 4,\n",
1522 " 22,\n",
1523 " 18,\n",
1524 " 0,\n",
1525 " 14,\n",
1526 " 7,\n",
1527 " 17,\n",
1528 " 19,\n",
1529 " 11,\n",
1530 " 18,\n",
1531 " 19,\n",
1532 " 14,\n",
1533 " 1,\n",
1534 " 4,\n",
1535 " 19,\n",
1536 " 13,\n",
1537 " 18,\n",
1538 " 11,\n",
1539 " 21,\n",
1540 " 5,\n",
1541 " 8,\n",
1542 " 21,\n",
1543 " 3,\n",
1544 " 14,\n",
1545 " 21,\n",
1546 " 19,\n",
1547 " 15,\n",
1548 " 14,\n",
1549 " 0,\n",
1550 " 4,\n",
1551 " 4,\n",
1552 " 8,\n",
1553 " 18,\n",
1554 " 2,\n",
1555 " 8,\n",
1556 " 14,\n",
1557 " 7,\n",
1558 " 8,\n",
1559 " 15,\n",
1560 " 18,\n",
1561 " 4,\n",
1562 " 21,\n",
1563 " 4,\n",
1564 " 4,\n",
1565 " 3,\n",
1566 " 19,\n",
1567 " 4,\n",
1568 " 22,\n",
1569 " 5,\n",
1570 " 0,\n",
1571 " 17,\n",
1572 " 13,\n",
1573 " 7,\n",
1574 " 4,\n",
1575 " 1,\n",
1576 " 11,\n",
1577 " 4,\n",
1578 " 0,\n",
1579 " 14,\n",
1580 " 19,\n",
1581 " 14,\n",
1582 " 7,\n",
1583 " 19,\n",
1584 " 19,\n",
1585 " 19,\n",
1586 " 4,\n",
1587 " 15,\n",
1588 " 13,\n",
1589 " 2,\n",
1590 " 10,\n",
1591 " 0,\n",
1592 " 14,\n",
1593 " 13,\n",
1594 " 7,\n",
1595 " 22,\n",
1596 " 4,\n",
1597 " 19,\n",
1598 " 12,\n",
1599 " 21,\n",
1600 " 24,\n",
1601 " 15,\n",
1602 " 17,\n",
1603 " 17,\n",
1604 " 4,\n",
1605 " 14,\n",
1606 " 13,\n",
1607 " 13,\n",
1608 " 0,\n",
1609 " 18,\n",
1610 " 6,\n",
1611 " 3,\n",
1612 " 4,\n",
1613 " 3,\n",
1614 " 14,\n",
1615 " 4,\n",
1616 " 4,\n",
1617 " 4,\n",
1618 " 14,\n",
1619 " 0,\n",
1620 " 0,\n",
1621 " 12,\n",
1622 " 19,\n",
1623 " 2,\n",
1624 " 8,\n",
1625 " 2,\n",
1626 " 19,\n",
1627 " 19,\n",
1628 " 8,\n",
1629 " 5,\n",
1630 " 13,\n",
1631 " 0,\n",
1632 " 3,\n",
1633 " 17,\n",
1634 " 4,\n",
1635 " 18,\n",
1636 " 17,\n",
1637 " 19,\n",
1638 " 18,\n",
1639 " 4,\n",
1640 " 17,\n",
1641 " 14,\n",
1642 " 18,\n",
1643 " 4,\n",
1644 " 19,\n",
1645 " 17,\n",
1646 " 7,\n",
1647 " 2,\n",
1648 " 8,\n",
1649 " 2,\n",
1650 " 19,\n",
1651 " 15,\n",
1652 " 18,\n",
1653 " 0,\n",
1654 " 0,\n",
1655 " 4,\n",
1656 " 7,\n",
1657 " 11,\n",
1658 " 3,\n",
1659 " 7,\n",
1660 " 18,\n",
1661 " 5,\n",
1662 " 23,\n",
1663 " 18,\n",
1664 " 14,\n",
1665 " 0,\n",
1666 " 14,\n",
1667 " 19,\n",
1668 " 2,\n",
1669 " 19,\n",
1670 " 1,\n",
1671 " 1,\n",
1672 " 18,\n",
1673 " 14,\n",
1674 " 4,\n",
1675 " 8,\n",
1676 " 17,\n",
1677 " 13,\n",
1678 " 18,\n",
1679 " 0,\n",
1680 " 3,\n",
1681 " 11,\n",
1682 " 24,\n",
1683 " 19,\n",
1684 " 17,\n",
1685 " 17,\n",
1686 " 20,\n",
1687 " 13,\n",
1688 " 17,\n",
1689 " 2,\n",
1690 " 4,\n",
1691 " 15,\n",
1692 " 19,\n",
1693 " 19,\n",
1694 " 7,\n",
1695 " 17,\n",
1696 " 4,\n",
1697 " 20,\n",
1698 " 7,\n",
1699 " 13,\n",
1700 " 10,\n",
1701 " 19,\n",
1702 " 0,\n",
1703 " 2,\n",
1704 " 4,\n",
1705 " 2,\n",
1706 " 4,\n",
1707 " 4,\n",
1708 " 11,\n",
1709 " 17,\n",
1710 " 22,\n",
1711 " 13,\n",
1712 " 8,\n",
1713 " 17,\n",
1714 " 4,\n",
1715 " 4,\n",
1716 " 4,\n",
1717 " 0,\n",
1718 " 4,\n",
1719 " 18,\n",
1720 " 4,\n",
1721 " 4,\n",
1722 " 4,\n",
1723 " 8,\n",
1724 " 3,\n",
1725 " 8,\n",
1726 " 18,\n",
1727 " 14,\n",
1728 " 6,\n",
1729 " 2,\n",
1730 " 4,\n",
1731 " 14,\n",
1732 " 12,\n",
1733 " 13,\n",
1734 " 17,\n",
1735 " 19,\n",
1736 " 4,\n",
1737 " 9,\n",
1738 " 7,\n",
1739 " 0,\n",
1740 " 6,\n",
1741 " 0,\n",
1742 " 1,\n",
1743 " 18,\n",
1744 " 4,\n",
1745 " 13,\n",
1746 " 8,\n",
1747 " 19,\n",
1748 " 11,\n",
1749 " 22,\n",
1750 " 19,\n",
1751 " 17,\n",
1752 " 13,\n",
1753 " 1,\n",
1754 " 12,\n",
1755 " 8,\n",
1756 " 4,\n",
1757 " 11,\n",
1758 " 18,\n",
1759 " 0,\n",
1760 " 17,\n",
1761 " 4,\n",
1762 " 19,\n",
1763 " 4,\n",
1764 " 18,\n",
1765 " 17,\n",
1766 " 13,\n",
1767 " 6,\n",
1768 " 18,\n",
1769 " 13,\n",
1770 " 7,\n",
1771 " 4,\n",
1772 " 1,\n",
1773 " 8,\n",
1774 " 14,\n",
1775 " 18,\n",
1776 " 3,\n",
1777 " 8,\n",
1778 " 4,\n",
1779 " 13,\n",
1780 " 0,\n",
1781 " 5,\n",
1782 " 11,\n",
1783 " 4,\n",
1784 " 8,\n",
1785 " 18,\n",
1786 " 0,\n",
1787 " 7,\n",
1788 " 14,\n",
1789 " 2,\n",
1790 " 8,\n",
1791 " 5,\n",
1792 " 4,\n",
1793 " 21,\n",
1794 " 12,\n",
1795 " 5,\n",
1796 " 0,\n",
1797 " 19,\n",
1798 " 0,\n",
1799 " 13,\n",
1800 " 0,\n",
1801 " 19,\n",
1802 " 17,\n",
1803 " 13,\n",
1804 " 8,\n",
1805 " 0,\n",
1806 " 6,\n",
1807 " 13,\n",
1808 " 7,\n",
1809 " 0,\n",
1810 " 19,\n",
1811 " 13,\n",
1812 " 12,\n",
1813 " 8,\n",
1814 " 1,\n",
1815 " 13,\n",
1816 " 8,\n",
1817 " 20,\n",
1818 " 5,\n",
1819 " 4,\n",
1820 " 13,\n",
1821 " 17,\n",
1822 " 19,\n",
1823 " 14,\n",
1824 " 19,\n",
1825 " 19,\n",
1826 " 17,\n",
1827 " 13,\n",
1828 " 24,\n",
1829 " 15,\n",
1830 " 0,\n",
1831 " 8,\n",
1832 " 3,\n",
1833 " 24,\n",
1834 " 8,\n",
1835 " 4,\n",
1836 " 6,\n",
1837 " 3,\n",
1838 " 13,\n",
1839 " 12,\n",
1840 " 4,\n",
1841 " 17,\n",
1842 " 7,\n",
1843 " 7,\n",
1844 " 8,\n",
1845 " 14,\n",
1846 " 19,\n",
1847 " 17,\n",
1848 " 4,\n",
1849 " 19,\n",
1850 " 2,\n",
1851 " 4,\n",
1852 " 18,\n",
1853 " 18,\n",
1854 " 4,\n",
1855 " 8,\n",
1856 " 11,\n",
1857 " 3,\n",
1858 " 17,\n",
1859 " 1,\n",
1860 " 2,\n",
1861 " 4,\n",
1862 " 15,\n",
1863 " 17,\n",
1864 " 8,\n",
1865 " 6,\n",
1866 " 0,\n",
1867 " 4,\n",
1868 " 18,\n",
1869 " 14,\n",
1870 " 0,\n",
1871 " 3,\n",
1872 " 11,\n",
1873 " 19,\n",
1874 " 0,\n",
1875 " 7,\n",
1876 " 8,\n",
1877 " 4,\n",
1878 " 21,\n",
1879 " 4,\n",
1880 " 1,\n",
1881 " 17,\n",
1882 " 2,\n",
1883 " 4,\n",
1884 " 13,\n",
1885 " 11,\n",
1886 " 4,\n",
1887 " 21,\n",
1888 " 0,\n",
1889 " 18,\n",
1890 " 0,\n",
1891 " 3,\n",
1892 " 13,\n",
1893 " 13,\n",
1894 " 19,\n",
1895 " 7,\n",
1896 " 13,\n",
1897 " 4,\n",
1898 " 8,\n",
1899 " 19,\n",
1900 " 4,\n",
1901 " 8,\n",
1902 " 8,\n",
1903 " 18,\n",
1904 " 0,\n",
1905 " 7,\n",
1906 " 20,\n",
1907 " 7,\n",
1908 " 7,\n",
1909 " 20,\n",
1910 " 0,\n",
1911 " 12,\n",
1912 " 14,\n",
1913 " 13,\n",
1914 " 4,\n",
1915 " 5,\n",
1916 " 24,\n",
1917 " 7,\n",
1918 " 11,\n",
1919 " 14,\n",
1920 " 13,\n",
1921 " 22,\n",
1922 " 7,\n",
1923 " 0,\n",
1924 " 4,\n",
1925 " 4,\n",
1926 " 4,\n",
1927 " 4,\n",
1928 " 14,\n",
1929 " 18,\n",
1930 " 13,\n",
1931 " 4,\n",
1932 " 4,\n",
1933 " 24,\n",
1934 " 0,\n",
1935 " 13,\n",
1936 " 4,\n",
1937 " 8,\n",
1938 " 18,\n",
1939 " 4,\n",
1940 " 19,\n",
1941 " 14,\n",
1942 " 6,\n",
1943 " 24,\n",
1944 " 8,\n",
1945 " 19,\n",
1946 " 4,\n",
1947 " 17,\n",
1948 " 11,\n",
1949 " 8,\n",
1950 " 7,\n",
1951 " 19,\n",
1952 " 2,\n",
1953 " 12,\n",
1954 " 8,\n",
1955 " 14,\n",
1956 " 8,\n",
1957 " 17,\n",
1958 " 0,\n",
1959 " 17,\n",
1960 " 5,\n",
1961 " 3,\n",
1962 " 14,\n",
1963 " 4,\n",
1964 " 19,\n",
1965 " 13,\n",
1966 " 8,\n",
1967 " 7,\n",
1968 " 19,\n",
1969 " 13,\n",
1970 " 4,\n",
1971 " 7,\n",
1972 " 8,\n",
1973 " 8,\n",
1974 " 10,\n",
1975 " 0,\n",
1976 " 12,\n",
1977 " 17,\n",
1978 " 3,\n",
1979 " 12,\n",
1980 " 13,\n",
1981 " 0,\n",
1982 " 3,\n",
1983 " 0,\n",
1984 " 13,\n",
1985 " 0,\n",
1986 " 14,\n",
1987 " 3,\n",
1988 " 18,\n",
1989 " 4,\n",
1990 " 18,\n",
1991 " 4,\n",
1992 " 8,\n",
1993 " 24,\n",
1994 " 2,\n",
1995 " 11,\n",
1996 " 18,\n",
1997 " 8,\n",
1998 " 0,\n",
1999 " 13,\n",
2000 " 19,\n",
2001 " 0,\n",
2002 " 14,\n",
2003 " 11,\n",
2004 " 19,\n",
2005 " 2,\n",
2006 " 8,\n",
2007 " 24,\n",
2008 " 12,\n",
2009 " 8,\n",
2010 " 3,\n",
2011 " 4,\n",
2012 " 13,\n",
2013 " 19,\n",
2014 " 19,\n",
2015 " 7,\n",
2016 " 11,\n",
2017 " 19,\n",
2018 " 13,\n",
2019 " 3,\n",
2020 " 23,\n",
2021 " 19,\n",
2022 " 19,\n",
2023 " 19,\n",
2024 " 12,\n",
2025 " 0,\n",
2026 " 18,\n",
2027 " 1,\n",
2028 " 11,\n",
2029 " 4,\n",
2030 " 0,\n",
2031 " 4,\n",
2032 " 4,\n",
2033 " 19,\n",
2034 " 11,\n",
2035 " 8,\n",
2036 " 18,\n",
2037 " 8,\n",
2038 " 17,\n",
2039 " 19,\n",
2040 " 22,\n",
2041 " 19,\n",
2042 " 20,\n",
2043 " 17,\n",
2044 " 15,\n",
2045 " 5,\n",
2046 " 0,\n",
2047 " 8,\n",
2048 " 11,\n",
2049 " 19,\n",
2050 " 4,\n",
2051 " 0,\n",
2052 " 14,\n",
2053 " 4,\n",
2054 " 5,\n",
2055 " 4,\n",
2056 " 8,\n",
2057 " 18,\n",
2058 " 8,\n",
2059 " 8,\n",
2060 " 8,\n",
2061 " 24,\n",
2062 " 8,\n",
2063 " 18,\n",
2064 " 8,\n",
2065 " 10,\n",
2066 " 21,\n",
2067 " 19,\n",
2068 " 22,\n",
2069 " 8,\n",
2070 " 18,\n",
2071 " 15,\n",
2072 " 17,\n",
2073 " 1,\n",
2074 " 18,\n",
2075 " 8,\n",
2076 " 13,\n",
2077 " 4,\n",
2078 " 11,\n",
2079 " 15,\n",
2080 " 7,\n",
2081 " 17,\n",
2082 " 12,\n",
2083 " 14,\n",
2084 " 7,\n",
2085 " 8,\n",
2086 " 0,\n",
2087 " 6,\n",
2088 " 13,\n",
2089 " 11,\n",
2090 " 18,\n",
2091 " 11,\n",
2092 " 21,\n",
2093 " 8,\n",
2094 " 19,\n",
2095 " 14,\n",
2096 " 3,\n",
2097 " 0,\n",
2098 " 8,\n",
2099 " 18,\n",
2100 " 3,\n",
2101 " 15,\n",
2102 " 13,\n",
2103 " 24,\n",
2104 " 3,\n",
2105 " 3,\n",
2106 " 2,\n",
2107 " 0,\n",
2108 " 0,\n",
2109 " 14,\n",
2110 " 19,\n",
2111 " 0,\n",
2112 " 7,\n",
2113 " 2,\n",
2114 " 4,\n",
2115 " 7,\n",
2116 " 19,\n",
2117 " 20,\n",
2118 " 4,\n",
2119 " 8,\n",
2120 " 17,\n",
2121 " 17,\n",
2122 " 4,\n",
2123 " 3,\n",
2124 " 0,\n",
2125 " 4,\n",
2126 " 2,\n",
2127 " 19,\n",
2128 " 14,\n",
2129 " 18,\n",
2130 " 13,\n",
2131 " 17,\n",
2132 " 7,\n",
2133 " 21,\n",
2134 " 13,\n",
2135 " 0,\n",
2136 " 14,\n",
2137 " 3,\n",
2138 " 14,\n",
2139 " 8,\n",
2140 " 10,\n",
2141 " 14,\n",
2142 " 4,\n",
2143 " 19,\n",
2144 " 2,\n",
2145 " 8,\n",
2146 " 13,\n",
2147 " 4,\n",
2148 " 13,\n",
2149 " 4,\n",
2150 " 20,\n",
2151 " 17,\n",
2152 " 17,\n",
2153 " 8,\n",
2154 " 18,\n",
2155 " 3,\n",
2156 " 2,\n",
2157 " 14,\n",
2158 " 20,\n",
2159 " 17,\n",
2160 " 0,\n",
2161 " 6,\n",
2162 " 11,\n",
2163 " 21,\n",
2164 " 8,\n",
2165 " 12,\n",
2166 " 12,\n",
2167 " 20,\n",
2168 " 15,\n",
2169 " 15,\n",
2170 " 3,\n",
2171 " 8,\n",
2172 " 19,\n",
2173 " 4,\n",
2174 " 0,\n",
2175 " 13,\n",
2176 " 3,\n",
2177 " 8,\n",
2178 " 19,\n",
2179 " 12,\n",
2180 " 0,\n",
2181 " 0,\n",
2182 " 8,\n",
2183 " 0,\n",
2184 " 8,\n",
2185 " 4,\n",
2186 " 11,\n",
2187 " 4,\n",
2188 " 14,\n",
2189 " 13,\n",
2190 " 13,\n",
2191 " 17,\n",
2192 " 4,\n",
2193 " 4,\n",
2194 " 3,\n",
2195 " 0,\n",
2196 " 14,\n",
2197 " 3,\n",
2198 " 1,\n",
2199 " 14,\n",
2200 " 8,\n",
2201 " 20,\n",
2202 " 12,\n",
2203 " 4,\n",
2204 " 11,\n",
2205 " 17,\n",
2206 " 14,\n",
2207 " 19,\n",
2208 " 13,\n",
2209 " 19,\n",
2210 " 19,\n",
2211 " 19,\n",
2212 " 6,\n",
2213 " 8,\n",
2214 " 19,\n",
2215 " 13,\n",
2216 " ...]"
2217 ]
2218 },
2219 "execution_count": 9,
2220 "metadata": {},
2221 "output_type": "execute_result"
2222 }
2223 ],
2224 "source": [
2225 "[(int(c, 2)) for c in chunks(c8b, 5)]"
2226 ]
2227 },
2228 {
2229 "cell_type": "code",
2230 "execution_count": 10,
2231 "metadata": {
2232 "collapsed": false
2233 },
2234 "outputs": [
2235 {
2236 "data": {
2237 "text/plain": [
2238 "24"
2239 ]
2240 },
2241 "execution_count": 10,
2242 "metadata": {},
2243 "output_type": "execute_result"
2244 }
2245 ],
2246 "source": [
2247 "max([(int(c, 2)) for c in chunks(c8b, 5)])"
2248 ]
2249 },
2250 {
2251 "cell_type": "code",
2252 "execution_count": 11,
2253 "metadata": {
2254 "collapsed": false
2255 },
2256 "outputs": [
2257 {
2258 "data": {
2259 "text/plain": [
2260 "'y'"
2261 ]
2262 },
2263 "execution_count": 11,
2264 "metadata": {},
2265 "output_type": "execute_result"
2266 }
2267 ],
2268 "source": [
2269 "max([chr(int(c, 2) + ord('a')) for c in chunks(c8b, 5)])"
2270 ]
2271 },
2272 {
2273 "cell_type": "code",
2274 "execution_count": 12,
2275 "metadata": {
2276 "collapsed": false
2277 },
2278 "outputs": [],
2279 "source": [
2280 "def cadenus_letter(n, doubled='v'):\n",
2281 " letter = chr(n + ord('a'))\n",
2282 " if letter > doubled:\n",
2283 " letter = chr(n + ord('a') + 1)\n",
2284 " return letter"
2285 ]
2286 },
2287 {
2288 "cell_type": "code",
2289 "execution_count": 13,
2290 "metadata": {
2291 "collapsed": false
2292 },
2293 "outputs": [
2294 {
2295 "data": {
2296 "text/plain": [
2297 "'afcaeuottacthrioletcserthshtrahkyorpfrgeoadppjnglternefeofiortsddoeeumscruernfetlaafstwientrvoonerhuahravereetsvsielhlostdoaloyaesmnndignnrhohhtsnaoilncnssicreanneeiiierwtanesrvogieiywssdgpvoiaisaoaeoaedrnitrnxeigrpsshadhdtoipaatexennesagrobtlesrnroirypbgedclliwalaleenigrrnwyrlimlpstoleftrdmuarieeeiiaolnewsaohrtlstobetnslvfivdovtpoaeeisciohipseveedtewfarnhebleaotohtttepnckaonhwetmvyprreonnasgdedoeeeoaamtcicttifnadresrtserosetrhcictpsaaehldhsfxsoaotctbbsoeirnsadlytrrunrceptthreuhnktaceceelrwnireeeaeseeeidisogceomnrtejhagabsenitlwtrnbmielsaretesrngsnhebiosdienafleisahocifevmfatanatrniagnhatnmibniufenrtottrnypaidyiegdnmerhhiotretcesseildrbceprigaesoadltahievebrcenlevasadnnthneiteiisahuhhuamonefyhlonwhaeeeeosneeyaneisetogyiterlihtcmioirarfdoetnihtnehiikamrdmnadanaodseseiyclsiantaoltciymidentthltndxtttmasbleaeetlisirtwturpfailteaoefeisiiiyisikvtwisprbsinelphrmohiagnlslvitodaisdpnyddcaaotahcehtueirredaectosnrhvnaodoikoetcineneurrisdcouraglvimmuppditeanditmaaiaieleonnreedaodboiumelrotntttgitnrlrienniklysogstcifypipvidvssmnceiasiitsnneatitomrhbnhnidprlrepoynalsnvsdosanesitfaenltgodatteeaisicrootmsmfhauenirsghynweintegodiileedtarnosrcaaendtcuttfdrbehtmfitoordruiaoyaanoeeldoinhusgiteaoriecevemntratmtfpeucutahamtnewonicdeemrpaolitoafesoosspfnlneeootachllirssxsofpdftfrnpraeeaylonahautntcntcbawloneftoatecvowdlwvnneedtiioigtegmtaheeatefaaeprrcrosheerrpalediengidrreouhvesuroytnsosinuiuiofprda'"
2298 ]
2299 },
2300 "execution_count": 13,
2301 "metadata": {},
2302 "output_type": "execute_result"
2303 }
2304 ],
2305 "source": [
2306 "c8bl = ''.join([cadenus_letter(int(c, 2), doubled='z') for c in chunks(c8b, 5)])\n",
2307 "c8bl"
2308 ]
2309 },
2310 {
2311 "cell_type": "code",
2312 "execution_count": 14,
2313 "metadata": {
2314 "collapsed": false
2315 },
2316 "outputs": [
2317 {
2318 "data": {
2319 "text/plain": [
2320 "('a', 'y')"
2321 ]
2322 },
2323 "execution_count": 14,
2324 "metadata": {},
2325 "output_type": "execute_result"
2326 }
2327 ],
2328 "source": [
2329 "min(c8bl), max(c8bl)"
2330 ]
2331 },
2332 {
2333 "cell_type": "code",
2334 "execution_count": 15,
2335 "metadata": {
2336 "collapsed": false
2337 },
2338 "outputs": [
2339 {
2340 "data": {
2341 "text/plain": [
2342 "(1400, 56.0)"
2343 ]
2344 },
2345 "execution_count": 15,
2346 "metadata": {},
2347 "output_type": "execute_result"
2348 }
2349 ],
2350 "source": [
2351 "len(c8bl), len(c8bl) / 25"
2352 ]
2353 },
2354 {
2355 "cell_type": "code",
2356 "execution_count": 16,
2357 "metadata": {
2358 "collapsed": false
2359 },
2360 "outputs": [
2361 {
2362 "data": {
2363 "text/plain": [
2364 "<matplotlib.axes._subplots.AxesSubplot at 0x7f420b349a20>"
2365 ]
2366 },
2367 "execution_count": 16,
2368 "metadata": {},
2369 "output_type": "execute_result"
2370 },
2371 {
2372 "data": {
2373 "image/png": "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\nNbxLWGOjAAAAAElFTkSuQmCC\n",
2374 "text/plain": [
2375 "<matplotlib.figure.Figure at 0x7f420b349048>"
2376 ]
2377 },
2378 "metadata": {},
2379 "output_type": "display_data"
2380 }
2381 ],
2382 "source": [
2383 "freqs_8b = pd.Series(collections.Counter([l.lower() for l in c8bl if l in string.ascii_letters]))\n",
2384 "freqs_8b.plot(kind='bar')"
2385 ]
2386 },
2387 {
2388 "cell_type": "code",
2389 "execution_count": 17,
2390 "metadata": {
2391 "collapsed": false
2392 },
2393 "outputs": [
2394 {
2395 "data": {
2396 "text/plain": [
2397 "<matplotlib.axes._subplots.AxesSubplot at 0x7f420b2a5d68>"
2398 ]
2399 },
2400 "execution_count": 17,
2401 "metadata": {},
2402 "output_type": "execute_result"
2403 },
2404 {
2405 "data": {
2406 "image/png": "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\n",
2407 "text/plain": [
2408 "<matplotlib.figure.Figure at 0x7f420b33ecc0>"
2409 ]
2410 },
2411 "metadata": {},
2412 "output_type": "display_data"
2413 }
2414 ],
2415 "source": [
2416 "freqs = pd.Series(english_counts)\n",
2417 "freqs.plot(kind='bar')"
2418 ]
2419 },
2420 {
2421 "cell_type": "code",
2422 "execution_count": 18,
2423 "metadata": {
2424 "collapsed": false
2425 },
2426 "outputs": [
2427 {
2428 "data": {
2429 "text/plain": [
2430 "['afcaeuottacthrioletcserthshtrahkyorpfrgeoadppjnglternefe',\n",
2431 " 'ofiortsddoeeumscruernfetlaafstwientrvoonerhuahravereetsv',\n",
2432 " 'sielhlostdoaloyaesmnndignnrhohhtsnaoilncnssicreanneeiiie',\n",
2433 " 'rwtanesrvogieiywssdgpvoiaisaoaeoaedrnitrnxeigrpsshadhdto',\n",
2434 " 'ipaatexennesagrobtlesrnroirypbgedclliwalaleenigrrnwyrlim',\n",
2435 " 'lpstoleftrdmuarieeeiiaolnewsaohrtlstobetnslvfivdovtpoaee',\n",
2436 " 'isciohipseveedtewfarnhebleaotohtttepnckaonhwetmvyprreonn',\n",
2437 " 'asgdedoeeeoaamtcicttifnadresrtserosetrhcictpsaaehldhsfxs',\n",
2438 " 'oaotctbbsoeirnsadlytrrunrceptthreuhnktaceceelrwnireeeaes',\n",
2439 " 'eeeidisogceomnrtejhagabsenitlwtrnbmielsaretesrngsnhebios',\n",
2440 " 'dienafleisahocifevmfatanatrniagnhatnmibniufenrtottrnypai',\n",
2441 " 'dyiegdnmerhhiotretcesseildrbceprigaesoadltahievebrcenlev',\n",
2442 " 'asadnnthneiteiisahuhhuamonefyhlonwhaeeeeosneeyaneisetogy',\n",
2443 " 'iterlihtcmioirarfdoetnihtnehiikamrdmnadanaodseseiyclsian',\n",
2444 " 'taoltciymidentthltndxtttmasbleaeetlisirtwturpfailteaoefe',\n",
2445 " 'isiiiyisikvtwisprbsinelphrmohiagnlslvitodaisdpnyddcaaota',\n",
2446 " 'hcehtueirredaectosnrhvnaodoikoetcineneurrisdcouraglvimmu',\n",
2447 " 'ppditeanditmaaiaieleonnreedaodboiumelrotntttgitnrlrienni',\n",
2448 " 'klysogstcifypipvidvssmnceiasiitsnneatitomrhbnhnidprlrepo',\n",
2449 " 'ynalsnvsdosanesitfaenltgodatteeaisicrootmsmfhauenirsghyn',\n",
2450 " 'weintegodiileedtarnosrcaaendtcuttfdrbehtmfitoordruiaoyaa',\n",
2451 " 'noeeldoinhusgiteaoriecevemntratmtfpeucutahamtnewonicdeem',\n",
2452 " 'rpaolitoafesoosspfnlneeootachllirssxsofpdftfrnpraeeaylon',\n",
2453 " 'ahautntcntcbawloneftoatecvowdlwvnneedtiioigtegmtaheeatef',\n",
2454 " 'aaeprrcrosheerrpalediengidrreouhvesuroytnsosinuiuiofprda']"
2455 ]
2456 },
2457 "execution_count": 18,
2458 "metadata": {},
2459 "output_type": "execute_result"
2460 }
2461 ],
2462 "source": [
2463 "rows = chunks(c8bl, len(c8bl) // 25)\n",
2464 "rows"
2465 ]
2466 },
2467 {
2468 "cell_type": "code",
2469 "execution_count": 19,
2470 "metadata": {
2471 "collapsed": false
2472 },
2473 "outputs": [
2474 {
2475 "data": {
2476 "text/plain": [
2477 "['a..ae....a..h....e..se..hsh..ah....p...e.a.pp.....e..e.e',\n",
2478 " '......s...ee..s...e...e..aa.s...e.......e.h.ah.a.e.ee.s.',\n",
2479 " 's.e.h..s...a...aes.........h.hh.s.a......ss...ea..ee...e',\n",
2480 " '...a.es.....e...ss..p...a.sa.ae.ae........e...pssha.h...',\n",
2481 " '.paa.e.e..esa......es.......p..e......a.a.ee............',\n",
2482 " '.ps...e......a..eee..a...e.sa.h...s...e..s.........p.aee',\n",
2483 " '.s...h.pse.ee..e..a..he..ea...h...ep...a..h.e....p..e...',\n",
2484 " 'as..e..eee.aa..........a..es..se..se..h....psaaeh..hs..s',\n",
2485 " '.a......s.e...sa..........ep..h.e.h...a.e.ee......eeeaes',\n",
2486 " 'eee...s...e.....e.ha.a.se...........e.sa.e.es...s.he...s',\n",
2487 " '..e.a..e.sah....e...a.a.a....a..ha.........e.........pa.',\n",
2488 " '...e....e.hh....e..esse......ep...aes.a...ah.e.e...e..e.',\n",
2489 " 'asa....h.e..e..sah.hh.a...e..h....haeeee.s.ee.a.e.se....',\n",
2490 " '..e...h.......a....e...h..eh...a.....a.a.a..sese....s.a.',\n",
2491 " '.a.........e...h.........as..eaee...s.......p.a...ea.e.e',\n",
2492 " '.s.....s......sp..s..e.ph...h.a...s......a.s.p.....aa..a',\n",
2493 " 'h.eh..e...e.ae...s..h..a......e....e.e....s.....a.......',\n",
2494 " 'pp...ea.....aa.a.e.e....ee.a.......e................e...',\n",
2495 " '...s..s.....p.p....ss...e.as...s..ea......h..h...p...ep.',\n",
2496 " '..a.s..s..sa.es...ae......a..eea.s.......s..ha.e...s.h..',\n",
2497 " '.e...e......ee..a...s..aae...........eh............a..aa',\n",
2498 " '..ee.....h.s...ea...e.e.e....a....pe....aha...e......ee.',\n",
2499 " '.pa.....a.es..ssp....ee...a.h....ss.s..p......p.aeea....',\n",
2500 " 'aha.........a....e...a.e..........ee........e...aheea.e.',\n",
2501 " 'aaep.....shee..pa.e..e......e..h.es......s.s........p..a']"
2502 ]
2503 },
2504 "execution_count": 19,
2505 "metadata": {},
2506 "output_type": "execute_result"
2507 }
2508 ],
2509 "source": [
2510 "chunks(''.join([l if l in 'phase' else '.' for l in c8bl]), 56)"
2511 ]
2512 },
2513 {
2514 "cell_type": "code",
2515 "execution_count": 20,
2516 "metadata": {
2517 "collapsed": false
2518 },
2519 "outputs": [
2520 {
2521 "data": {
2522 "text/plain": [
2523 "['aosriliaoeddaitihpkywnraa',\n",
2524 " 'ffiwppssaeiystascplneopha',\n",
2525 " 'cietascgoeeiaeoiedyaieaae',\n",
2526 " 'aolaatidtinedrlihislneoup',\n",
2527 " 'erhntooecdagnltittostlltr',\n",
2528 " 'utleelhdtifdnicyuegnedinr',\n",
2529 " 'ososxeiobslnthiieasvgottc',\n",
2530 " 'tdsrefpeboemhtysintsoiocr',\n",
2531 " 'tdtvntsesgiencmirdcddnano',\n",
2532 " 'aodonreeocsremikriioihfts',\n",
2533 " 'ceogedvoeeahiidvetfsiuech',\n",
2534 " 'teaismeaiohhtoetdmyalssbe',\n",
2535 " 'huleauearmoieinwaapnegoae',\n",
2536 " 'rmoigadmnncoirtieaieeiowr',\n",
2537 " 'isyyrrttsritiatscipsdtslr',\n",
2538 " 'ocawoiecatfrsrhptavitesop',\n",
2539 " 'lresbewideeeaflroiitaapna',\n",
2540 " 'eusstefcljvthdtbsedfrofel',\n",
2541 " 'temdleatyhmcuonsnlvanrnfe',\n",
2542 " 'crngeirttafehedireseoiltd',\n",
2543 " 'snnpsinirgashtxnhosnsenoi',\n",
2544 " 'efdvrahfratsuntevnmlrceae',\n",
2545 " 'reionoenubaeaitlnnntceetn',\n",
2546 " 'ttgirlbansnimhtparcgavoeg',\n",
2547 " 'hlnaonldrealotmhoeeoaeoci',\n",
2548 " 'saniieercntdnnardeidemtvd',\n",
2549 " 'harsrwaeeirreesmodaannaor',\n",
2550 " 'tfhaysosptnbfhboiastdtcwr',\n",
2551 " 'rsoopatrtlicyilhkoittrhde',\n",
2552 " 'athaboottwaehieiodiecallo',\n",
2553 " 'hwheghhshtgplkaaebteutlwu',\n",
2554 " 'kitoerterrnroaegtosatmivh',\n",
2555 " 'yesadttrenhinmencinittrnv',\n",
2556 " 'onnecltoubagwrtliunsffsne',\n",
2557 " 'rtadlseshmtahdlsnmeidpses',\n",
2558 " 'prorltpenineamileeacrexeu',\n",
2559 " 'fviniontkemsensvnltrbusdr',\n",
2560 " 'roliwbcrtlioeaiierioecoto',\n",
2561 " 'gontaekhasbaedrtuotohufiy',\n",
2562 " 'encrltaccandeatortotttpit',\n",
2563 " 'oennanoierilonwdrnmmmadon',\n",
2564 " 'arsxlsncceutsataitrsfhfis',\n",
2565 " 'dhseelhtetfanouisthmiatgo',\n",
2566 " 'puiievwpeeehedrsdtbftmfts',\n",
2567 " 'pacgnfeslsniespdcgnhotrei',\n",
2568 " 'jhrriitarrreyefpoihaonngn',\n",
2569 " 'nrepgvmawntvasanutnurepmu',\n",
2570 " 'gaasrdvengoeneiyrniedwrti',\n",
2571 " 'lvnsroyhistbeildardnroaau',\n",
2572 " 'tenhnvplrntriytdglpiunehi',\n",
2573 " 'ereawtrdehrcsceclrrriieeo',\n",
2574 " 'reedyprheeneelaavilsacaef',\n",
2575 " 'neihroesebyntsoaiergodyap',\n",
2576 " 'etidlaofaiploieomnehyeltr',\n",
2577 " 'fsitienxeoaegaftmnpyaeoed',\n",
2578 " 'eveomensssivyneauionamnfa']"
2579 ]
2580 },
2581 "execution_count": 20,
2582 "metadata": {},
2583 "output_type": "execute_result"
2584 }
2585 ],
2586 "source": [
2587 "columns = [''.join(c) for c in zip(*rows)]\n",
2588 "columns"
2589 ]
2590 },
2591 {
2592 "cell_type": "code",
2593 "execution_count": 21,
2594 "metadata": {
2595 "collapsed": false
2596 },
2597 "outputs": [
2598 {
2599 "data": {
2600 "text/plain": [
2601 "{'a': [(0, 0),\n",
2602 " (0, 3),\n",
2603 " (0, 9),\n",
2604 " (0, 29),\n",
2605 " (0, 41),\n",
2606 " (1, 25),\n",
2607 " (1, 26),\n",
2608 " (1, 44),\n",
2609 " (1, 47),\n",
2610 " (2, 11),\n",
2611 " (2, 15),\n",
2612 " (2, 34),\n",
2613 " (2, 47),\n",
2614 " (3, 3),\n",
2615 " (3, 24),\n",
2616 " (3, 27),\n",
2617 " (3, 29),\n",
2618 " (3, 32),\n",
2619 " (3, 50),\n",
2620 " (4, 2),\n",
2621 " (4, 3),\n",
2622 " (4, 12),\n",
2623 " (4, 38),\n",
2624 " (4, 40),\n",
2625 " (5, 13),\n",
2626 " (5, 21),\n",
2627 " (5, 28),\n",
2628 " (5, 53),\n",
2629 " (6, 18),\n",
2630 " (6, 26),\n",
2631 " (6, 39),\n",
2632 " (7, 0),\n",
2633 " (7, 11),\n",
2634 " (7, 12),\n",
2635 " (7, 23),\n",
2636 " (7, 45),\n",
2637 " (7, 46),\n",
2638 " (8, 1),\n",
2639 " (8, 15),\n",
2640 " (8, 38),\n",
2641 " (8, 53),\n",
2642 " (9, 19),\n",
2643 " (9, 21),\n",
2644 " (9, 39),\n",
2645 " (10, 4),\n",
2646 " (10, 10),\n",
2647 " (10, 20),\n",
2648 " (10, 22),\n",
2649 " (10, 24),\n",
2650 " (10, 29),\n",
2651 " (10, 33),\n",
2652 " (10, 54),\n",
2653 " (11, 34),\n",
2654 " (11, 38),\n",
2655 " (11, 42),\n",
2656 " (12, 0),\n",
2657 " (12, 2),\n",
2658 " (12, 16),\n",
2659 " (12, 22),\n",
2660 " (12, 35),\n",
2661 " (12, 46),\n",
2662 " (13, 14),\n",
2663 " (13, 31),\n",
2664 " (13, 37),\n",
2665 " (13, 39),\n",
2666 " (13, 41),\n",
2667 " (13, 54),\n",
2668 " (14, 1),\n",
2669 " (14, 25),\n",
2670 " (14, 30),\n",
2671 " (14, 46),\n",
2672 " (14, 51),\n",
2673 " (15, 30),\n",
2674 " (15, 41),\n",
2675 " (15, 51),\n",
2676 " (15, 52),\n",
2677 " (15, 55),\n",
2678 " (16, 12),\n",
2679 " (16, 23),\n",
2680 " (16, 48),\n",
2681 " (17, 6),\n",
2682 " (17, 12),\n",
2683 " (17, 13),\n",
2684 " (17, 15),\n",
2685 " (17, 27),\n",
2686 " (18, 26),\n",
2687 " (18, 35),\n",
2688 " (19, 2),\n",
2689 " (19, 11),\n",
2690 " (19, 18),\n",
2691 " (19, 26),\n",
2692 " (19, 31),\n",
2693 " (19, 45),\n",
2694 " (20, 16),\n",
2695 " (20, 23),\n",
2696 " (20, 24),\n",
2697 " (20, 51),\n",
2698 " (20, 54),\n",
2699 " (20, 55),\n",
2700 " (21, 16),\n",
2701 " (21, 29),\n",
2702 " (21, 40),\n",
2703 " (21, 42),\n",
2704 " (22, 2),\n",
2705 " (22, 8),\n",
2706 " (22, 26),\n",
2707 " (22, 48),\n",
2708 " (22, 51),\n",
2709 " (23, 0),\n",
2710 " (23, 2),\n",
2711 " (23, 12),\n",
2712 " (23, 21),\n",
2713 " (23, 48),\n",
2714 " (23, 52),\n",
2715 " (24, 0),\n",
2716 " (24, 1),\n",
2717 " (24, 16),\n",
2718 " (24, 55)],\n",
2719 " 'e': [(0, 4),\n",
2720 " (0, 17),\n",
2721 " (0, 21),\n",
2722 " (0, 39),\n",
2723 " (0, 50),\n",
2724 " (0, 53),\n",
2725 " (0, 55),\n",
2726 " (1, 10),\n",
2727 " (1, 11),\n",
2728 " (1, 18),\n",
2729 " (1, 22),\n",
2730 " (1, 32),\n",
2731 " (1, 40),\n",
2732 " (1, 49),\n",
2733 " (1, 51),\n",
2734 " (1, 52),\n",
2735 " (2, 2),\n",
2736 " (2, 16),\n",
2737 " (2, 46),\n",
2738 " (2, 50),\n",
2739 " (2, 51),\n",
2740 " (2, 55),\n",
2741 " (3, 5),\n",
2742 " (3, 12),\n",
2743 " (3, 30),\n",
2744 " (3, 33),\n",
2745 " (3, 42),\n",
2746 " (4, 5),\n",
2747 " (4, 7),\n",
2748 " (4, 10),\n",
2749 " (4, 19),\n",
2750 " (4, 31),\n",
2751 " (4, 42),\n",
2752 " (4, 43),\n",
2753 " (5, 6),\n",
2754 " (5, 16),\n",
2755 " (5, 17),\n",
2756 " (5, 18),\n",
2757 " (5, 25),\n",
2758 " (5, 38),\n",
2759 " (5, 54),\n",
2760 " (5, 55),\n",
2761 " (6, 9),\n",
2762 " (6, 11),\n",
2763 " (6, 12),\n",
2764 " (6, 15),\n",
2765 " (6, 22),\n",
2766 " (6, 25),\n",
2767 " (6, 34),\n",
2768 " (6, 44),\n",
2769 " (6, 52),\n",
2770 " (7, 4),\n",
2771 " (7, 7),\n",
2772 " (7, 8),\n",
2773 " (7, 9),\n",
2774 " (7, 26),\n",
2775 " (7, 31),\n",
2776 " (7, 35),\n",
2777 " (7, 47),\n",
2778 " (8, 10),\n",
2779 " (8, 26),\n",
2780 " (8, 32),\n",
2781 " (8, 40),\n",
2782 " (8, 42),\n",
2783 " (8, 43),\n",
2784 " (8, 50),\n",
2785 " (8, 51),\n",
2786 " (8, 52),\n",
2787 " (8, 54),\n",
2788 " (9, 0),\n",
2789 " (9, 1),\n",
2790 " (9, 2),\n",
2791 " (9, 10),\n",
2792 " (9, 16),\n",
2793 " (9, 24),\n",
2794 " (9, 36),\n",
2795 " (9, 41),\n",
2796 " (9, 43),\n",
2797 " (9, 51),\n",
2798 " (10, 2),\n",
2799 " (10, 7),\n",
2800 " (10, 16),\n",
2801 " (10, 43),\n",
2802 " (11, 3),\n",
2803 " (11, 8),\n",
2804 " (11, 16),\n",
2805 " (11, 19),\n",
2806 " (11, 22),\n",
2807 " (11, 29),\n",
2808 " (11, 35),\n",
2809 " (11, 45),\n",
2810 " (11, 47),\n",
2811 " (11, 51),\n",
2812 " (11, 54),\n",
2813 " (12, 9),\n",
2814 " (12, 12),\n",
2815 " (12, 26),\n",
2816 " (12, 36),\n",
2817 " (12, 37),\n",
2818 " (12, 38),\n",
2819 " (12, 39),\n",
2820 " (12, 43),\n",
2821 " (12, 44),\n",
2822 " (12, 48),\n",
2823 " (12, 51),\n",
2824 " (13, 2),\n",
2825 " (13, 19),\n",
2826 " (13, 26),\n",
2827 " (13, 45),\n",
2828 " (13, 47),\n",
2829 " (14, 11),\n",
2830 " (14, 29),\n",
2831 " (14, 31),\n",
2832 " (14, 32),\n",
2833 " (14, 50),\n",
2834 " (14, 53),\n",
2835 " (14, 55),\n",
2836 " (15, 21),\n",
2837 " (16, 2),\n",
2838 " (16, 6),\n",
2839 " (16, 10),\n",
2840 " (16, 13),\n",
2841 " (16, 30),\n",
2842 " (16, 35),\n",
2843 " (16, 37),\n",
2844 " (17, 5),\n",
2845 " (17, 17),\n",
2846 " (17, 19),\n",
2847 " (17, 24),\n",
2848 " (17, 25),\n",
2849 " (17, 35),\n",
2850 " (17, 52),\n",
2851 " (18, 24),\n",
2852 " (18, 34),\n",
2853 " (18, 53),\n",
2854 " (19, 13),\n",
2855 " (19, 19),\n",
2856 " (19, 29),\n",
2857 " (19, 30),\n",
2858 " (19, 47),\n",
2859 " (20, 1),\n",
2860 " (20, 5),\n",
2861 " (20, 12),\n",
2862 " (20, 13),\n",
2863 " (20, 25),\n",
2864 " (20, 37),\n",
2865 " (21, 2),\n",
2866 " (21, 3),\n",
2867 " (21, 15),\n",
2868 " (21, 20),\n",
2869 " (21, 22),\n",
2870 " (21, 24),\n",
2871 " (21, 35),\n",
2872 " (21, 46),\n",
2873 " (21, 53),\n",
2874 " (21, 54),\n",
2875 " (22, 10),\n",
2876 " (22, 21),\n",
2877 " (22, 22),\n",
2878 " (22, 49),\n",
2879 " (22, 50),\n",
2880 " (23, 17),\n",
2881 " (23, 23),\n",
2882 " (23, 34),\n",
2883 " (23, 35),\n",
2884 " (23, 44),\n",
2885 " (23, 50),\n",
2886 " (23, 51),\n",
2887 " (23, 54),\n",
2888 " (24, 2),\n",
2889 " (24, 11),\n",
2890 " (24, 12),\n",
2891 " (24, 18),\n",
2892 " (24, 21),\n",
2893 " (24, 28),\n",
2894 " (24, 33)],\n",
2895 " 'h': [(0, 12),\n",
2896 " (0, 24),\n",
2897 " (0, 26),\n",
2898 " (0, 30),\n",
2899 " (1, 42),\n",
2900 " (1, 45),\n",
2901 " (2, 4),\n",
2902 " (2, 27),\n",
2903 " (2, 29),\n",
2904 " (2, 30),\n",
2905 " (3, 49),\n",
2906 " (3, 52),\n",
2907 " (5, 30),\n",
2908 " (6, 5),\n",
2909 " (6, 21),\n",
2910 " (6, 30),\n",
2911 " (6, 42),\n",
2912 " (7, 38),\n",
2913 " (7, 48),\n",
2914 " (7, 51),\n",
2915 " (8, 30),\n",
2916 " (8, 34),\n",
2917 " (9, 18),\n",
2918 " (9, 50),\n",
2919 " (10, 11),\n",
2920 " (10, 32),\n",
2921 " (11, 10),\n",
2922 " (11, 11),\n",
2923 " (11, 43),\n",
2924 " (12, 7),\n",
2925 " (12, 17),\n",
2926 " (12, 19),\n",
2927 " (12, 20),\n",
2928 " (12, 29),\n",
2929 " (12, 34),\n",
2930 " (13, 6),\n",
2931 " (13, 23),\n",
2932 " (13, 27),\n",
2933 " (14, 15),\n",
2934 " (15, 24),\n",
2935 " (15, 28),\n",
2936 " (16, 0),\n",
2937 " (16, 3),\n",
2938 " (16, 20),\n",
2939 " (18, 42),\n",
2940 " (18, 45),\n",
2941 " (19, 44),\n",
2942 " (19, 53),\n",
2943 " (20, 38),\n",
2944 " (21, 9),\n",
2945 " (21, 41),\n",
2946 " (22, 28),\n",
2947 " (23, 1),\n",
2948 " (23, 49),\n",
2949 " (24, 10),\n",
2950 " (24, 31)],\n",
2951 " 'n': [(0, 46),\n",
2952 " (0, 52),\n",
2953 " (1, 20),\n",
2954 " (1, 33),\n",
2955 " (1, 39),\n",
2956 " (2, 19),\n",
2957 " (2, 20),\n",
2958 " (2, 24),\n",
2959 " (2, 25),\n",
2960 " (2, 33),\n",
2961 " (2, 38),\n",
2962 " (2, 40),\n",
2963 " (2, 48),\n",
2964 " (2, 49),\n",
2965 " (3, 4),\n",
2966 " (3, 36),\n",
2967 " (3, 40),\n",
2968 " (4, 8),\n",
2969 " (4, 9),\n",
2970 " (4, 22),\n",
2971 " (4, 44),\n",
2972 " (4, 49),\n",
2973 " (5, 24),\n",
2974 " (5, 40),\n",
2975 " (6, 20),\n",
2976 " (6, 36),\n",
2977 " (6, 41),\n",
2978 " (6, 54),\n",
2979 " (6, 55),\n",
2980 " (7, 22),\n",
2981 " (8, 13),\n",
2982 " (8, 23),\n",
2983 " (8, 35),\n",
2984 " (8, 47),\n",
2985 " (9, 13),\n",
2986 " (9, 25),\n",
2987 " (9, 32),\n",
2988 " (9, 46),\n",
2989 " (9, 49),\n",
2990 " (10, 3),\n",
2991 " (10, 23),\n",
2992 " (10, 27),\n",
2993 " (10, 31),\n",
2994 " (10, 35),\n",
2995 " (10, 39),\n",
2996 " (10, 44),\n",
2997 " (10, 51),\n",
2998 " (11, 6),\n",
2999 " (11, 52),\n",
3000 " (12, 4),\n",
3001 " (12, 5),\n",
3002 " (12, 8),\n",
3003 " (12, 25),\n",
3004 " (12, 32),\n",
3005 " (12, 42),\n",
3006 " (12, 47),\n",
3007 " (13, 21),\n",
3008 " (13, 25),\n",
3009 " (13, 36),\n",
3010 " (13, 40),\n",
3011 " (13, 55),\n",
3012 " (14, 12),\n",
3013 " (14, 18),\n",
3014 " (15, 20),\n",
3015 " (15, 32),\n",
3016 " (15, 46),\n",
3017 " (16, 18),\n",
3018 " (16, 22),\n",
3019 " (16, 34),\n",
3020 " (16, 36),\n",
3021 " (17, 7),\n",
3022 " (17, 21),\n",
3023 " (17, 22),\n",
3024 " (17, 40),\n",
3025 " (17, 47),\n",
3026 " (17, 53),\n",
3027 " (17, 54),\n",
3028 " (18, 22),\n",
3029 " (18, 32),\n",
3030 " (18, 33),\n",
3031 " (18, 44),\n",
3032 " (18, 46),\n",
3033 " (19, 1),\n",
3034 " (19, 5),\n",
3035 " (19, 12),\n",
3036 " (19, 20),\n",
3037 " (19, 48),\n",
3038 " (19, 55),\n",
3039 " (20, 3),\n",
3040 " (20, 18),\n",
3041 " (20, 26),\n",
3042 " (21, 0),\n",
3043 " (21, 8),\n",
3044 " (21, 26),\n",
3045 " (21, 45),\n",
3046 " (21, 49),\n",
3047 " (22, 18),\n",
3048 " (22, 20),\n",
3049 " (22, 45),\n",
3050 " (22, 55),\n",
3051 " (23, 5),\n",
3052 " (23, 8),\n",
3053 " (23, 16),\n",
3054 " (23, 32),\n",
3055 " (23, 33),\n",
3056 " (24, 22),\n",
3057 " (24, 40),\n",
3058 " (24, 45)],\n",
3059 " 'p': [(0, 35),\n",
3060 " (0, 43),\n",
3061 " (0, 44),\n",
3062 " (3, 20),\n",
3063 " (3, 46),\n",
3064 " (4, 1),\n",
3065 " (4, 28),\n",
3066 " (5, 1),\n",
3067 " (5, 51),\n",
3068 " (6, 7),\n",
3069 " (6, 35),\n",
3070 " (6, 49),\n",
3071 " (7, 43),\n",
3072 " (8, 27),\n",
3073 " (10, 53),\n",
3074 " (11, 30),\n",
3075 " (14, 44),\n",
3076 " (15, 15),\n",
3077 " (15, 23),\n",
3078 " (15, 45),\n",
3079 " (17, 0),\n",
3080 " (17, 1),\n",
3081 " (18, 12),\n",
3082 " (18, 14),\n",
3083 " (18, 49),\n",
3084 " (18, 54),\n",
3085 " (21, 34),\n",
3086 " (22, 1),\n",
3087 " (22, 16),\n",
3088 " (22, 39),\n",
3089 " (22, 46),\n",
3090 " (24, 3),\n",
3091 " (24, 15),\n",
3092 " (24, 52)],\n",
3093 " 's': [(0, 20),\n",
3094 " (0, 25),\n",
3095 " (1, 6),\n",
3096 " (1, 14),\n",
3097 " (1, 28),\n",
3098 " (1, 54),\n",
3099 " (2, 0),\n",
3100 " (2, 7),\n",
3101 " (2, 17),\n",
3102 " (2, 32),\n",
3103 " (2, 41),\n",
3104 " (2, 42),\n",
3105 " (3, 6),\n",
3106 " (3, 16),\n",
3107 " (3, 17),\n",
3108 " (3, 26),\n",
3109 " (3, 47),\n",
3110 " (3, 48),\n",
3111 " (4, 11),\n",
3112 " (4, 20),\n",
3113 " (5, 2),\n",
3114 " (5, 27),\n",
3115 " (5, 34),\n",
3116 " (5, 41),\n",
3117 " (6, 1),\n",
3118 " (6, 8),\n",
3119 " (7, 1),\n",
3120 " (7, 27),\n",
3121 " (7, 30),\n",
3122 " (7, 34),\n",
3123 " (7, 44),\n",
3124 " (7, 52),\n",
3125 " (7, 55),\n",
3126 " (8, 8),\n",
3127 " (8, 14),\n",
3128 " (8, 55),\n",
3129 " (9, 6),\n",
3130 " (9, 23),\n",
3131 " (9, 38),\n",
3132 " (9, 44),\n",
3133 " (9, 48),\n",
3134 " (9, 55),\n",
3135 " (10, 9),\n",
3136 " (11, 20),\n",
3137 " (11, 21),\n",
3138 " (11, 36),\n",
3139 " (12, 1),\n",
3140 " (12, 15),\n",
3141 " (12, 41),\n",
3142 " (12, 50),\n",
3143 " (13, 44),\n",
3144 " (13, 46),\n",
3145 " (13, 52),\n",
3146 " (14, 26),\n",
3147 " (14, 36),\n",
3148 " (15, 1),\n",
3149 " (15, 7),\n",
3150 " (15, 14),\n",
3151 " (15, 18),\n",
3152 " (15, 34),\n",
3153 " (15, 43),\n",
3154 " (16, 17),\n",
3155 " (16, 42),\n",
3156 " (18, 3),\n",
3157 " (18, 6),\n",
3158 " (18, 19),\n",
3159 " (18, 20),\n",
3160 " (18, 27),\n",
3161 " (18, 31),\n",
3162 " (19, 4),\n",
3163 " (19, 7),\n",
3164 " (19, 10),\n",
3165 " (19, 14),\n",
3166 " (19, 33),\n",
3167 " (19, 41),\n",
3168 " (19, 51),\n",
3169 " (20, 20),\n",
3170 " (21, 11),\n",
3171 " (22, 11),\n",
3172 " (22, 14),\n",
3173 " (22, 15),\n",
3174 " (22, 33),\n",
3175 " (22, 34),\n",
3176 " (22, 36),\n",
3177 " (24, 9),\n",
3178 " (24, 34),\n",
3179 " (24, 41),\n",
3180 " (24, 43)],\n",
3181 " 'v': [(1, 36),\n",
3182 " (1, 48),\n",
3183 " (1, 55),\n",
3184 " (3, 8),\n",
3185 " (3, 21),\n",
3186 " (5, 43),\n",
3187 " (5, 46),\n",
3188 " (5, 49),\n",
3189 " (6, 10),\n",
3190 " (6, 47),\n",
3191 " (10, 17),\n",
3192 " (11, 46),\n",
3193 " (11, 55),\n",
3194 " (15, 10),\n",
3195 " (15, 36),\n",
3196 " (16, 21),\n",
3197 " (16, 51),\n",
3198 " (18, 15),\n",
3199 " (18, 18),\n",
3200 " (19, 6),\n",
3201 " (21, 23),\n",
3202 " (23, 25),\n",
3203 " (23, 31),\n",
3204 " (24, 32)]}"
3205 ]
3206 },
3207 "execution_count": 21,
3208 "metadata": {},
3209 "output_type": "execute_result"
3210 }
3211 ],
3212 "source": [
3213 "letter_positions = {letter: [(r, c) for r, row in enumerate(rows) for c, char in enumerate(row) if char == letter] \n",
3214 " for letter in deduplicate('phaseseven')}\n",
3215 "letter_positions"
3216 ]
3217 },
3218 {
3219 "cell_type": "code",
3220 "execution_count": 22,
3221 "metadata": {
3222 "collapsed": false
3223 },
3224 "outputs": [
3225 {
3226 "data": {
3227 "text/plain": [
3228 "{0: 'a',\n",
3229 " 1: 'z',\n",
3230 " 2: 'y',\n",
3231 " 3: 'x',\n",
3232 " 4: 'v',\n",
3233 " 5: 'u',\n",
3234 " 6: 't',\n",
3235 " 7: 's',\n",
3236 " 8: 'r',\n",
3237 " 9: 'q',\n",
3238 " 10: 'p',\n",
3239 " 11: 'o',\n",
3240 " 12: 'n',\n",
3241 " 13: 'm',\n",
3242 " 14: 'l',\n",
3243 " 15: 'k',\n",
3244 " 16: 'j',\n",
3245 " 17: 'i',\n",
3246 " 18: 'h',\n",
3247 " 19: 'g',\n",
3248 " 20: 'f',\n",
3249 " 21: 'e',\n",
3250 " 22: 'd',\n",
3251 " 23: 'c',\n",
3252 " 24: 'b'}"
3253 ]
3254 },
3255 "execution_count": 22,
3256 "metadata": {},
3257 "output_type": "execute_result"
3258 }
3259 ],
3260 "source": [
3261 "keycolumn = make_cadenus_keycolumn(reverse=True)\n",
3262 "inverse_keycolumn = {v: l for l, v in keycolumn.items()}\n",
3263 "inverse_keycolumn"
3264 ]
3265 },
3266 {
3267 "cell_type": "code",
3268 "execution_count": 23,
3269 "metadata": {
3270 "collapsed": false
3271 },
3272 "outputs": [],
3273 "source": [
3274 "def valid_partial_solution(solution, inverse_keycolumn):\n",
3275 " row_indices = [p[0] for p in sorted(solution, key=lambda x: x[1])]\n",
3276 " row_letters = [inverse_keycolumn[i] for i in row_indices]\n",
3277 " letter_pairs = ngrams(row_letters, 2)\n",
3278 " return all(p[0] <= p[1] for p in letter_pairs)"
3279 ]
3280 },
3281 {
3282 "cell_type": "code",
3283 "execution_count": 24,
3284 "metadata": {
3285 "collapsed": false
3286 },
3287 "outputs": [
3288 {
3289 "data": {
3290 "text/plain": [
3291 "43005"
3292 ]
3293 },
3294 "execution_count": 24,
3295 "metadata": {},
3296 "output_type": "execute_result"
3297 }
3298 ],
3299 "source": [
3300 "solutions = [[p] for p in letter_positions['p']]\n",
3301 "for letter in 'ha': #'haseseven':\n",
3302 " new_solutions = []\n",
3303 " for solution in solutions:\n",
3304 " used_columns = [p[1] for p in solution]\n",
3305 " for position in letter_positions[letter]:\n",
3306 " if position[1] not in used_columns:\n",
3307 " if valid_partial_solution(solution + [position], inverse_keycolumn):\n",
3308 " new_solutions += [solution + [position]]\n",
3309 " solutions = new_solutions\n",
3310 "len(solutions)"
3311 ]
3312 },
3313 {
3314 "cell_type": "code",
3315 "execution_count": 25,
3316 "metadata": {
3317 "collapsed": false
3318 },
3319 "outputs": [
3320 {
3321 "data": {
3322 "text/plain": [
3323 "True"
3324 ]
3325 },
3326 "execution_count": 25,
3327 "metadata": {},
3328 "output_type": "execute_result"
3329 }
3330 ],
3331 "source": [
3332 "valid_partial_solution(solutions[1], inverse_keycolumn)"
3333 ]
3334 },
3335 {
3336 "cell_type": "code",
3337 "execution_count": 26,
3338 "metadata": {
3339 "collapsed": false
3340 },
3341 "outputs": [
3342 {
3343 "data": {
3344 "text/plain": [
3345 "['pha',\n",
3346 " 'ruo',\n",
3347 " 'oll',\n",
3348 " 'rea',\n",
3349 " 'laa',\n",
3350 " 'tut',\n",
3351 " 'pei',\n",
3352 " 'ead',\n",
3353 " 'nrt',\n",
3354 " 'imi',\n",
3355 " 'non',\n",
3356 " 'eie',\n",
3357 " 'aed',\n",
3358 " 'mir',\n",
3359 " 'inl',\n",
3360 " 'lwi',\n",
3361 " 'eah',\n",
3362 " 'eai',\n",
3363 " 'aps',\n",
3364 " 'cnl',\n",
3365 " 'ren',\n",
3366 " 'ege',\n",
3367 " 'xoo',\n",
3368 " 'eau',\n",
3369 " 'uep']"
3370 ]
3371 },
3372 "execution_count": 26,
3373 "metadata": {},
3374 "output_type": "execute_result"
3375 }
3376 ],
3377 "source": [
3378 "display = []\n",
3379 "for p in solutions[1]:\n",
3380 " this_column = columns[p[1]]\n",
3381 " rotated_column = this_column[p[0]:] + this_column[:p[0]]\n",
3382 " display += [rotated_column]\n",
3383 "display_rows = [''.join(r) for r in zip(*display)]\n",
3384 "display_rows"
3385 ]
3386 },
3387 {
3388 "cell_type": "code",
3389 "execution_count": 27,
3390 "metadata": {
3391 "collapsed": false
3392 },
3393 "outputs": [],
3394 "source": [
3395 "def display_solution(solution, columns):\n",
3396 " display = []\n",
3397 " for p in solution:\n",
3398 " this_column = columns[p[1]]\n",
3399 " rotated_column = this_column[p[0]:] + this_column[:p[0]]\n",
3400 " display += [rotated_column]\n",
3401 " return [''.join(r) for r in zip(*display)]"
3402 ]
3403 },
3404 {
3405 "cell_type": "code",
3406 "execution_count": 28,
3407 "metadata": {
3408 "collapsed": false
3409 },
3410 "outputs": [
3411 {
3412 "data": {
3413 "text/plain": [
3414 "['pha',\n",
3415 " 'ruo',\n",
3416 " 'ols',\n",
3417 " 'rer',\n",
3418 " 'lai',\n",
3419 " 'tul',\n",
3420 " 'pei',\n",
3421 " 'eaa',\n",
3422 " 'nro',\n",
3423 " 'ime',\n",
3424 " 'nod',\n",
3425 " 'eid',\n",
3426 " 'aea',\n",
3427 " 'mii',\n",
3428 " 'int',\n",
3429 " 'lwi',\n",
3430 " 'eah',\n",
3431 " 'eap',\n",
3432 " 'apk',\n",
3433 " 'cny',\n",
3434 " 'rew',\n",
3435 " 'egn',\n",
3436 " 'xor',\n",
3437 " 'eaa',\n",
3438 " 'uea']"
3439 ]
3440 },
3441 "execution_count": 28,
3442 "metadata": {},
3443 "output_type": "execute_result"
3444 }
3445 ],
3446 "source": [
3447 "display_solution(solutions[0], columns)"
3448 ]
3449 },
3450 {
3451 "cell_type": "code",
3452 "execution_count": 29,
3453 "metadata": {
3454 "collapsed": false
3455 },
3456 "outputs": [
3457 {
3458 "data": {
3459 "text/plain": [
3460 "-109.09171451522874"
3461 ]
3462 },
3463 "execution_count": 29,
3464 "metadata": {},
3465 "output_type": "execute_result"
3466 }
3467 ],
3468 "source": [
3469 "sum(Ptrigrams(r) for r in display_rows)"
3470 ]
3471 },
3472 {
3473 "cell_type": "code",
3474 "execution_count": 30,
3475 "metadata": {
3476 "collapsed": false
3477 },
3478 "outputs": [],
3479 "source": [
3480 "def score_solution(solution, columns):\n",
3481 " display = []\n",
3482 " for p in solution:\n",
3483 " this_column = columns[p[1]]\n",
3484 " rotated_column = this_column[p[0]:] + this_column[:p[0]]\n",
3485 " display += [rotated_column]\n",
3486 " display_rows = [''.join(r) for r in zip(*display)]\n",
3487 " return sum(Ptrigrams(r) for r in display_rows)"
3488 ]
3489 },
3490 {
3491 "cell_type": "code",
3492 "execution_count": 31,
3493 "metadata": {
3494 "collapsed": false
3495 },
3496 "outputs": [
3497 {
3498 "data": {
3499 "text/plain": [
3500 "[([(0, 35), (0, 12), (0, 0)],\n",
3501 " ['pha',\n",
3502 " 'ruo',\n",
3503 " 'ols',\n",
3504 " 'rer',\n",
3505 " 'lai',\n",
3506 " 'tul',\n",
3507 " 'pei',\n",
3508 " 'eaa',\n",
3509 " 'nro',\n",
3510 " 'ime',\n",
3511 " 'nod',\n",
3512 " 'eid',\n",
3513 " 'aea',\n",
3514 " 'mii',\n",
3515 " 'int',\n",
3516 " 'lwi',\n",
3517 " 'eah',\n",
3518 " 'eap',\n",
3519 " 'apk',\n",
3520 " 'cny',\n",
3521 " 'rew',\n",
3522 " 'egn',\n",
3523 " 'xor',\n",
3524 " 'eaa',\n",
3525 " 'uea'],\n",
3526 " -112.23213925765266),\n",
3527 " ([(0, 35), (0, 12), (0, 3)],\n",
3528 " ['pha',\n",
3529 " 'ruo',\n",
3530 " 'oll',\n",
3531 " 'rea',\n",
3532 " 'laa',\n",
3533 " 'tut',\n",
3534 " 'pei',\n",
3535 " 'ead',\n",
3536 " 'nrt',\n",
3537 " 'imi',\n",
3538 " 'non',\n",
3539 " 'eie',\n",
3540 " 'aed',\n",
3541 " 'mir',\n",
3542 " 'inl',\n",
3543 " 'lwi',\n",
3544 " 'eah',\n",
3545 " 'eai',\n",
3546 " 'aps',\n",
3547 " 'cnl',\n",
3548 " 'ren',\n",
3549 " 'ege',\n",
3550 " 'xoo',\n",
3551 " 'eau',\n",
3552 " 'uep'],\n",
3553 " -109.09171451522874),\n",
3554 " ([(0, 35), (0, 12), (0, 9)],\n",
3555 " ['pha',\n",
3556 " 'ruo',\n",
3557 " 'old',\n",
3558 " 'reo',\n",
3559 " 'lan',\n",
3560 " 'tur',\n",
3561 " 'pee',\n",
3562 " 'eae',\n",
3563 " 'nro',\n",
3564 " 'imc',\n",
3565 " 'nos',\n",
3566 " 'eir',\n",
3567 " 'aee',\n",
3568 " 'mim',\n",
3569 " 'ini',\n",
3570 " 'lwk',\n",
3571 " 'ear',\n",
3572 " 'eai',\n",
3573 " 'api',\n",
3574 " 'cno',\n",
3575 " 'rei',\n",
3576 " 'egh',\n",
3577 " 'xof',\n",
3578 " 'eat',\n",
3579 " 'ues'],\n",
3580 " -105.51902198106185),\n",
3581 " ([(0, 35), (0, 12), (0, 29)],\n",
3582 " ['pha',\n",
3583 " 'rut',\n",
3584 " 'olh',\n",
3585 " 'rea',\n",
3586 " 'lab',\n",
3587 " 'tuo',\n",
3588 " 'peo',\n",
3589 " 'eat',\n",
3590 " 'nrt',\n",
3591 " 'imw',\n",
3592 " 'noa',\n",
3593 " 'eie',\n",
3594 " 'aeh',\n",
3595 " 'mii',\n",
3596 " 'ine',\n",
3597 " 'lwi',\n",
3598 " 'eao',\n",
3599 " 'ead',\n",
3600 " 'api',\n",
3601 " 'cne',\n",
3602 " 'rec',\n",
3603 " 'ega',\n",
3604 " 'xol',\n",
3605 " 'eal',\n",
3606 " 'ueo'],\n",
3607 " -106.91642615054437),\n",
3608 " ([(0, 35), (0, 12), (0, 41)],\n",
3609 " ['pha',\n",
3610 " 'rur',\n",
3611 " 'ols',\n",
3612 " 'rex',\n",
3613 " 'lal',\n",
3614 " 'tus',\n",
3615 " 'pen',\n",
3616 " 'eac',\n",
3617 " 'nrc',\n",
3618 " 'ime',\n",
3619 " 'nou',\n",
3620 " 'eit',\n",
3621 " 'aes',\n",
3622 " 'mia',\n",
3623 " 'int',\n",
3624 " 'lwa',\n",
3625 " 'eai',\n",
3626 " 'eat',\n",
3627 " 'apr',\n",
3628 " 'cns',\n",
3629 " 'ref',\n",
3630 " 'egh',\n",
3631 " 'xof',\n",
3632 " 'eai',\n",
3633 " 'ues'],\n",
3634 " -100.92420426683796),\n",
3635 " ([(0, 35), (0, 12), (1, 44)],\n",
3636 " ['pha',\n",
3637 " 'ruc',\n",
3638 " 'olg',\n",
3639 " 'ren',\n",
3640 " 'laf',\n",
3641 " 'tue',\n",
3642 " 'pes',\n",
3643 " 'eal',\n",
3644 " 'nrs',\n",
3645 " 'imn',\n",
3646 " 'noi',\n",
3647 " 'eie',\n",
3648 " 'aes',\n",
3649 " 'mip',\n",
3650 " 'ind',\n",
3651 " 'lwc',\n",
3652 " 'eag',\n",
3653 " 'ean',\n",
3654 " 'aph',\n",
3655 " 'cno',\n",
3656 " 'ret',\n",
3657 " 'egr',\n",
3658 " 'xoe',\n",
3659 " 'eai',\n",
3660 " 'uep'],\n",
3661 " -108.53207489276411),\n",
3662 " ([(0, 35), (0, 12), (1, 47)],\n",
3663 " ['pha',\n",
3664 " 'rua',\n",
3665 " 'ols',\n",
3666 " 'rer',\n",
3667 " 'lad',\n",
3668 " 'tuv',\n",
3669 " 'pee',\n",
3670 " 'ean',\n",
3671 " 'nrg',\n",
3672 " 'imo',\n",
3673 " 'noe',\n",
3674 " 'ein',\n",
3675 " 'aee',\n",
3676 " 'mii',\n",
3677 " 'iny',\n",
3678 " 'lwr',\n",
3679 " 'ean',\n",
3680 " 'eai',\n",
3681 " 'ape',\n",
3682 " 'cnd',\n",
3683 " 'rew',\n",
3684 " 'egr',\n",
3685 " 'xot',\n",
3686 " 'eai',\n",
3687 " 'ueg'],\n",
3688 " -109.50900823047225),\n",
3689 " ([(0, 35), (0, 12), (2, 47)],\n",
3690 " ['pha',\n",
3691 " 'rus',\n",
3692 " 'olr',\n",
3693 " 'red',\n",
3694 " 'lav',\n",
3695 " 'tue',\n",
3696 " 'pen',\n",
3697 " 'eag',\n",
3698 " 'nro',\n",
3699 " 'ime',\n",
3700 " 'non',\n",
3701 " 'eie',\n",
3702 " 'aei',\n",
3703 " 'miy',\n",
3704 " 'inr',\n",
3705 " 'lwn',\n",
3706 " 'eai',\n",
3707 " 'eae',\n",
3708 " 'apd',\n",
3709 " 'cnw',\n",
3710 " 'rer',\n",
3711 " 'egt',\n",
3712 " 'xoi',\n",
3713 " 'eag',\n",
3714 " 'uea'],\n",
3715 " -114.40196859359595),\n",
3716 " ([(0, 35), (0, 12), (3, 50)],\n",
3717 " ['pha',\n",
3718 " 'ruw',\n",
3719 " 'olt',\n",
3720 " 'rer',\n",
3721 " 'lad',\n",
3722 " 'tue',\n",
3723 " 'peh',\n",
3724 " 'ear',\n",
3725 " 'nrc',\n",
3726 " 'ims',\n",
3727 " 'noc',\n",
3728 " 'eie',\n",
3729 " 'aec',\n",
3730 " 'mil',\n",
3731 " 'inr',\n",
3732 " 'lwr',\n",
3733 " 'ear',\n",
3734 " 'eai',\n",
3735 " 'api',\n",
3736 " 'cne',\n",
3737 " 'ree',\n",
3738 " 'ego',\n",
3739 " 'xoe',\n",
3740 " 'ear',\n",
3741 " 'uee'],\n",
3742 " -106.68850150792129),\n",
3743 " ([(0, 35), (0, 12), (4, 38)],\n",
3744 " ['pha',\n",
3745 " 'rue',\n",
3746 " 'olk',\n",
3747 " 'reh',\n",
3748 " 'laa',\n",
3749 " 'tus',\n",
3750 " 'peb',\n",
3751 " 'eaa',\n",
3752 " 'nre',\n",
3753 " 'imd',\n",
3754 " 'nor',\n",
3755 " 'eit',\n",
3756 " 'aeu',\n",
3757 " 'mio',\n",
3758 " 'int',\n",
3759 " 'lwo',\n",
3760 " 'eah',\n",
3761 " 'eau',\n",
3762 " 'apf',\n",
3763 " 'cni',\n",
3764 " 'rey',\n",
3765 " 'egg',\n",
3766 " 'xoo',\n",
3767 " 'ean',\n",
3768 " 'uet'],\n",
3769 " -108.49770543928673)]"
3770 ]
3771 },
3772 "execution_count": 31,
3773 "metadata": {},
3774 "output_type": "execute_result"
3775 }
3776 ],
3777 "source": [
3778 "[(s, display_solution(s, columns), score_solution(s, columns)) for s in solutions[:10]]"
3779 ]
3780 },
3781 {
3782 "cell_type": "code",
3783 "execution_count": 32,
3784 "metadata": {
3785 "collapsed": false
3786 },
3787 "outputs": [
3788 {
3789 "data": {
3790 "text/plain": [
3791 "[[(0, 35), (0, 12), (0, 41)],\n",
3792 " [(0, 35), (0, 12), (0, 9)],\n",
3793 " [(0, 35), (0, 12), (3, 50)],\n",
3794 " [(0, 35), (0, 12), (0, 29)],\n",
3795 " [(0, 35), (0, 12), (4, 38)],\n",
3796 " [(0, 35), (0, 12), (1, 44)],\n",
3797 " [(0, 35), (0, 12), (0, 3)],\n",
3798 " [(0, 35), (0, 12), (1, 47)],\n",
3799 " [(0, 35), (0, 12), (0, 0)],\n",
3800 " [(0, 35), (0, 12), (2, 47)]]"
3801 ]
3802 },
3803 "execution_count": 32,
3804 "metadata": {},
3805 "output_type": "execute_result"
3806 }
3807 ],
3808 "source": [
3809 "sorted(solutions[:10], key=lambda s: score_solution(s, columns), reverse=True)"
3810 ]
3811 },
3812 {
3813 "cell_type": "code",
3814 "execution_count": 33,
3815 "metadata": {
3816 "collapsed": false
3817 },
3818 "outputs": [],
3819 "source": [
3820 "solutions = sorted(solutions, key=lambda s: score_solution(s, columns), reverse=True)[:10000]"
3821 ]
3822 },
3823 {
3824 "cell_type": "code",
3825 "execution_count": 34,
3826 "metadata": {
3827 "collapsed": false
3828 },
3829 "outputs": [
3830 {
3831 "data": {
3832 "text/plain": [
3833 "10000"
3834 ]
3835 },
3836 "execution_count": 34,
3837 "metadata": {},
3838 "output_type": "execute_result"
3839 }
3840 ],
3841 "source": [
3842 "for letter in 'seseven': #'haseeight':\n",
3843 " new_solutions = []\n",
3844 " for solution in solutions:\n",
3845 " used_columns = [p[1] for p in solution]\n",
3846 " for position in letter_positions[letter]:\n",
3847 " if position[1] not in used_columns:\n",
3848 " if valid_partial_solution(solution + [position], inverse_keycolumn):\n",
3849 " new_solutions += [solution + [position]]\n",
3850 " solutions = sorted(new_solutions, key=lambda s: score_solution(s, columns), reverse=True)[:10000]\n",
3851 "len(solutions)"
3852 ]
3853 },
3854 {
3855 "cell_type": "code",
3856 "execution_count": 35,
3857 "metadata": {
3858 "collapsed": false
3859 },
3860 "outputs": [
3861 {
3862 "data": {
3863 "text/plain": [
3864 "['phaseseven',\n",
3865 " 'ninmelcalh',\n",
3866 " 'andodrinho',\n",
3867 " 'lmedyierts',\n",
3868 " 'reaapstnen',\n",
3869 " 'entaryafts',\n",
3870 " 'sconhysefe',\n",
3871 " 'birnerctan',\n",
3872 " 'entaergeno',\n",
3873 " 'wioontomoi',\n",
3874 " 'ittretedus',\n",
3875 " 'dttheselin',\n",
3876 " 'ertalriesn',\n",
3877 " 'enpraiaatp',\n",
3878 " 'evisateths',\n",
3879 " 'aytrvioymi',\n",
3880 " 'feewiaihin',\n",
3881 " 'lsnaltemai',\n",
3882 " 'racessdctr',\n",
3883 " 'odreacyugg',\n",
3884 " 'itliciaooa',\n",
3885 " 'ittrapinds',\n",
3886 " 'trareseshh',\n",
3887 " 'aecefdanst',\n",
3888 " 'ancertalex']"
3889 ]
3890 },
3891 "execution_count": 35,
3892 "metadata": {},
3893 "output_type": "execute_result"
3894 }
3895 ],
3896 "source": [
3897 "display_solution(solutions[0], columns)"
3898 ]
3899 },
3900 {
3901 "cell_type": "code",
3902 "execution_count": 36,
3903 "metadata": {
3904 "collapsed": false
3905 },
3906 "outputs": [
3907 {
3908 "data": {
3909 "text/plain": [
3910 "849"
3911 ]
3912 },
3913 "execution_count": 36,
3914 "metadata": {},
3915 "output_type": "execute_result"
3916 }
3917 ],
3918 "source": [
3919 "hinted_keywords = [w for w in keywords if w[0] =='f' if len(transpositions_of(w)) == 7]\n",
3920 "len(hinted_keywords)"
3921 ]
3922 },
3923 {
3924 "cell_type": "code",
3925 "execution_count": 37,
3926 "metadata": {
3927 "collapsed": false
3928 },
3929 "outputs": [
3930 {
3931 "data": {
3932 "text/plain": [
3933 "['fabrics',\n",
3934 " 'facings',\n",
3935 " 'faction',\n",
3936 " 'factors',\n",
3937 " 'factory',\n",
3938 " 'faculty',\n",
3939 " 'fadeout',\n",
3940 " 'failure',\n",
3941 " 'fainest',\n",
3942 " 'fainted']"
3943 ]
3944 },
3945 "execution_count": 37,
3946 "metadata": {},
3947 "output_type": "execute_result"
3948 }
3949 ],
3950 "source": [
3951 "hinted_keywords[:10]"
3952 ]
3953 },
3954 {
3955 "cell_type": "code",
3956 "execution_count": 38,
3957 "metadata": {
3958 "collapsed": false
3959 },
3960 "outputs": [
3961 {
3962 "data": {
3963 "text/plain": [
3964 "175"
3965 ]
3966 },
3967 "execution_count": 38,
3968 "metadata": {},
3969 "output_type": "execute_result"
3970 }
3971 ],
3972 "source": [
3973 "first_chunk = c8bl[:175]\n",
3974 "len(first_chunk)"
3975 ]
3976 },
3977 {
3978 "cell_type": "code",
3979 "execution_count": 39,
3980 "metadata": {
3981 "collapsed": false
3982 },
3983 "outputs": [
3984 {
3985 "data": {
3986 "text/plain": [
3987 "['gatlrlnjtonethnirreh',\n",
3988 " 'raorejnptreanhriaeso',\n",
3989 " 'raohoanptraesrriasul',\n",
3990 " 'raohhanptraemrriasln',\n",
3991 " 'raorhaeptrnemsrianln',\n",
3992 " 'raonlneptrnissriaaoc',\n",
3993 " 'garhrarjtartsnnifphn',\n",
3994 " 'raoaalapteesnfriunnr',\n",
3995 " 'raonanhpterfrariutpn',\n",
3996 " 'garehhrjteaaraniessp',\n",
3997 " 'raonhalpterafnriutsp',\n",
3998 " 'fainrleptorniseirtno',\n",
3999 " 'raoaanhptemfrariunpn',\n",
4000 " 'raloannptirsrhrioalt',\n",
4001 " 'falmireptinonseiosrn',\n",
4002 " 'ralhaanptiafmrriospn',\n",
4003 " 'faeilenptnoisreirroo',\n",
4004 " 'raeoeanptneafhrirusp',\n",
4005 " 'earotktntvrugheivarj',\n",
4006 " 'gaeorhojtarernnisaep',\n",
4007 " 'gaeorhnjtarerhnisaep',\n",
4008 " 'raeooaeptareesrisaun',\n",
4009 " 'garnahrjtvenranivrep',\n",
4010 " 'raalaenptmifsrrinopo',\n",
4011 " 'faoeoepptnneareihrus',\n",
4012 " 'falhonpptnaerreirsut',\n",
4013 " 'fanroanpthiesreiaoul',\n",
4014 " 'fanhonpptraerreinsut',\n",
4015 " 'rahnaanptaofmrrisepn',\n",
4016 " 'fahrrinptaitoreisohh',\n",
4017 " 'rarrjaaptnensfrineon',\n",
4018 " 'gaaohrmjtsrrnnninapn',\n",
4019 " 'gaaarhrjtsenraninnnp',\n",
4020 " 'gasrlhrjtntnraniehrp',\n",
4021 " 'fasanomptnensneieean',\n",
4022 " 'raalrempftinsnrpiono',\n",
4023 " 'raaorejpftneanrpihes',\n",
4024 " 'ghrrlanjratnthnpfhri',\n",
4025 " 'gharnarjreaetvnpnfai',\n",
4026 " 'frtroenppwthsredoheo',\n",
4027 " 'frahoepppeaearednsus',\n",
4028 " 'raeaoalpfnsntirprlhi',\n",
4029 " 'raaiahnpfmotarrpnhis',\n",
4030 " 'froiianppnoosredhhrl',\n",
4031 " 'rahrinnpfaeeorrpsere',\n",
4032 " 'rahaaiupfaeselrpsnlr',\n",
4033 " 'raaerejpfsreanrpnpes',\n",
4034 " 'graeohnjetarrhneisap',\n",
4035 " 'fitahanpoimesrerenln',\n",
4036 " 'grtaaahjeosntrnernei',\n",
4037 " 'rotaaanpeosetrrurnni',\n",
4038 " 'roieaaopeeanfnrureep',\n",
4039 " 'rrejahnpernfarrepops',\n",
4040 " 'rrejarepernfnsrepopn',\n",
4041 " 'fopalrnpertntheuiirh',\n",
4042 " 'frpnhrlperoapneeiesd',\n",
4043 " 'foperehpernpaaeuirds',\n",
4044 " 'fopalaapersnteeuinri',\n",
4045 " 'rrjalaepensnfrreonrp',\n",
4046 " 'fopaarnpersmpreuinnd',\n",
4047 " 'roatalhpeeifnarunepr',\n",
4048 " 'gtfiehrjuterranrrrep',\n",
4049 " 'rrainanpeneofhreerep',\n",
4050 " 'filhranpoiapmrerosdn',\n",
4051 " 'rrrajaapevtnnfrevioe',\n",
4052 " 'roeaaanpeatefhrusinp',\n",
4053 " 'rreinanpeaeofhresrep',\n",
4054 " 'ronealnperrfnhrutppr',\n",
4055 " 'fioraenpohpmsreredno',\n",
4056 " 'fonprlnperrpnheutidr',\n",
4057 " 'finlrenporipsrertodo',\n",
4058 " 'rrlatajpenfisnrerpen',\n",
4059 " 'rooaeaepenfntaruhpri',\n",
4060 " 'fiairnhpomopraernhdn',\n",
4061 " 'pfomrteddsnnwstcnsno',\n",
4062 " 'rrninalpeheofnrearep',\n",
4063 " 'fonrraeperipmseunodn',\n",
4064 " 'fonrnrhperirpaeunotd',\n",
4065 " 'pfnsoaiddsoseetccrne',\n",
4066 " 'grnatahjeetonrnesire',\n",
4067 " 'grnarhrjeetnranesinp',\n",
4068 " 'ronarampeetnfnrusinp',\n",
4069 " 'roaaeaepeifresrueppn',\n",
4070 " 'finnnorpoesnsperscan',\n",
4071 " 'rosaanmpeoftnnrurpia',\n",
4072 " 'flapannpitrsrheoiilt',\n",
4073 " 'raaeoaopntaefnreieup',\n",
4074 " 'faaeorppntaevreeieuv',\n",
4075 " 'eaattktnntrogheeivrj',\n",
4076 " 'gaanthnjeteorhnniarp',\n",
4077 " 'rlaealnpitnfnhroirpr',\n",
4078 " 'faanorppeteevreniauv',\n",
4079 " 'raaejanpetanfhrnisop',\n",
4080 " 'gaarehrjntvaraneivep',\n",
4081 " 'raaeuaopetalfnrnisip',\n",
4082 " 'faaooeppetnearenihus',\n",
4083 " 'gaanehrjnthrraneiaep',\n",
4084 " 'raannalpethofnrniaep',\n",
4085 " 'eaahtktnntaogheeisrj',\n",
4086 " 'ftaaormpwtshnneoinen',\n",
4087 " 'ftashanpwtnemreoieln',\n",
4088 " 'ftashnapwtnenmeoiela',\n",
4089 " 'faasoeppetnearenieus',\n",
4090 " 'faaeoeppetsearenious',\n",
4091 " 'farnorppepeevrendauv',\n",
4092 " 'farnonrpepeehiendaua',\n",
4093 " 'farnoeppepeearendsus',\n",
4094 " 'gfrirhrjteearanrernp',\n",
4095 " 'raoieaopneeafnreurep',\n",
4096 " 'paoprhndeeeiartnufos',\n",
4097 " 'paoprredeeeinstnufon',\n",
4098 " 'faoeirnpeeaeihenusro',\n",
4099 " 'raolhaepeenafrrnursp',\n",
4100 " 'gaaahhrjestarannlisp',\n",
4101 " 'rlrahalpittafnrohisp',\n",
4102 " 'gaviehrjnvearaneorep',\n",
4103 " 'raaoorapesneatrnlhuf',\n",
4104 " 'flaoinrpisnorpeolhrt',\n",
4105 " 'ptrlfondwtndhhtohrce',\n",
4106 " 'pthafnhdwemdratolncn',\n",
4107 " 'ftrhnaipwtartoeohsni',\n",
4108 " 'rlaaniapissrefrolntr',\n",
4109 " 'rlralaepitsnfrrohnrp',\n",
4110 " 'rlraraepitsnfrrohnnp',\n",
4111 " 'fthsranpwenpmreoledn',\n",
4112 " 'fthnraepweapmseolidn',\n",
4113 " 'plasinpdisnoretolert',\n",
4114 " 'rlnaniepinfresroaptr',\n",
4115 " 'faauirlpeslopnennird',\n",
4116 " 'raaeuaepesalfrrnnsip',\n",
4117 " 'flnnrrepinrtpseoatwd',\n",
4118 " 'faaeuirpesalopennsir',\n",
4119 " 'ptnocemdwnhesntoaeto',\n",
4120 " 'raannaepesrofrrnnnep',\n",
4121 " 'flanrrapisripmeonnod',\n",
4122 " 'ftamrropwsnnpseonsnd',\n",
4123 " 'plarinpdisnoretonnrt',\n",
4124 " 'plnninpdineoretoasrt',\n",
4125 " 'pleinpndisorertoortf',\n",
4126 " 'ftehnrapwseapmeoolid',\n",
4127 " 'fvaaoeppvteeareoinus',\n",
4128 " 'raaeoaopstnefnrlirup',\n",
4129 " 'fvaeoeppvtneareoirus',\n",
4130 " 'grianhrjtesrranhrnnp',\n",
4131 " 'fhpaarepertmnseliinn',\n",
4132 " 'raotaanpseiefhrluenp',\n",
4133 " 'rronhaepterafrrhunsp',\n",
4134 " 'rrlealnptirfnhrhoppr',\n",
4135 " 'fvaeoeppvereareonpus',\n",
4136 " 'frlprlnptirpnhehoidr',\n",
4137 " 'rvarajapvnetnfroeeio',\n",
4138 " 'raaoahapseetafrlnuis',\n",
4139 " 'frwrohnptopharehades',\n",
4140 " 'rroeanhpthrfrarheppn',\n",
4141 " 'ranelanpsrrifhrltpop',\n",
4142 " 'rroeaanpthrsfrrhepnp',\n",
4143 " 'gaoanhrjsnteranlhirp',\n",
4144 " 'rrlajanptntnfhrhriop',\n",
4145 " 'grlaehrjtntsranhriop',\n",
4146 " 'eaotatknsnothgelhrir',\n",
4147 " 'rrltornptnieahrhreuf',\n",
4148 " 'rhliatnpenefhhrlrrpa',\n",
4149 " 'faoionppsneerrelhrut',\n",
4150 " 'raornaepsnaotnrlhfei',\n",
4151 " 'faoeonppsnrerrelhput',\n",
4152 " 'faoropnpsnperrelhdui',\n",
4153 " 'raoaianpsnfotrrlhphi',\n",
4154 " 'rhaanaspemfrtnrlnpni',\n",
4155 " 'rrljasaptnntnfrhroie',\n",
4156 " 'fhaprhnpemrparelnids',\n",
4157 " 'frlposrptnrenpehriue',\n",
4158 " 'paouinpdsnloretlhirt',\n",
4159 " 'frliatnptnotwhehrhio',\n",
4160 " 'frlwaohptnothaehraie',\n",
4161 " 'rrliahaptnotafrhrhis',\n",
4162 " 'fhawahnpemotarelnais',\n",
4163 " 'raoeooapsnnertrlhrua',\n",
4164 " 'paoiinpdsnooretlhhrt',\n",
4165 " 'frliataptnoswtehrhno',\n",
4166 " 'rrlnauaptnhtlfrhraii',\n",
4167 " 'fhahirnpemaoprelnsrd',\n",
4168 " 'fharaorpemnsapelnnne',\n",
4169 " 'fhasrorpemnpanelnede',\n",
4170 " 'fhatrmrpeswpnnelnods',\n",
4171 " 'paalinpdssioretlnort',\n",
4172 " 'rraoealptshrfnrhnepp',\n",
4173 " 'fhnoeaepenarmselaepn',\n",
4174 " 'paaoremdessnfntennnd',\n",
4175 " 'paslinpdsnioretleort',\n",
4176 " 'fhnirmrpeeopnnelsrds',\n",
4177 " 'frnrailptentoiehsnir',\n",
4178 " 'roajraapntnenfrhioee',\n",
4179 " 'faailrepmtoinseniron',\n",
4180 " 'foaeoeppntnearehirus',\n",
4181 " 'glanohnjntrrrhnritap',\n",
4182 " 'rlanoonpntrrehrritau',\n",
4183 " 'goaeehrjntaaranhisep',\n",
4184 " 'roaeuaapntalferhisip',\n",
4185 " 'roaeeoapntaaefrhiseu',\n",
4186 " 'flanrlepntrtiseritwo',\n",
4187 " 'rlanhoopntraerrritsu',\n",
4188 " 'faaapnrpmtsroneninie',\n",
4189 " 'flaeonppntserreriout',\n",
4190 " 'glhrranjnreathnrpefi',\n",
4191 " 'flrrpnhpnperoaerdeie',\n",
4192 " 'flrwrohpnpothaerdahe',\n",
4193 " 'rlaninnpnfreohrrptre',\n",
4194 " 'forosimpspaoenenderu',\n",
4195 " 'farnrlepmpriisendnoo',\n",
4196 " 'goratahjnetonrnheire',\n",
4197 " 'raoraenpmeatsrrnufio',\n",
4198 " 'rlrejanpnernfhrrepop',\n",
4199 " 'gorhraejneratanhepfi',\n",
4200 " 'glrhranjnerathnrepfi',\n",
4201 " 'rloanenpnefrrhrruptp',\n",
4202 " 'rlrjahapnentafrreois',\n",
4203 " 'paoprhndmeeiartnufos',\n",
4204 " 'rorejaepneanfrrhesop',\n",
4205 " 'flonprnpnerrpherutid',\n",
4206 " 'rloneaepnehafrrruaep',\n",
4207 " 'foapianpnsrotrehlihi',\n",
4208 " 'foapirnpnsroprehlihd',\n",
4209 " 'flrliinpntioeherhorr',\n",
4210 " 'flrohatpnthatwerhesi',\n",
4211 " 'rlrohaepnthafrrrhesp',\n",
4212 " 'rahnhaepmerafrrnlnsp',\n",
4213 " 'rlrhnaepntaofrrrhsep',\n",
4214 " 'rlrsoaepntnhfrrrheep',\n",
4215 " 'raaoraepmsenfrrnnunp',\n",
4216 " 'raonnrapsroretrnaene',\n",
4217 " 'raiuaanpselfmrrnripn',\n",
4218 " 'faieoeppseaearenreus',\n",
4219 " 'faraoeppspeearendnus',\n",
4220 " 'falaninpsitrorenoitr',\n",
4221 " 'fatnrirpswrtopenonhh',\n",
4222 " 'paerhomdstneantnvnle',\n",
4223 " 'gantahrjseierannaenp',\n",
4224 " 'raetlalpsniifnrnreop',\n",
4225 " 'raetlanpsniifrrnreop',\n",
4226 " 'faoirhapsaenemenernl',\n",
4227 " 'raoeaanpshrfmrrneppn',\n",
4228 " 'ranalalpsrfntirntpri',\n",
4229 " 'fanpaoepsrrserentilu',\n",
4230 " 'fanuirlpsrlopnentird',\n",
4231 " 'faatonrpsmierienneun',\n",
4232 " 'pallinpdsnioretnrort',\n",
4233 " 'paltropdsnwthetnrohe',\n",
4234 " 'galnaohjsnrtrrnnrtia',\n",
4235 " 'paaoinedsmhorftnnern',\n",
4236 " 'fnonisrpnssonpeancre',\n",
4237 " 'ranotaapsreiefrnnuen',\n",
4238 " 'famriaopsnnothensnri',\n",
4239 " 'famriropsnnopsensnrd',\n",
4240 " 'pnnsiopdnsoohetacrre',\n",
4241 " 'ratalrnptositnrirnoh',\n",
4242 " 'ealktvanttgovseihjro',\n",
4243 " 'gaoharajtrrnelniapee',\n",
4244 " 'gaorahfjtrenrtniaeep',\n",
4245 " 'raooathptreeuariaunr',\n",
4246 " 'raorrhtptrntanrianhs',\n",
4247 " 'faoatolpteeuaeeiunre',\n",
4248 " 'failnraptoirtleironh',\n",
4249 " 'raonhanpterafrriutsp',\n",
4250 " 'rarojaaptennsfriehol',\n",
4251 " 'raolnanptenrfhriurtp',\n",
4252 " 'failthoptonheneirral',\n",
4253 " 'faionoiptosarneirnis',\n",
4254 " 'faorrasptenilceiunoe',\n",
4255 " 'fatlvnnptwivnseioooa',\n",
4256 " 'gaaavlajtenvcfnineoe',\n",
4257 " 'ralnahnptirfasrionps',\n",
4258 " 'falmireptinonseiosrn',\n",
4259 " 'gaahhlajtearnfninspr',\n",
4260 " 'ranoafrpteeedariaunc',\n",
4261 " 'ranrnnapteehofriaeae',\n",
4262 " 'ranonfcptrrtdhritsnc',\n",
4263 " 'raeooasptarelcrisaue',\n",
4264 " 'raeoeroptarsehrisaoe',\n",
4265 " 'raoenuvptnnohurihrec',\n",
4266 " 'raoeluvptnnihurihroc',\n",
4267 " 'galavlajtnmvcfnirnoe',\n",
4268 " 'raahnanptmaofrrinsep',\n",
4269 " 'ganorctjthrehwniaaeo',\n",
4270 " 'fanroanpthiesreiaoul',\n",
4271 " 'ganhhnajtrarrfninspt',\n",
4272 " 'ranhaoyptrafherinspe',\n",
4273 " 'fahattmptacwuneiseor',\n",
4274 " 'gahehfhjtarrtonisepo',\n",
4275 " 'gahehlajtarrnfnisepr',\n",
4276 " 'fanlnifptnisoteiaocr',\n",
4277 " 'faamriaptsnnoceinsnr',\n",
4278 " 'raalnripftnhtorpirah',\n",
4279 " 'ghanrtajrtheonnpiaer',\n",
4280 " 'raahnylpftaoenrpisen',\n",
4281 " 'raarnyopftnoenrpinen',\n",
4282 " 'gharaaajrtnsmfnpinnn',\n",
4283 " 'raaraoypftnsserpinnn',\n",
4284 " 'ghtanaojromntnnprnai',\n",
4285 " 'ghrosefjraoyttnpfgdt',\n",
4286 " 'ghrraocjraamdhnpflns',\n",
4287 " 'oykrtcsgegaiatfnjfel',\n",
4288 " 'ekhrtulngraiheejpfec',\n",
4289 " 'rarstolpfpyuherpdere',\n",
4290 " 'fryltolppeiuaeednore',\n",
4291 " 'ghaatoojrnfsdrnpepys',\n",
4292 " 'gharooojrnerdrnpeeas',\n",
4293 " 'raaoithpfeeeuarpnurr',\n",
4294 " 'raafontpfesrturpnrsn',\n",
4295 " 'frlanirppisroaedoltr',\n",
4296 " 'friintnppooruhedhrtr',\n",
4297 " 'raeirolpfaeeherpsree',\n",
4298 " 'frawkrrppmogvnednajv',\n",
4299 " 'ghonavhjrnrtuonphtir',\n",
4300 " 'frloiroppnnaeaedrhae',\n",
4301 " 'raankrspfmaghtrpnije',\n",
4302 " 'frosanappsnenmedneea',\n",
4303 " 'rahrinopfaeeoorpsere',\n",
4304 " 'frsyoteppnesugedennr',\n",
4305 " 'raeniaepfsrotarpothi',\n",
4306 " 'granoahjethrsrneiaal',\n",
4307 " 'fiihrhepoeaeeaerrsel',\n",
4308 " 'roeseooperytonrupevg',\n",
4309 " 'roeaathperfeuaruppnr',\n",
4310 " 'grtaooujehsrdhnernas',\n",
4311 " 'roaaeoopeferonrupnpg',\n",
4312 " 'rraaesopefnrmhrepepn',\n",
4313 " 'rraeesspefarmnrepspn',\n",
4314 " 'roaliyfpefneetruprrn',\n",
4315 " 'roaaionpefmeohrupnrg',\n",
4316 " 'fopalrrpersneheuinre',\n",
4317 " 'frainsopeneomaeeeren',\n",
4318 " 'roaaranpeefvterunpvi',\n",
4319 " 'filanvspoieevyeronao',\n",
4320 " 'fileoonpoindoherorsg',\n",
4321 " 'roatsecpenrrteruevht',\n",
4322 " 'roahalrpeeafnprunspr',\n",
4323 " 'foahroopeeaidoeunsos',\n",
4324 " 'roahlaipeeanthrunsri',\n",
4325 " 'roeaasapeatemirusinn',\n",
4326 " 'finaltnportiuhertior',\n",
4327 " 'finalthportiuaertior',\n",
4328 " 'roeaaswpeatemfrusinn',\n",
4329 " 'etravehnuvtuhrervirk',\n",
4330 " 'greavlrjeatutanesirh',\n",
4331 " 'rrejaorpeanfnpresoph',\n",
4332 " 'rresserpeamnfpresntd',\n",
4333 " 'fonsetopermgooeutnhd',\n",
4334 " 'fiotdeopohuotnererot',\n",
4335 " 'fintdkfporuogtertroj',\n",
4336 " 'roeaavtpeaeturrusnir',\n",
4337 " 'rolaaatpenftmrrurpin',\n",
4338 " 'grohtaajenrotnnehpri',\n",
4339 " 'rooataepenfisnruhpel',\n",
4340 " 'fiargfipompjteerndnr',\n",
4341 " 'fiargvapompjvierndno',\n",
4342 " 'rolahsepenfaytrurpsd',\n",
4343 " 'rolasaapenfnterurpei',\n",
4344 " 'rolasrhpenfnterurpeh',\n",
4345 " 'filrsroponpntserrdeh',\n",
4346 " 'filinrnponorpherrhtd',\n",
4347 " 'rolesatpennntarurrei',\n",
4348 " 'ronoaafperrtetrunain',\n",
4349 " 'fonrraeperipmseunodn',\n",
4350 " 'fonrnrhperirpaeunotd',\n",
4351 " 'fonrharperiateeunosi',\n",
4352 " 'ronnstrperhcaprunaei',\n",
4353 " 'rosaorfpenfgtsruepfh',\n",
4354 " 'fonarropeetneaeusine',\n",
4355 " 'finarrhpoetneeersine',\n",
4356 " 'ronantipeetsuirusicr',\n",
4357 " 'gaattirjntotoaneirsr',\n",
4358 " 'raajvaepetnostrniool',\n",
4359 " 'flaplerpitrntveoiirt',\n",
4360 " 'faareoopntvaeaeeiveu',\n",
4361 " 'raaveftpntoutsreiolo',\n",
4362 " 'rlatroopithionroiatg',\n",
4363 " 'faavetopetoluaenioor',\n",
4364 " 'raannalpethofnrniaep',\n",
4365 " 'raannanpetrofhrninep',\n",
4366 " 'faanrofpetrieteninou',\n",
4367 " 'rlahoelpitartnroisat',\n",
4368 " 'faahgtepetajugenisnr',\n",
4369 " 'gaahehfjntarrtneisep',\n",
4370 " 'rlahnanpitarfrroistp',\n",
4371 " 'rlahiyepitahearoisin',\n",
4372 " 'rlahiylpitahenroisin',\n",
4373 " 'rlariyopitnhenroinin',\n",
4374 " 'faahntopetatuaenisnr',\n",
4375 " 'ftahnrspwtattleoisnh',\n",
4376 " 'rlarsetpitnntaroinet',\n",
4377 " 'flaarimpitsnoneoinnr',\n",
4378 " 'gaannhajeterrfnnisnp',\n",
4379 " 'raartsopnfpsmhrepdyn',\n",
4380 " 'farrntopepatuaendlnr',\n",
4381 " 'farnonrpepeehiendaua',\n",
4382 " 'farnroopephieoendaou',\n",
4383 " 'raahinopefaeoornpsre',\n",
4384 " 'raaaotfpefieitrnpeue',\n",
4385 " 'flrnriepipenoneodsnr',\n",
4386 " 'rlannaapifenmtropsan',\n",
4387 " 'faoiesopneeamaeeuren',\n",
4388 " 'flienoopionhdoeorras',\n",
4389 " 'flinhoopioradoeortss',\n",
4390 " 'fliseerpiolstveorlst',\n",
4391 " 'fliteoopiohsoneorasg',\n",
4392 " 'fliteonpiohsoheorasg',\n",
4393 " 'plilhrvdionaeutorrse',\n",
4394 " 'favhhtopevekuaenosgr',\n",
4395 " 'plavdrvdisveeutologe',\n",
4396 " 'flrvtoopitvcdoeohoas',\n",
4397 " 'flrseorpitledaeohlds',\n",
4398 " 'flrseorpitledaeohlds',\n",
4399 " 'plavervdisoeeutolode',\n",
4400 " 'rlaoanipisnfrerolhpt',\n",
4401 " 'flrliefpitnorteohrrp',\n",
4402 " 'pthafnhdwemdratolncn',\n",
4403 " 'planervdishgeutolahe',\n",
4404 " 'ftrhnaipwtartoeohsni',\n",
4405 " 'rlrsalrpitnfnprohepr',\n",
4406 " 'faatctopesieuaennehr',\n",
4407 " 'ftnronfpwnphsteoadec',\n",
4408 " 'flnierhpinoreaeoarpe',\n",
4409 " 'paaeuivdesaloutnnsir',\n",
4410 " 'raalofrpesnsdprnnrnc',\n",
4411 " 'flaadoopismedoeonngs',\n",
4412 " 'flamrrnpisnipreonsod',\n",
4413 " 'ftamrropwsnnpseonsnd',\n",
4414 " 'ftardkapwsnogmeonnoj',\n",
4415 " 'ftnndkopwnsogneoacoj',\n",
4416 " 'rletaropishtiorooait',\n",
4417 " 'flemrropisnipoeoosod',\n",
4418 " 'grianeajtesrgfnhrnnh',\n",
4419 " 'rajtvsvpsnivcurloeoe',\n",
4420 " 'frpjoonptrndohehiosg',\n",
4421 " 'prpraordteissvthfoln',\n",
4422 " 'prinhovdtoraeuthrnsu',\n",
4423 " 'rrlranoptiatarrhofii',\n",
4424 " 'palrnrvdsithtutlowah',\n",
4425 " 'raianhrpsofraprlhpts',\n",
4426 " 'rrorarrpthatvnrhefiv',\n",
4427 " 'fveeaoopvareeaeospnu',\n",
4428 " 'ranhaovpsrateurltsiu',\n",
4429 " 'fhafyoipeeseneelernh',\n",
4430 " 'rrhfaiuptetiehrhlrhr',\n",
4431 " 'rrvdapoptvoceorhooef',\n",
4432 " 'prvgovgdtvheuftholur',\n",
4433 " 'frvgsaeptvhrcaeholhe',\n",
4434 " 'rhahirepesaiptrllsed',\n",
4435 " 'rrlajaoptntnfnrhriop',\n",
4436 " 'faoaponpsntrerelhiiu',\n",
4437 " 'grlthaojtnortnnhrrpi',\n",
4438 " 'rrliaatptneflnrhrrpe',\n",
4439 " 'rhliatnpenefhhrlrrpa',\n",
4440 " 'rrlaaotptnftsrrhrpin',\n",
4441 " 'gaoherfjsnrrptnlhped',\n",
4442 " 'frlrlhlptnpireehrdop',\n",
4443 " 'raoaahepsnfeehrlhpns',\n",
4444 " 'fharwanpemposhelndal',\n",
4445 " 'raoanaipsnfrtorlhpti',\n",
4446 " 'rhaanhrpemfraprlnpns',\n",
4447 " 'faormropespnnneendsn',\n",
4448 " 'rrlahhfptnfaesrhrpsl',\n",
4449 " 'rrlasaoptnfntsrhrpei',\n",
4450 " 'fharshepempnraelndep',\n",
4451 " 'fhaphsrpemdrmnelntpn',\n",
4452 " 'fhaproipemrpneelnidh',\n",
4453 " 'prlrlfadtntidlthrwoc',\n",
4454 " 'frliatfptnotwtehrhio',\n",
4455 " 'frlirdfptnopetehrhdg',\n",
4456 " 'frlitrnptnowphehrhod',\n",
4457 " 'frlwvyaptnovdcehraoo',\n",
4458 " 'rrlnauaptnhtlfrhraii',\n",
4459 " 'rhansaapemrnftrlnnep',\n",
4460 " 'frlhorgptnaephehrsud',\n",
4461 " 'fhahscepemayaaelnsdl',\n",
4462 " 'rhasathpemntaorlneii',\n",
4463 " 'rhnhaarperafmprlnspn',\n",
4464 " 'rraoataptsrtnnrhnair',\n",
4465 " 'fratornptswhprehnoed',\n",
4466 " 'faaneoopssrreaelntpu',\n",
4467 " 'fraoraiptshntoehneni',\n",
4468 " 'fhaanaspesmrerelnnne',\n",
4469 " 'fhaarrhpesmnprelnnnd',\n",
4470 " 'frnplaopterissehsiol',\n",
4471 " 'frnrhfopteiesoehsolr',\n",
4472 " 'frnratrpteisnhehsolr',\n",
4473 " 'raaohaapmtracnrniase',\n",
4474 " 'gaaoradjmtrnsenniann',\n",
4475 " 'goaeorojntareanhisae',\n",
4476 " 'foaeeoopntaaeaehiseu',\n",
4477 " 'foaeuaipntaleoehisin',\n",
4478 " 'raasoalpmtoefnrnirup',\n",
4479 " 'glasntajntoewfnrirto',\n",
4480 " 'raasaeopmtoatornircv',\n",
4481 " 'gohieaajnreanfnhpree',\n",
4482 " 'rlaiuarpnfelearrprin',\n",
4483 " 'gohraocjnramdhnhpfns',\n",
4484 " 'glhraosjnramdtnrpfns',\n",
4485 " 'gohassujnrfyrhnhppeh',\n",
4486 " 'rlarshtpnfpyerrrpdel',\n",
4487 " 'gohytuvjnreohunhpndc',\n",
4488 " 'roakfrfpnfgttsrhpjuh',\n",
4489 " 'flrkrolpnpgeaeerdjee',\n",
4490 " 'gohyahfjnrenetnhpnes',\n",
4491 " 'rlakserpnfgrtvrrpjht',\n",
4492 " 'faronvlpmpotvcendgno',\n",
4493 " 'roaoooipsfosrnrnpgns',\n",
4494 " 'flrraropnpaaeaerdlce',\n",
4495 " 'rlaninrpnfreoarrptre',\n",
4496 " 'rlanrnopnfratdrrptln',\n",
4497 " 'rlansorpnfroeprrptru',\n",
4498 " 'farosiopmphoooenderr',\n",
4499 " 'farlahepmposraendsnp',\n",
4500 " 'flrnriypnphioeerdaoh',\n",
4501 " 'flrhnropnpateaerdsne',\n",
4502 " 'farrshdpmpnneeendnel',\n",
4503 " 'fliihrhpnoeaeeerrrse',\n",
4504 " 'floposfpnerdyteruise',\n",
4505 " 'pafnrofdmdrtettncnwu',\n",
4506 " 'plinurvdnohleutrraie',\n",
4507 " 'rlosnerpneoetprrurtv',\n",
4508 " 'faisafopmooasoenrrcr',\n",
4509 " 'flrohirpnthaoperhesr',\n",
4510 " 'plrohivdnthaoutrhesr',\n",
4511 " 'fahnhtipmeraioenlnse',\n",
4512 " 'fahnhirpmeraopenlnsr',\n",
4513 " 'flrhrorpntaieperhsou',\n",
4514 " 'plrsoivdntnhoutrheer',\n",
4515 " 'fahsnirpmenropenlenr',\n",
4516 " 'fahnsirpmeaoopenlirr',\n",
4517 " 'foniniapsnesolenarcr',\n",
4518 " 'fanpalfpmnrtitenaiio',\n",
4519 " 'paairovdmsoneutnnrnu',\n",
4520 " 'paafroadmsdneetnncnu',\n",
4521 " 'flaitirpnsohopernhar',\n",
4522 " 'raonnrapsroretrnaene',\n",
4523 " 'faesltopsryiuaenpeor',\n",
4524 " 'faraltopspeiuaendnor',\n",
4525 " 'fnponsopnresmseaiucn',\n",
4526 " 'fneisaapnuontmealrei',\n",
4527 " 'fatiatnpswemneenornr',\n",
4528 " 'gaaetctjsntiasnnevel',\n",
4529 " 'faoirirpshenotenernr',\n",
4530 " 'faneoogpsrreafentpue',\n",
4531 " 'ranalrapsrfnpcrntprd',\n",
4532 " 'faoooynpshadereneesn',\n",
4533 " 'pallrhpdsnitirtnrohi',\n",
4534 " 'faodoynpssederenngsn',\n",
4535 " 'rnaovirpnmsviprannoe',\n",
4536 " 'faorrrapssnipmennnod',\n",
4537 " 'faorrrmpssnipnennnod',\n",
4538 " 'ranaaajpsrfetnrnnpni',\n",
4539 " 'panfgrddsrdjtetnncnh',\n",
4540 " 'famriaopsnnothensnri',\n",
4541 " 'fnnilrfpnsoipteacrod',\n",
4542 " 'fnstokmpnocdgnearasj',\n",
4543 " 'gaohsaojtrrlerniapln',\n",
4544 " 'raonnafptrsnctriacae',\n",
4545 " 'raonhvopterauoriutsr',\n",
4546 " 'garortajtenpufniehrr',\n",
4547 " 'raolnanptenrfhriurtp',\n",
4548 " 'raauafrptelntvrinieo',\n",
4549 " 'gaaeelsjtntttmnievth',\n",
4550 " 'falaverptinveeeioeod',\n",
4551 " 'ralnahnptirfasrionps',\n",
4552 " 'gaanrrfjtnhepdnieaer',\n",
4553 " 'raanohfptereadrinnus',\n",
4554 " 'faeiltoptnoiureirror',\n",
4555 " 'raeonftptartdsrissnc',\n",
4556 " 'gaeororjtareaanisaee',\n",
4557 " 'ranhusfptrahndritsct',\n",
4558 " 'ranhusfptrahndritsct',\n",
4559 " 'ranhusiptrahnhritsct',\n",
4560 " 'raaaskaptmfngnrinpej',\n",
4561 " 'raaieflptmostnrinhoo',\n",
4562 " 'ranhaoyptrafherinspe',\n",
4563 " 'fahattmptacwuneiseor',\n",
4564 " 'faratsnptncwmseineon',\n",
4565 " 'ranaotfptsfgntricpfr',\n",
4566 " 'faroparptnerseeinuin',\n",
4567 " 'rahiknoptahgrorisijt',\n",
4568 " 'rahionoptahorerisigt',\n",
4569 " 'raalreyptsinterinonv',\n",
4570 " 'raaaotfpftmgntrpinfr',\n",
4571 " 'ghaheotjrtaroanpiseg',\n",
4572 " 'ghrosefjraoyttnpfgdt',\n",
4573 " 'ghrysorjraeyrnnpfnds',\n",
4574 " 'fryltolppeiuaeednore',\n",
4575 " 'friintnppooruhedhrtr',\n",
4576 " 'frnaplkpprsrngedtnir',\n",
4577 " 'ghorreajrnaeatnphfes',\n",
4578 " 'raliyrdpfnoevorprhnv',\n",
4579 " 'ghlnavtjrnrturnprtir',\n",
4580 " 'frloknippnngsoedrhjc',\n",
4581 " 'frarilrppmnoiaednnro',\n",
4582 " 'frahiltppmaoiuednsro',\n",
4583 " 'frarilsppmnoimednnro',\n",
4584 " 'frarilsppmnoimednnro',\n",
4585 " 'frsninsppnsoamedtcri',\n",
4586 " 'ranhrhrpfratehrpnshl',\n",
4587 " 'frhonrrppaerieedsuno',\n",
4588 " 'frhrkaippangmoedsnjn',\n",
4589 " 'grtvealjeovattnerosi',\n",
4590 " 'rrejahtpernfaurepops',\n",
4591 " 'poprhredeeiaeatufose',\n",
4592 " 'pipaaoedoesmeatrfnnu',\n",
4593 " 'rraoltrpeneeapreeusi',\n",
4594 " 'foaigsrpeeofyaeunrtd',\n",
4595 " 'pftterrddwulevtcoroe',\n",
4596 " 'foafrripeesanoeunrln',\n",
4597 " 'foahroopeeaidoeunsos',\n",
4598 " 'roeaasapeatemirusinn',\n",
4599 " 'finaltnportiuhertior',\n",
4600 " 'greavlsjeatutmnesirh',\n",
4601 " 'roeotcspeadsemrussyt',\n",
4602 " 'fonsetopermgooeutnhd',\n",
4603 " 'rrevkdopeaugtrresrjo',\n",
4604 " 'grohtsojenroyonehprd',\n",
4605 " 'frlrrolpenppeeeerdru',\n",
4606 " 'filrthsponphenerrdal',\n",
4607 " 'roaasarpemfntnrunpei',\n",
4608 " 'filinrnponorpherrhtd',\n",
4609 " 'fonrharperiateeunosi',\n",
4610 " 'fomrstopeninuseusoer',\n",
4611 " 'pirnfoldonsdhetrncce',\n",
4612 " 'ronaenopeefrrorusppt',\n",
4613 " 'raajafapetnftnrniopr',\n",
4614 " 'raajaafpetnfstrniopl',\n",
4615 " 'raanntapetroosrniner',\n",
4616 " 'rlahtrupitaothroisrh',\n",
4617 " 'faahgtepetajugenisnr',\n",
4618 " 'rlahnanpitarfrroistp',\n",
4619 " 'gaahgovjetahounnislg',\n",
4620 " 'gaahgotjetahoannislg',\n",
4621 " 'rlaraeypitnsteroinnv',\n",
4622 " 'flaarimpitsnoneoinnr',\n",
4623 " 'ftashaopwtnemgeoieln',\n",
4624 " 'raaejaspnfrnemreppon',\n",
4625 " 'raaretrpefphuarnpdkr',\n",
4626 " 'farnrorpeprieaendnou',\n",
4627 " 'farnrltpephiiuendaoo',\n",
4628 " 'flrnirrpipeoneeodsrn',\n",
4629 " 'flienorpionrdaeorrns',\n",
4630 " 'farrinipneveooeeevre',\n",
4631 " 'flinhoopioradoeortss',\n",
4632 " 'plapprrdiserevtolfie',\n",
4633 " 'flahagrpisatheeolsil',\n",
4634 " 'flrhifapitaosneohsrr',\n",
4635 " 'flrsrlipitnpnoeohedr',\n",
4636 " 'gaaorocjesrnoannnans',\n",
4637 " 'flarpropispdeoeonrte',\n",
4638 " 'rlariyspisnheyronnin',\n",
4639 " 'rleerucpistpheroovdc',\n",
4640 " 'flenrrypisaipeeooiod',\n",
4641 " 'fapjrrrpsrnehaelioee',\n",
4642 " 'frlrahoptitnenehowes',\n",
4643 " 'raaloofpseidrtrlnosa',\n",
4644 " 'fhtfhcopewteeoelorsi',\n",
4645 " 'frlfhnhptitearehorsi',\n",
4646 " 'palfacfdsiteedtlorei',\n",
4647 " 'frhfodsptesoemehlrgg',\n",
4648 " 'prhttaedtewuisthlorh',\n",
4649 " 'rrhfaiuptetiehrhlrhr',\n",
4650 " 'rrvitaaptvhicnrhoiee',\n",
4651 " 'prviroadtvhienthoiou',\n",
4652 " 'frvgnhaptvhoeneholes',\n",
4653 " 'fhvnecrpevssanelocsl',\n",
4654 " 'phvnstidevslaotlocli',\n",
4655 " 'paahnuadesarrmtelsii',\n",
4656 " 'gaohaatjsnrtmvnlhpin',\n",
4657 " 'grlhtrojtnroprnhrprd',\n",
4658 " 'grlhtutjtnrirrnhrpei',\n",
4659 " 'rrlailvptnfeivrhrpro',\n",
4660 " 'faorphrpsnpreeelhdil',\n",
4661 " 'faoropnpsnperrelhdui',\n",
4662 " 'faormropespnnneendsn',\n",
4663 " 'rhaansrpemfrnprlnpne',\n",
4664 " 'fharnsapemprneelndne',\n",
4665 " 'rhaahanpemfatrrlnpsi',\n",
4666 " 'fharhhapemparnelndsp',\n",
4667 " 'frlrsaiptnpneoehrdee',\n",
4668 " 'rhaashlpemfnenrlnpes',\n",
4669 " 'rrlfksdptnpgmorhrejn',\n",
4670 " 'frlprosptnrpsmehridn',\n",
4671 " 'prlpisodtneonethrfre',\n",
4672 " 'frlpvdnptnrvotehrioo',\n",
4673 " 'rrliahiptnotahrhrhis',\n",
4674 " 'frlwvyaptnovdcehraoo',\n",
4675 " 'rhansaapemrnftrlnnep',\n",
4676 " 'pharesidemnfnotlnnde',\n",
4677 " 'rrlhofoptnaepdrhrsue',\n",
4678 " 'fhahiptpemaoduelnsrt',\n",
4679 " 'grlsattjtnntahnhreii',\n",
4680 " 'grlsattjtnntahnhreii',\n",
4681 " 'frneofoptrgetdehnhur',\n",
4682 " 'fhnhraiperapmoelnsdn',\n",
4683 " 'pratiahdtswosithnohl',\n",
4684 " 'fratornptswhprehnoed',\n",
4685 " 'rraoealptshrfnrhnepp',\n",
4686 " 'rhaaniupesmrerrlnnnr',\n",
4687 " 'fhaanaspesmrerelnnne',\n",
4688 " 'roajanfpntnsrtrhiolt',\n",
4689 " 'goanlfojntentanhirro',\n",
4690 " 'glanohnjntrrrhnritap',\n",
4691 " 'rlanoonpntrrehrritau',\n",
4692 " 'flaorevpnthtnveriewe',\n",
4693 " 'faaoranpmthtlneniewe',\n",
4694 " 'rlanuvrpntrluarritir',\n",
4695 " 'rlahaaopntafmhrrispn',\n",
4696 " 'gohrystjnraeyunhpfnd',\n",
4697 " 'glhryssjnraeymnrpfnd',\n",
4698 " 'elkatoenngfirgerjpes',\n",
4699 " 'gohyfuvjnreshunhpnrc',\n",
4700 " 'faronnapmpohteendgan',\n",
4701 " 'forynhepsperatendnns',\n",
4702 " 'flrrpnhpnperoaerdeie',\n",
4703 " 'roaeinepnfaeonrhpsre',\n",
4704 " 'rlannyrpnfhoehrrpaen',\n",
4705 " 'fornohfpspsgltendcfc',\n",
4706 " 'glroanejnerthgnreaia',\n",
4707 " 'gothrsrjnurayenhrpfd',\n",
4708 " 'ploprhrdneeiaetrufos',\n",
4709 " 'faopohspmerdomenuiso',\n",
4710 " 'failftrpmoisuaenrorr',\n",
4711 " 'faieerlpmolsanenrosl',\n",
4712 " 'fainuorpmorldaenrnis',\n",
4713 " 'foisrropsooaeoenrrte',\n",
4714 " 'plisaafdnooaedtrrrcn',\n",
4715 " 'fahinyopmeordrenlrno',\n",
4716 " 'fahnhirpmeraopenlnsr',\n",
4717 " 'foairoypssondeennrns',\n",
4718 " 'roamrsfpssnnytrnnsnd',\n",
4719 " 'faerylipsaheioenseno',\n",
4720 " 'faaihnypsmoendennrla',\n",
4721 " 'faaoiropsmhonoennern',\n",
4722 " 'raarnaspsmnofyrnnnep',\n",
4723 " 'ranaaajpsrfetnrnnpni',\n",
4724 " 'pnnftsndnsdwmttaccon',\n",
4725 " 'pnnhtsndnslamttaccin',\n",
4726 " 'fnstorypnoceheearaue',\n",
4727 " 'gaorasgjtrenmhniaeen',\n",
4728 " 'raonhvopterauoriutsr',\n",
4729 " 'garnuecjtehhtanieacv',\n",
4730 " 'faeiltoptnoiureirror',\n",
4731 " 'gaeororjtareaanisaee',\n",
4732 " 'ranhusfptrahndritsct',\n",
4733 " 'faloceeptnsaaseirnle',\n",
4734 " 'raheltaptatiuiristor',\n",
4735 " 'rahelfrptatidnristoc',\n",
4736 " 'raaalonpftmiohrpinog',\n",
4737 " 'raahnylpftaoenrpisen',\n",
4738 " 'raahnoapftaoomrpiseg',\n",
4739 " 'raaoisrpfeeemnrpnurn',\n",
4740 " 'friintrppooruvedhrtr',\n",
4741 " 'frahiltppmaoiuednsro',\n",
4742 " 'frahiltppmaoiuednsro',\n",
4743 " 'frarilsppmnoimednnro',\n",
4744 " 'frsninsppnsoamedtcri',\n",
4745 " 'frhonrrppaerieedsuno',\n",
4746 " 'fiirohrpoeneaeerrnus',\n",
4747 " 'roaliyrpefneevruprrn',\n",
4748 " 'foadyhepeloeraeueonp',\n",
4749 " 'foeaasepeatemgeusinn',\n",
4750 " 'foeaastpeatemceusinn',\n",
4751 " 'rreavespeatuhmresirk',\n",
4752 " 'fonprlsperrpnmeutidr',\n",
4753 " 'filrtovponphsverrdan',\n",
4754 " 'gaantcrjetevasnniaul',\n",
4755 " 'rlanvrapitruanroitrl',\n",
4756 " 'raarvylpntvueireivrn',\n",
4757 " 'raanntapetroosrniner',\n",
4758 " 'gaahoaujetagernnisfe',\n",
4759 " 'rlahiylpitahenroisin',\n",
4760 " 'ftashnapwtnenmeoiela',\n",
4761 " 'rlaneynpitatehroiivn',\n",
4762 " 'raaejyfpnfrnetreppon',\n",
4763 " 'farnrlspepriimendnoo',\n",
4764 " 'flientrpionhuheorrar',\n",
4765 " 'flaahcnpistaaseolisl',\n",
4766 " 'gaavttajesvaiennloie',\n",
4767 " 'flareoepispndaeonres',\n",
4768 " 'fapjrrrpsrnehaelioee',\n",
4769 " 'rrlailvptnfeivrhrpro',\n",
4770 " 'rrlaponptnfdrtrhrpts',\n",
4771 " 'faorgropsnpjeaelhdne',\n",
4772 " 'fharroapemppnselndrh',\n",
4773 " 'rhaansrpemfrnprlnpne',\n",
4774 " 'rhaahanpemfatrrlnpsi',\n",
4775 " 'fhaphthpemdruaelntpr',\n",
4776 " 'prlhrofdtnaisdthrson',\n",
4777 " 'phahfnedemadrgtlnscn',\n",
4778 " 'paorafndesnsdstennnc',\n",
4779 " 'ransreopshnetdrlatev',\n",
4780 " 'frneofoptrgetdehnhur',\n",
4781 " 'fhnaorepenmapselaned',\n",
4782 " 'rhaaniupesmrerrlnnnr',\n",
4783 " 'rhnraudpeenmrorlsnni',\n",
4784 " 'rlanoonpntrrehrritau',\n",
4785 " 'rlanoonpntrrehrritau',\n",
4786 " 'foanpospntrrelehitiu',\n",
4787 " 'rlanuvrpntrluarritir',\n",
4788 " 'roakfrfpnfgttsrhpjuh',\n",
4789 " 'gohyfuvjnreshunhpnrc',\n",
4790 " 'gohyahfjnrenetnhpnes',\n",
4791 " 'gohyahfjnrenetnhpnes',\n",
4792 " 'forynhepsperatendnns',\n",
4793 " 'farrlnopmpacooendlee',\n",
4794 " 'farlahepmposraendsnp',\n",
4795 " 'glroanejnerthgnreaia',\n",
4796 " 'rooaeeapnefarerhupsp',\n",
4797 " 'gotnfecjnuedranhrrcp',\n",
4798 " 'flinurrpnohleherraie',\n",
4799 " 'fairoffpmonestenrnur',\n",
4800 " 'flohdydpneaoeeeruson',\n",
4801 " 'ponfnradsndspstnaccr',\n",
4802 " 'roamrsfpssnnytrnnsnd',\n",
4803 " 'roamrsfpssnnytrnnsnd',\n",
4804 " 'faeryltpsaheiwenseno',\n",
4805 " 'fartdrypsnneedennrge',\n",
4806 " 'fartdonpsnnedsennrgs',\n",
4807 " 'fnstorypnoceheearaue',\n",
4808 " 'raalfhspteidcmrinoch',\n",
4809 " 'gaanrfijtnheponieaee',\n",
4810 " 'fanhusiptrahnoeitsct',\n",
4811 " 'frahiltppmaoiuednsro',\n",
4812 " 'rahrnnopfaerodrpsene',\n",
4813 " 'roaliyrpefneevruprrn',\n",
4814 " 'foailsopeeoeyoeunrsd',\n",
4815 " 'roeavtspeatusmrusiry',\n",
4816 " 'grohosujenrryhnehpad',\n",
4817 " 'frlrrolpenppeeeerdru',\n",
4818 " 'rooasahpenflmeruhpln',\n",
4819 " 'gaanhfejnterttneirpr',\n",
4820 " 'raajafapetnftnrniopr',\n",
4821 " 'raarvylpntvueireivrn',\n",
4822 " 'gartptfjnerdwtneevto',\n",
4823 " 'flientrpionhuheorrar',\n",
4824 " 'flareoepispndaeonres',\n",
4825 " 'fharohepempnlaelndhc',\n",
4826 " 'paneoafdshgeedtlahun',\n",
4827 " 'rlanoonpntrrehrritau',\n",
4828 " 'raarcvapmfpevsrnpdho',\n",
4829 " 'rlarnerpnfarrprrplie',\n",
4830 " 'flinurrpnohleherraie',\n",
4831 " 'fahoroopmeannoenlenh',\n",
4832 " 'raallrmpftnianrpirol',\n",
4833 " 'rlanvrapitruanroitrl',\n",
4834 " 'faonpfcpeeedtaenuatr',\n",
4835 " 'raallrmpftnianrpirol']"
4836 ]
4837 },
4838 "execution_count": 39,
4839 "metadata": {},
4840 "output_type": "execute_result"
4841 }
4842 ],
4843 "source": [
4844 "[cadenus_decipher(first_chunk, w, keycolumn)[:20] for w in hinted_keywords]"
4845 ]
4846 },
4847 {
4848 "cell_type": "code",
4849 "execution_count": 40,
4850 "metadata": {
4851 "collapsed": false
4852 },
4853 "outputs": [
4854 {
4855 "data": {
4856 "text/plain": [
4857 "[]"
4858 ]
4859 },
4860 "execution_count": 40,
4861 "metadata": {},
4862 "output_type": "execute_result"
4863 }
4864 ],
4865 "source": [
4866 "[w for w in hinted_keywords if cadenus_decipher(first_chunk, w, keycolumn).startswith('phaseseven')]"
4867 ]
4868 },
4869 {
4870 "cell_type": "code",
4871 "execution_count": 41,
4872 "metadata": {
4873 "collapsed": false
4874 },
4875 "outputs": [],
4876 "source": [
4877 "def cadenus_break_worker(message, keyword, keycolumn, fitness):\n",
4878 " message_chunks = chunks(message, 175)\n",
4879 " plaintext = ''.join(cadenus_decipher(c, keyword, keycolumn) for c in message_chunks)\n",
4880 " fit = fitness(plaintext)\n",
4881 " return (keyword, keycolumn), fit"
4882 ]
4883 },
4884 {
4885 "cell_type": "code",
4886 "execution_count": 42,
4887 "metadata": {
4888 "collapsed": false
4889 },
4890 "outputs": [],
4891 "source": [
4892 "def cadenus_break(message, words=keywords, fitness=Pbigrams):\n",
4893 " c = make_cadenus_keycolumn(reverse=True)\n",
4894 " results = starmap(cadenus_break_worker, [(message, \n",
4895 " w, \n",
4896 " make_cadenus_keycolumn(doubled_letters='vw', start=s, reverse=r), \n",
4897 " fitness)\n",
4898 " for w in words for s in string.ascii_lowercase for r in [True, False]])\n",
4899 " # return list(results)\n",
4900 " return max(results, key=lambda k: k[1])"
4901 ]
4902 },
4903 {
4904 "cell_type": "code",
4905 "execution_count": 43,
4906 "metadata": {
4907 "collapsed": false
4908 },
4909 "outputs": [
4910 {
4911 "data": {
4912 "text/plain": [
4913 "(('finalist',\n",
4914 " {'a': 6,\n",
4915 " 'b': 5,\n",
4916 " 'c': 4,\n",
4917 " 'd': 3,\n",
4918 " 'e': 2,\n",
4919 " 'f': 1,\n",
4920 " 'g': 0,\n",
4921 " 'h': 24,\n",
4922 " 'i': 23,\n",
4923 " 'j': 22,\n",
4924 " 'k': 21,\n",
4925 " 'l': 20,\n",
4926 " 'm': 19,\n",
4927 " 'n': 18,\n",
4928 " 'o': 17,\n",
4929 " 'p': 16,\n",
4930 " 'q': 15,\n",
4931 " 'r': 14,\n",
4932 " 's': 13,\n",
4933 " 't': 12,\n",
4934 " 'u': 11,\n",
4935 " 'v': 10,\n",
4936 " 'w': 10,\n",
4937 " 'x': 9,\n",
4938 " 'y': 8,\n",
4939 " 'z': 7}),\n",
4940 " -5286.197562931952)"
4941 ]
4942 },
4943 "execution_count": 43,
4944 "metadata": {},
4945 "output_type": "execute_result"
4946 }
4947 ],
4948 "source": [
4949 "key8b, fitness = cadenus_break(c8bl, words=hinted_keywords, fitness=Ptrigrams)\n",
4950 "key8b, fitness"
4951 ]
4952 },
4953 {
4954 "cell_type": "code",
4955 "execution_count": 44,
4956 "metadata": {
4957 "collapsed": false
4958 },
4959 "outputs": [
4960 {
4961 "data": {
4962 "text/plain": [
4963 "'wledgctftrojhrtheonovoresoovrpanegoarerufofinaltnportiuhertiorafthehasdwarenncompleeeandoastestssoveconlrudedtlsreisnntignfrrrthesinaaltranlicthaaehesecisityseemiceshuneanykhf'"
4964 ]
4965 },
4966 "execution_count": 44,
4967 "metadata": {},
4968 "output_type": "execute_result"
4969 }
4970 ],
4971 "source": [
4972 "cadenus_decipher(first_chunk, key8b[0], key8b[1])"
4973 ]
4974 },
4975 {
4976 "cell_type": "code",
4977 "execution_count": 50,
4978 "metadata": {
4979 "collapsed": false
4980 },
4981 "outputs": [
4982 {
4983 "data": {
4984 "text/plain": [
4985 "[('finalist', 'z', 'az', True),\n",
4986 " ('finalist', 'a', 'no', True),\n",
4987 " ('finalist', 'n', 'no', True),\n",
4988 " ('finalist', 'a', 'nu', True),\n",
4989 " ('finalist', 'n', 'nu', True),\n",
4990 " ('finalist', 'a', 'nz', True),\n",
4991 " ('finalist', 'n', 'nz', True),\n",
4992 " ('finalist', 'a', 'op', True),\n",
4993 " ('finalist', 'o', 'op', True),\n",
4994 " ('finalist', 'a', 'oq', True),\n",
4995 " ('finalist', 'o', 'oq', True),\n",
4996 " ('finalist', 'a', 'or', True),\n",
4997 " ('finalist', 'o', 'or', True),\n",
4998 " ('finalist', 'a', 'os', True),\n",
4999 " ('finalist', 'o', 'os', True),\n",
5000 " ('finalist', 'a', 'ot', True),\n",
5001 " ('finalist', 'o', 'ot', True),\n",
5002 " ('finalist', 'a', 'ou', True),\n",
5003 " ('finalist', 'o', 'ou', True),\n",
5004 " ('finalist', 'a', 'ov', True),\n",
5005 " ('finalist', 'o', 'ov', True),\n",
5006 " ('finalist', 'a', 'ow', True),\n",
5007 " ('finalist', 'o', 'ow', True),\n",
5008 " ('finalist', 'a', 'ox', True),\n",
5009 " ('finalist', 'o', 'ox', True),\n",
5010 " ('finalist', 'a', 'oy', True),\n",
5011 " ('finalist', 'o', 'oy', True),\n",
5012 " ('finalist', 'a', 'oz', True),\n",
5013 " ('finalist', 'o', 'oz', True),\n",
5014 " ('finalist', 'a', 'pq', True),\n",
5015 " ('finalist', 'p', 'pq', True),\n",
5016 " ('finalist', 'a', 'pr', True),\n",
5017 " ('finalist', 'p', 'pr', True),\n",
5018 " ('finalist', 'a', 'ps', True),\n",
5019 " ('finalist', 'p', 'ps', True),\n",
5020 " ('finalist', 'a', 'pt', True),\n",
5021 " ('finalist', 'p', 'pt', True),\n",
5022 " ('finalist', 'a', 'pu', True),\n",
5023 " ('finalist', 'p', 'pu', True),\n",
5024 " ('finalist', 'a', 'pv', True),\n",
5025 " ('finalist', 'p', 'pv', True),\n",
5026 " ('finalist', 'a', 'pw', True),\n",
5027 " ('finalist', 'p', 'pw', True),\n",
5028 " ('finalist', 'a', 'px', True),\n",
5029 " ('finalist', 'p', 'px', True),\n",
5030 " ('finalist', 'a', 'py', True),\n",
5031 " ('finalist', 'p', 'py', True),\n",
5032 " ('finalist', 'a', 'pz', True),\n",
5033 " ('finalist', 'p', 'pz', True),\n",
5034 " ('finalist', 'a', 'qr', True),\n",
5035 " ('finalist', 'q', 'qr', True),\n",
5036 " ('finalist', 'a', 'qs', True),\n",
5037 " ('finalist', 'q', 'qs', True),\n",
5038 " ('finalist', 'a', 'qt', True),\n",
5039 " ('finalist', 'q', 'qt', True),\n",
5040 " ('finalist', 'a', 'qu', True),\n",
5041 " ('finalist', 'q', 'qu', True),\n",
5042 " ('finalist', 'a', 'qv', True),\n",
5043 " ('finalist', 'q', 'qv', True),\n",
5044 " ('finalist', 'a', 'qw', True),\n",
5045 " ('finalist', 'q', 'qw', True),\n",
5046 " ('finalist', 'a', 'qx', True),\n",
5047 " ('finalist', 'q', 'qx', True),\n",
5048 " ('finalist', 'a', 'qy', True),\n",
5049 " ('finalist', 'q', 'qy', True),\n",
5050 " ('finalist', 'a', 'qz', True),\n",
5051 " ('finalist', 'q', 'qz', True),\n",
5052 " ('finalist', 'a', 'rs', True),\n",
5053 " ('finalist', 'r', 'rs', True),\n",
5054 " ('finalist', 'a', 'rt', True),\n",
5055 " ('finalist', 'r', 'rt', True),\n",
5056 " ('finalist', 'a', 'ru', True),\n",
5057 " ('finalist', 'r', 'ru', True),\n",
5058 " ('finalist', 'a', 'rv', True),\n",
5059 " ('finalist', 'r', 'rv', True),\n",
5060 " ('finalist', 'a', 'rw', True),\n",
5061 " ('finalist', 'r', 'rw', True),\n",
5062 " ('finalist', 'a', 'rx', True),\n",
5063 " ('finalist', 'r', 'rx', True),\n",
5064 " ('finalist', 'a', 'ry', True),\n",
5065 " ('finalist', 'r', 'ry', True),\n",
5066 " ('finalist', 'a', 'rz', True),\n",
5067 " ('finalist', 'r', 'rz', True),\n",
5068 " ('finalist', 'a', 'st', True),\n",
5069 " ('finalist', 's', 'st', True),\n",
5070 " ('finalist', 'a', 'su', True),\n",
5071 " ('finalist', 's', 'su', True),\n",
5072 " ('finalist', 'a', 'sv', True),\n",
5073 " ('finalist', 's', 'sv', True),\n",
5074 " ('finalist', 'a', 'sw', True),\n",
5075 " ('finalist', 's', 'sw', True),\n",
5076 " ('finalist', 'a', 'sx', True),\n",
5077 " ('finalist', 's', 'sx', True),\n",
5078 " ('finalist', 'a', 'sy', True),\n",
5079 " ('finalist', 's', 'sy', True),\n",
5080 " ('finalist', 'a', 'sz', True),\n",
5081 " ('finalist', 's', 'sz', True),\n",
5082 " ('finalist', 'a', 'tu', True),\n",
5083 " ('finalist', 't', 'tu', True),\n",
5084 " ('finalist', 'a', 'tv', True),\n",
5085 " ('finalist', 't', 'tv', True),\n",
5086 " ('finalist', 'a', 'tw', True),\n",
5087 " ('finalist', 't', 'tw', True),\n",
5088 " ('finalist', 'a', 'tx', True),\n",
5089 " ('finalist', 't', 'tx', True),\n",
5090 " ('finalist', 'a', 'ty', True),\n",
5091 " ('finalist', 't', 'ty', True),\n",
5092 " ('finalist', 'a', 'tz', True),\n",
5093 " ('finalist', 't', 'tz', True),\n",
5094 " ('finalist', 'a', 'uv', True),\n",
5095 " ('finalist', 'u', 'uv', True),\n",
5096 " ('finalist', 'a', 'uw', True),\n",
5097 " ('finalist', 'u', 'uw', True),\n",
5098 " ('finalist', 'a', 'ux', True),\n",
5099 " ('finalist', 'u', 'ux', True),\n",
5100 " ('finalist', 'a', 'uy', True),\n",
5101 " ('finalist', 'u', 'uy', True),\n",
5102 " ('finalist', 'a', 'uz', True),\n",
5103 " ('finalist', 'u', 'uz', True),\n",
5104 " ('finalist', 'a', 'vw', True),\n",
5105 " ('finalist', 'v', 'vw', True),\n",
5106 " ('finalist', 'a', 'vx', True),\n",
5107 " ('finalist', 'v', 'vx', True),\n",
5108 " ('finalist', 'a', 'vy', True),\n",
5109 " ('finalist', 'v', 'vy', True),\n",
5110 " ('finalist', 'a', 'vz', True),\n",
5111 " ('finalist', 'v', 'vz', True),\n",
5112 " ('finalist', 'a', 'wx', True),\n",
5113 " ('finalist', 'w', 'wx', True),\n",
5114 " ('finalist', 'a', 'wy', True),\n",
5115 " ('finalist', 'w', 'wy', True),\n",
5116 " ('finalist', 'a', 'wz', True),\n",
5117 " ('finalist', 'w', 'wz', True),\n",
5118 " ('finalist', 'a', 'xy', True),\n",
5119 " ('finalist', 'x', 'xy', True),\n",
5120 " ('finalist', 'a', 'xz', True),\n",
5121 " ('finalist', 'x', 'xz', True),\n",
5122 " ('finalist', 'a', 'yz', True),\n",
5123 " ('finalist', 'y', 'yz', True),\n",
5124 " ('finality', 'z', 'az', True),\n",
5125 " ('finality', 'a', 'no', True),\n",
5126 " ('finality', 'n', 'no', True),\n",
5127 " ('finality', 'a', 'nu', True),\n",
5128 " ('finality', 'n', 'nu', True),\n",
5129 " ('finality', 'a', 'nz', True),\n",
5130 " ('finality', 'n', 'nz', True),\n",
5131 " ('finality', 'a', 'op', True),\n",
5132 " ('finality', 'o', 'op', True),\n",
5133 " ('finality', 'a', 'oq', True),\n",
5134 " ('finality', 'o', 'oq', True),\n",
5135 " ('finality', 'a', 'or', True),\n",
5136 " ('finality', 'o', 'or', True),\n",
5137 " ('finality', 'a', 'os', True),\n",
5138 " ('finality', 'o', 'os', True),\n",
5139 " ('finality', 'a', 'ot', True),\n",
5140 " ('finality', 'o', 'ot', True),\n",
5141 " ('finality', 'a', 'ou', True),\n",
5142 " ('finality', 'o', 'ou', True),\n",
5143 " ('finality', 'a', 'ov', True),\n",
5144 " ('finality', 'o', 'ov', True),\n",
5145 " ('finality', 'a', 'ow', True),\n",
5146 " ('finality', 'o', 'ow', True),\n",
5147 " ('finality', 'a', 'ox', True),\n",
5148 " ('finality', 'o', 'ox', True),\n",
5149 " ('finality', 'a', 'oy', True),\n",
5150 " ('finality', 'o', 'oy', True),\n",
5151 " ('finality', 'a', 'oz', True),\n",
5152 " ('finality', 'o', 'oz', True),\n",
5153 " ('finality', 'a', 'pq', True),\n",
5154 " ('finality', 'p', 'pq', True),\n",
5155 " ('finality', 'a', 'pr', True),\n",
5156 " ('finality', 'p', 'pr', True),\n",
5157 " ('finality', 'a', 'ps', True),\n",
5158 " ('finality', 'p', 'ps', True),\n",
5159 " ('finality', 'a', 'pt', True),\n",
5160 " ('finality', 'p', 'pt', True),\n",
5161 " ('finality', 'a', 'pu', True),\n",
5162 " ('finality', 'p', 'pu', True),\n",
5163 " ('finality', 'a', 'pv', True),\n",
5164 " ('finality', 'p', 'pv', True),\n",
5165 " ('finality', 'a', 'pw', True),\n",
5166 " ('finality', 'p', 'pw', True),\n",
5167 " ('finality', 'a', 'px', True),\n",
5168 " ('finality', 'p', 'px', True),\n",
5169 " ('finality', 'a', 'py', True),\n",
5170 " ('finality', 'p', 'py', True),\n",
5171 " ('finality', 'a', 'pz', True),\n",
5172 " ('finality', 'p', 'pz', True),\n",
5173 " ('finality', 'a', 'qr', True),\n",
5174 " ('finality', 'q', 'qr', True),\n",
5175 " ('finality', 'a', 'qs', True),\n",
5176 " ('finality', 'q', 'qs', True),\n",
5177 " ('finality', 'a', 'qt', True),\n",
5178 " ('finality', 'q', 'qt', True),\n",
5179 " ('finality', 'a', 'qu', True),\n",
5180 " ('finality', 'q', 'qu', True),\n",
5181 " ('finality', 'a', 'qv', True),\n",
5182 " ('finality', 'q', 'qv', True),\n",
5183 " ('finality', 'a', 'qw', True),\n",
5184 " ('finality', 'q', 'qw', True),\n",
5185 " ('finality', 'a', 'qx', True),\n",
5186 " ('finality', 'q', 'qx', True),\n",
5187 " ('finality', 'a', 'qy', True),\n",
5188 " ('finality', 'q', 'qy', True),\n",
5189 " ('finality', 'a', 'qz', True),\n",
5190 " ('finality', 'q', 'qz', True),\n",
5191 " ('finality', 'a', 'rs', True),\n",
5192 " ('finality', 'r', 'rs', True),\n",
5193 " ('finality', 'a', 'rt', True),\n",
5194 " ('finality', 'r', 'rt', True),\n",
5195 " ('finality', 'a', 'ru', True),\n",
5196 " ('finality', 'r', 'ru', True),\n",
5197 " ('finality', 'a', 'rv', True),\n",
5198 " ('finality', 'r', 'rv', True),\n",
5199 " ('finality', 'a', 'rw', True),\n",
5200 " ('finality', 'r', 'rw', True),\n",
5201 " ('finality', 'a', 'rx', True),\n",
5202 " ('finality', 'r', 'rx', True),\n",
5203 " ('finality', 'a', 'ry', True),\n",
5204 " ('finality', 'r', 'ry', True),\n",
5205 " ('finality', 'a', 'rz', True),\n",
5206 " ('finality', 'r', 'rz', True),\n",
5207 " ('finality', 'a', 'st', True),\n",
5208 " ('finality', 's', 'st', True),\n",
5209 " ('finality', 'a', 'su', True),\n",
5210 " ('finality', 's', 'su', True),\n",
5211 " ('finality', 'a', 'sv', True),\n",
5212 " ('finality', 's', 'sv', True),\n",
5213 " ('finality', 'a', 'sw', True),\n",
5214 " ('finality', 's', 'sw', True),\n",
5215 " ('finality', 'a', 'sx', True),\n",
5216 " ('finality', 's', 'sx', True),\n",
5217 " ('finality', 'a', 'sy', True),\n",
5218 " ('finality', 's', 'sy', True),\n",
5219 " ('finality', 'a', 'sz', True),\n",
5220 " ('finality', 's', 'sz', True),\n",
5221 " ('finality', 'a', 'tu', True),\n",
5222 " ('finality', 't', 'tu', True),\n",
5223 " ('finality', 'a', 'tv', True),\n",
5224 " ('finality', 't', 'tv', True),\n",
5225 " ('finality', 'a', 'tw', True),\n",
5226 " ('finality', 't', 'tw', True),\n",
5227 " ('finality', 'a', 'tx', True),\n",
5228 " ('finality', 't', 'tx', True),\n",
5229 " ('finality', 'a', 'ty', True),\n",
5230 " ('finality', 't', 'ty', True),\n",
5231 " ('finality', 'a', 'tz', True),\n",
5232 " ('finality', 't', 'tz', True),\n",
5233 " ('finality', 'a', 'uv', True),\n",
5234 " ('finality', 'u', 'uv', True),\n",
5235 " ('finality', 'a', 'uw', True),\n",
5236 " ('finality', 'u', 'uw', True),\n",
5237 " ('finality', 'a', 'ux', True),\n",
5238 " ('finality', 'u', 'ux', True),\n",
5239 " ('finality', 'a', 'uy', True),\n",
5240 " ('finality', 'u', 'uy', True),\n",
5241 " ('finality', 'a', 'uz', True),\n",
5242 " ('finality', 'u', 'uz', True),\n",
5243 " ('finality', 'a', 'vw', True),\n",
5244 " ('finality', 'v', 'vw', True),\n",
5245 " ('finality', 'a', 'vx', True),\n",
5246 " ('finality', 'v', 'vx', True),\n",
5247 " ('finality', 'a', 'vy', True),\n",
5248 " ('finality', 'v', 'vy', True),\n",
5249 " ('finality', 'a', 'vz', True),\n",
5250 " ('finality', 'v', 'vz', True),\n",
5251 " ('finality', 'a', 'wx', True),\n",
5252 " ('finality', 'w', 'wx', True),\n",
5253 " ('finality', 'a', 'wy', True),\n",
5254 " ('finality', 'w', 'wy', True),\n",
5255 " ('finality', 'a', 'wz', True),\n",
5256 " ('finality', 'w', 'wz', True),\n",
5257 " ('finality', 'a', 'xy', True),\n",
5258 " ('finality', 'x', 'xy', True),\n",
5259 " ('finality', 'a', 'xz', True),\n",
5260 " ('finality', 'x', 'xz', True),\n",
5261 " ('finality', 'a', 'yz', True),\n",
5262 " ('finality', 'y', 'yz', True),\n",
5263 " ('foulness', 'x', 'ov', True),\n",
5264 " ('finalists', 'z', 'az', True),\n",
5265 " ('finalists', 'a', 'no', True),\n",
5266 " ('finalists', 'n', 'no', True),\n",
5267 " ('finalists', 'a', 'nu', True),\n",
5268 " ('finalists', 'n', 'nu', True),\n",
5269 " ('finalists', 'a', 'nz', True),\n",
5270 " ('finalists', 'n', 'nz', True),\n",
5271 " ('finalists', 'a', 'op', True),\n",
5272 " ('finalists', 'o', 'op', True),\n",
5273 " ('finalists', 'a', 'oq', True),\n",
5274 " ('finalists', 'o', 'oq', True),\n",
5275 " ('finalists', 'a', 'or', True),\n",
5276 " ('finalists', 'o', 'or', True),\n",
5277 " ('finalists', 'a', 'os', True),\n",
5278 " ('finalists', 'o', 'os', True),\n",
5279 " ('finalists', 'a', 'ot', True),\n",
5280 " ('finalists', 'o', 'ot', True),\n",
5281 " ('finalists', 'a', 'ou', True),\n",
5282 " ('finalists', 'o', 'ou', True),\n",
5283 " ('finalists', 'a', 'ov', True),\n",
5284 " ('finalists', 'o', 'ov', True),\n",
5285 " ('finalists', 'a', 'ow', True),\n",
5286 " ('finalists', 'o', 'ow', True),\n",
5287 " ('finalists', 'a', 'ox', True),\n",
5288 " ('finalists', 'o', 'ox', True),\n",
5289 " ('finalists', 'a', 'oy', True),\n",
5290 " ('finalists', 'o', 'oy', True),\n",
5291 " ('finalists', 'a', 'oz', True),\n",
5292 " ('finalists', 'o', 'oz', True),\n",
5293 " ('finalists', 'a', 'pq', True),\n",
5294 " ('finalists', 'p', 'pq', True),\n",
5295 " ('finalists', 'a', 'pr', True),\n",
5296 " ('finalists', 'p', 'pr', True),\n",
5297 " ('finalists', 'a', 'ps', True),\n",
5298 " ('finalists', 'p', 'ps', True),\n",
5299 " ('finalists', 'a', 'pt', True),\n",
5300 " ('finalists', 'p', 'pt', True),\n",
5301 " ('finalists', 'a', 'pu', True),\n",
5302 " ('finalists', 'p', 'pu', True),\n",
5303 " ('finalists', 'a', 'pv', True),\n",
5304 " ('finalists', 'p', 'pv', True),\n",
5305 " ('finalists', 'a', 'pw', True),\n",
5306 " ('finalists', 'p', 'pw', True),\n",
5307 " ('finalists', 'a', 'px', True),\n",
5308 " ('finalists', 'p', 'px', True),\n",
5309 " ('finalists', 'a', 'py', True),\n",
5310 " ('finalists', 'p', 'py', True),\n",
5311 " ('finalists', 'a', 'pz', True),\n",
5312 " ('finalists', 'p', 'pz', True),\n",
5313 " ('finalists', 'a', 'qr', True),\n",
5314 " ('finalists', 'q', 'qr', True),\n",
5315 " ('finalists', 'a', 'qs', True),\n",
5316 " ('finalists', 'q', 'qs', True),\n",
5317 " ('finalists', 'a', 'qt', True),\n",
5318 " ('finalists', 'q', 'qt', True),\n",
5319 " ('finalists', 'a', 'qu', True),\n",
5320 " ('finalists', 'q', 'qu', True),\n",
5321 " ('finalists', 'a', 'qv', True),\n",
5322 " ('finalists', 'q', 'qv', True),\n",
5323 " ('finalists', 'a', 'qw', True),\n",
5324 " ('finalists', 'q', 'qw', True),\n",
5325 " ('finalists', 'a', 'qx', True),\n",
5326 " ('finalists', 'q', 'qx', True),\n",
5327 " ('finalists', 'a', 'qy', True),\n",
5328 " ('finalists', 'q', 'qy', True),\n",
5329 " ('finalists', 'a', 'qz', True),\n",
5330 " ('finalists', 'q', 'qz', True),\n",
5331 " ('finalists', 'a', 'rs', True),\n",
5332 " ('finalists', 'r', 'rs', True),\n",
5333 " ('finalists', 'a', 'rt', True),\n",
5334 " ('finalists', 'r', 'rt', True),\n",
5335 " ('finalists', 'a', 'ru', True),\n",
5336 " ('finalists', 'r', 'ru', True),\n",
5337 " ('finalists', 'a', 'rv', True),\n",
5338 " ('finalists', 'r', 'rv', True),\n",
5339 " ('finalists', 'a', 'rw', True),\n",
5340 " ('finalists', 'r', 'rw', True),\n",
5341 " ('finalists', 'a', 'rx', True),\n",
5342 " ('finalists', 'r', 'rx', True),\n",
5343 " ('finalists', 'a', 'ry', True),\n",
5344 " ('finalists', 'r', 'ry', True),\n",
5345 " ('finalists', 'a', 'rz', True),\n",
5346 " ('finalists', 'r', 'rz', True),\n",
5347 " ('finalists', 'a', 'st', True),\n",
5348 " ('finalists', 's', 'st', True),\n",
5349 " ('finalists', 'a', 'su', True),\n",
5350 " ('finalists', 's', 'su', True),\n",
5351 " ('finalists', 'a', 'sv', True),\n",
5352 " ('finalists', 's', 'sv', True),\n",
5353 " ('finalists', 'a', 'sw', True),\n",
5354 " ('finalists', 's', 'sw', True),\n",
5355 " ('finalists', 'a', 'sx', True),\n",
5356 " ('finalists', 's', 'sx', True),\n",
5357 " ('finalists', 'a', 'sy', True),\n",
5358 " ('finalists', 's', 'sy', True),\n",
5359 " ('finalists', 'a', 'sz', True),\n",
5360 " ('finalists', 's', 'sz', True),\n",
5361 " ('finalists', 'a', 'tu', True),\n",
5362 " ('finalists', 't', 'tu', True),\n",
5363 " ('finalists', 'a', 'tv', True),\n",
5364 " ('finalists', 't', 'tv', True),\n",
5365 " ('finalists', 'a', 'tw', True),\n",
5366 " ('finalists', 't', 'tw', True),\n",
5367 " ('finalists', 'a', 'tx', True),\n",
5368 " ('finalists', 't', 'tx', True),\n",
5369 " ('finalists', 'a', 'ty', True),\n",
5370 " ('finalists', 't', 'ty', True),\n",
5371 " ('finalists', 'a', 'tz', True),\n",
5372 " ('finalists', 't', 'tz', True),\n",
5373 " ('finalists', 'a', 'uv', True),\n",
5374 " ('finalists', 'u', 'uv', True),\n",
5375 " ('finalists', 'a', 'uw', True),\n",
5376 " ('finalists', 'u', 'uw', True),\n",
5377 " ('finalists', 'a', 'ux', True),\n",
5378 " ('finalists', 'u', 'ux', True),\n",
5379 " ('finalists', 'a', 'uy', True),\n",
5380 " ('finalists', 'u', 'uy', True),\n",
5381 " ('finalists', 'a', 'uz', True),\n",
5382 " ('finalists', 'u', 'uz', True),\n",
5383 " ('finalists', 'a', 'vw', True),\n",
5384 " ('finalists', 'v', 'vw', True),\n",
5385 " ('finalists', 'a', 'vx', True),\n",
5386 " ('finalists', 'v', 'vx', True),\n",
5387 " ('finalists', 'a', 'vy', True),\n",
5388 " ('finalists', 'v', 'vy', True),\n",
5389 " ('finalists', 'a', 'vz', True),\n",
5390 " ('finalists', 'v', 'vz', True),\n",
5391 " ('finalists', 'a', 'wx', True),\n",
5392 " ('finalists', 'w', 'wx', True),\n",
5393 " ('finalists', 'a', 'wy', True),\n",
5394 " ('finalists', 'w', 'wy', True),\n",
5395 " ('finalists', 'a', 'wz', True),\n",
5396 " ('finalists', 'w', 'wz', True),\n",
5397 " ('finalists', 'a', 'xy', True),\n",
5398 " ('finalists', 'x', 'xy', True),\n",
5399 " ('finalists', 'a', 'xz', True),\n",
5400 " ('finalists', 'x', 'xz', True),\n",
5401 " ('finalists', 'a', 'yz', True),\n",
5402 " ('finalists', 'y', 'yz', True),\n",
5403 " ('foulnesss', 'x', 'ov', True)]"
5404 ]
5405 },
5406 "execution_count": 50,
5407 "metadata": {},
5408 "output_type": "execute_result"
5409 }
5410 ],
5411 "source": [
5412 "[(w, s, d1+d2, r)\n",
5413 " for w in hinted_keywords \n",
5414 " for d1 in string.ascii_lowercase[:25]\n",
5415 " for d2 in string.ascii_lowercase\n",
5416 " for s in string.ascii_lowercase \n",
5417 " for r in [True, False]\n",
5418 " if d2 > d1\n",
5419 " if cadenus_decipher(first_chunk, w, \n",
5420 " make_cadenus_keycolumn(doubled_letters=d1+d2, start=s, reverse=r)).startswith('finalreport')]"
5421 ]
5422 },
5423 {
5424 "cell_type": "code",
5425 "execution_count": 55,
5426 "metadata": {
5427 "collapsed": false
5428 },
5429 "outputs": [
5430 {
5431 "data": {
5432 "text/plain": [
5433 "[]"
5434 ]
5435 },
5436 "execution_count": 55,
5437 "metadata": {},
5438 "output_type": "execute_result"
5439 }
5440 ],
5441 "source": [
5442 "[(w, s, d1+d2, r, cadenus_decipher(first_chunk, w, \n",
5443 " make_cadenus_keycolumn(doubled_letters=d1+d2, start=s, reverse=r))[:50])\n",
5444 " for w in hinted_keywords \n",
5445 " for d1 in string.ascii_lowercase[:25]\n",
5446 " for d2 in string.ascii_lowercase\n",
5447 " for s in string.ascii_lowercase \n",
5448 " for r in [True, False]\n",
5449 " if d2 > d1\n",
5450 " if cadenus_decipher(first_chunk, w, \n",
5451 " make_cadenus_keycolumn(doubled_letters=d1+d2, start=s, reverse=r)).startswith('finalreport')]"
5452 ]
5453 },
5454 {
5455 "cell_type": "code",
5456 "execution_count": 52,
5457 "metadata": {
5458 "collapsed": false,
5459 "scrolled": true
5460 },
5461 "outputs": [
5462 {
5463 "data": {
5464 "text/plain": [
5465 "[('finalist', 'a', 'no', True),\n",
5466 " ('finalist', 'n', 'no', True),\n",
5467 " ('finalist', 'a', 'op', True),\n",
5468 " ('finalist', 'o', 'op', True),\n",
5469 " ('finalist', 'a', 'pq', True),\n",
5470 " ('finalist', 'p', 'pq', True),\n",
5471 " ('finalist', 'a', 'qr', True),\n",
5472 " ('finalist', 'q', 'qr', True),\n",
5473 " ('finalist', 'a', 'rs', True),\n",
5474 " ('finalist', 'r', 'rs', True),\n",
5475 " ('finalist', 'a', 'st', True),\n",
5476 " ('finalist', 's', 'st', True),\n",
5477 " ('finalist', 'a', 'tu', True),\n",
5478 " ('finalist', 't', 'tu', True),\n",
5479 " ('finalist', 'a', 'uv', True),\n",
5480 " ('finalist', 'u', 'uv', True),\n",
5481 " ('finalist', 'a', 'vw', True),\n",
5482 " ('finalist', 'v', 'vw', True),\n",
5483 " ('finalist', 'a', 'wx', True),\n",
5484 " ('finalist', 'w', 'wx', True),\n",
5485 " ('finalist', 'a', 'xy', True),\n",
5486 " ('finalist', 'x', 'xy', True),\n",
5487 " ('finalist', 'a', 'yz', True),\n",
5488 " ('finalist', 'y', 'yz', True),\n",
5489 " ('finality', 'a', 'no', True),\n",
5490 " ('finality', 'n', 'no', True),\n",
5491 " ('finality', 'a', 'op', True),\n",
5492 " ('finality', 'o', 'op', True),\n",
5493 " ('finality', 'a', 'pq', True),\n",
5494 " ('finality', 'p', 'pq', True),\n",
5495 " ('finality', 'a', 'qr', True),\n",
5496 " ('finality', 'q', 'qr', True),\n",
5497 " ('finality', 'a', 'rs', True),\n",
5498 " ('finality', 'r', 'rs', True),\n",
5499 " ('finality', 'a', 'st', True),\n",
5500 " ('finality', 's', 'st', True),\n",
5501 " ('finality', 'a', 'tu', True),\n",
5502 " ('finality', 't', 'tu', True),\n",
5503 " ('finality', 'a', 'uv', True),\n",
5504 " ('finality', 'u', 'uv', True),\n",
5505 " ('finality', 'a', 'vw', True),\n",
5506 " ('finality', 'v', 'vw', True),\n",
5507 " ('finality', 'a', 'wx', True),\n",
5508 " ('finality', 'w', 'wx', True),\n",
5509 " ('finality', 'a', 'xy', True),\n",
5510 " ('finality', 'x', 'xy', True),\n",
5511 " ('finality', 'a', 'yz', True),\n",
5512 " ('finality', 'y', 'yz', True),\n",
5513 " ('finalists', 'a', 'no', True),\n",
5514 " ('finalists', 'n', 'no', True),\n",
5515 " ('finalists', 'a', 'op', True),\n",
5516 " ('finalists', 'o', 'op', True),\n",
5517 " ('finalists', 'a', 'pq', True),\n",
5518 " ('finalists', 'p', 'pq', True),\n",
5519 " ('finalists', 'a', 'qr', True),\n",
5520 " ('finalists', 'q', 'qr', True),\n",
5521 " ('finalists', 'a', 'rs', True),\n",
5522 " ('finalists', 'r', 'rs', True),\n",
5523 " ('finalists', 'a', 'st', True),\n",
5524 " ('finalists', 's', 'st', True),\n",
5525 " ('finalists', 'a', 'tu', True),\n",
5526 " ('finalists', 't', 'tu', True),\n",
5527 " ('finalists', 'a', 'uv', True),\n",
5528 " ('finalists', 'u', 'uv', True),\n",
5529 " ('finalists', 'a', 'vw', True),\n",
5530 " ('finalists', 'v', 'vw', True),\n",
5531 " ('finalists', 'a', 'wx', True),\n",
5532 " ('finalists', 'w', 'wx', True),\n",
5533 " ('finalists', 'a', 'xy', True),\n",
5534 " ('finalists', 'x', 'xy', True),\n",
5535 " ('finalists', 'a', 'yz', True),\n",
5536 " ('finalists', 'y', 'yz', True)]"
5537 ]
5538 },
5539 "execution_count": 52,
5540 "metadata": {},
5541 "output_type": "execute_result"
5542 }
5543 ],
5544 "source": [
5545 "[(w, s, d1+chr(ord(d1)+1), r)\n",
5546 " for w in hinted_keywords \n",
5547 " for d1 in string.ascii_lowercase[:25]\n",
5548 " # for d2 in string.ascii_lowercase\n",
5549 " for s in string.ascii_lowercase \n",
5550 " for r in [True, False]\n",
5551 " # if d2 > d1\n",
5552 " if cadenus_decipher(first_chunk, w, make_cadenus_keycolumn(doubled_letters=d1+chr(ord(d1)+1), start=s, reverse=r)).startswith('final')]"
5553 ]
5554 },
5555 {
5556 "cell_type": "code",
5557 "execution_count": 53,
5558 "metadata": {
5559 "collapsed": false
5560 },
5561 "outputs": [
5562 {
5563 "data": {
5564 "text/plain": [
5565 "'phasennrkmffnhignsdaaojsrcisrncheentoeetueweisvhsounsucoaleyrhreitdioseotototdhsoagreeysifaglenhtlhonriuelseairscnrteameteiwnntneefefcrartataieposrlandrlvtartalvhctofnorehdpro'"
5566 ]
5567 },
5568 "execution_count": 53,
5569 "metadata": {},
5570 "output_type": "execute_result"
5571 }
5572 ],
5573 "source": [
5574 "cadenus_decipher(first_chunk, 'filbert', make_cadenus_keycolumn(doubled_letters='lu', start='m', reverse=False))"
5575 ]
5576 },
5577 {
5578 "cell_type": "code",
5579 "execution_count": 54,
5580 "metadata": {
5581 "collapsed": false
5582 },
5583 "outputs": [
5584 {
5585 "data": {
5586 "text/plain": [
5587 "['afcaeuottacthrioletcserthshtrahkyorpfrgeoadppjnglternefeofiortsddoeeumscruernfetlaafstwientrvoonerhuahravereetsvsielhlostdoaloyaesmnndignnrhohhtsnaoilncnssicreanneeiiierwtanes']"
5588 ]
5589 },
5590 "execution_count": 54,
5591 "metadata": {},
5592 "output_type": "execute_result"
5593 }
5594 ],
5595 "source": [
5596 "chunks(first_chunk, 175)"
5597 ]
5598 },
5599 {
5600 "cell_type": "code",
5601 "execution_count": null,
5602 "metadata": {
5603 "collapsed": false
5604 },
5605 "outputs": [],
5606 "source": []
5607 }
5608 ],
5609 "metadata": {
5610 "kernelspec": {
5611 "display_name": "Python 3",
5612 "language": "python",
5613 "name": "python3"
5614 },
5615 "language_info": {
5616 "codemirror_mode": {
5617 "name": "ipython",
5618 "version": 3
5619 },
5620 "file_extension": ".py",
5621 "mimetype": "text/x-python",
5622 "name": "python",
5623 "nbconvert_exporter": "python",
5624 "pygments_lexer": "ipython3",
5625 "version": "3.4.3"
5626 }
5627 },
5628 "nbformat": 4,
5629 "nbformat_minor": 0
5630 }