{ "metadata": { "name": "", "signature": "sha256:552bea7734ea4d4e21f21be2dca0f09009e1c1eb9a767ab8c6c8097144b76db4" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import collections\n", "import string\n", "%matplotlib inline\n", "\n", "from cipherbreak import *\n", "\n", "c8a = open('2014/8a.ciphertext').read()\n", "c8b = open('2014/8b.ciphertext').read().strip()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "freqs = pd.Series(english_counts)\n", "freqs.plot(kind='bar')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 2, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "freqs_8a = pd.Series(collections.Counter([l.lower() for l in c8a if l in string.ascii_letters]))\n", "freqs_8a.plot(kind='bar')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "c8as = sanitise(c8a)\n", "c8as" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ "'nyvlggsyglchxfeuytqcesqxpziufiggrbjhpayncruyfpsxufiupskyrectmmcncruyregxigrlglbtiblmecebzsvrlpuxpbibjajrljreobajrlufigjehbezywtmgjyxfqxictsgrdgtbjafyoocwtmjblctwwucqmgofrlfmrfrlfwlbtijlwuypmchjqxicrfchumtsmzjbimyvhcuvyrugxjcwpdtpuisrlfdhbaencyqumufeogrhcrjmytqsmsxjmrcsxjrmttiswzvjrfpecjitnidgemdssaitasvjhuyofgxpsxgmvvqfvrxiyxxmymbxfjpufigbeufeuuiiyzfavbaofbxicmsamqfisqwpgrtribbmtskhcwuuimcxufinbitrvpwxsmnbljppytuixgpmlifbgpmtfpeugsodvpkxicsnyrjeswcvokioreoyvnchggkirishiuyrerlfdpjeluasorvpjwzqxfkwgpsnyhsmrfkiblaigpfuiociersflwvpiuusufmoewpliufeuuiemrprwflhdpmuggbjmodsskeugsoygsmwtrlfzecypnyreyftrvbgxblhuusufeuuivqiblsoavjrmdyplcchcrfpeugsonvprsdmpplxiyxdfeolimemwcrufimczfjsgasnkmukiorxicjeylbtitfsxlmobiwcppnmoexigwqjeogenqyscxiyxufizummjvfgrtreucxictpuisqyqnpzumufmoyjfuqplxiqfvrajrlmsglrlfwajjpomxhsitqxiyxxcoomabzsvrmuyreuixgpmnyugxpsxpdfvqmocwtdssjsoeiomyhfxpasncyqumufeqjeomjpsvpurumiynppgxjrmorlfkiblxjkixcrpuoomaufeurlfgvigkicwuqidsvjrcdmqnsrjaeugsoqescioavznxfbytgrhygbbioswdgticvtmafaeoqxbpxisrugrhrlsmyhfxichbrecywfdssmxicvjlxfpgfnxtuidyrdpedixigwnycccxicfscelrlsmyhfaffewcffcrmmslgrhdssgrufiggkirehymoqxufigbemcxtlsuqgscajryqypmrlfzitrlbpvz'" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "key_a, score = vigenere_frequency_break(c8as)\n", "key_a, score" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ "('bye', -1461.9840974270046)" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "' '.join(segment(vigenere_decipher(c8as, key_a)))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "'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'" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "len(c8b) / 8" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ "875.0" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "[c for c in chunks(c8b, 5)]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "['00000',\n", " '00101',\n", " '00010',\n", " '00000',\n", " '00100',\n", " '10100',\n", " '01110',\n", " '10011',\n", " '10011',\n", " '00000',\n", " '00010',\n", " '10011',\n", " '00111',\n", " '10001',\n", " '01000',\n", " '01110',\n", " '01011',\n", " '00100',\n", " '10011',\n", " '00010',\n", " '10010',\n", " '00100',\n", " '10001',\n", " '10011',\n", " '00111',\n", " '10010',\n", " '00111',\n", " '10011',\n", " '10001',\n", " '00000',\n", " '00111',\n", " '01010',\n", " '11000',\n", " '01110',\n", " '10001',\n", " '01111',\n", " '00101',\n", " '10001',\n", " '00110',\n", " '00100',\n", " '01110',\n", " '00000',\n", " '00011',\n", " '01111',\n", " '01111',\n", " '01001',\n", " '01101',\n", " '00110',\n", " '01011',\n", " '10011',\n", " '00100',\n", " '10001',\n", " '01101',\n", " '00100',\n", " '00101',\n", " '00100',\n", " '01110',\n", " '00101',\n", " '01000',\n", " '01110',\n", " '10001',\n", " '10011',\n", " '10010',\n", " '00011',\n", " '00011',\n", " '01110',\n", " '00100',\n", " '00100',\n", " '10100',\n", " '01100',\n", " '10010',\n", " '00010',\n", " '10001',\n", " '10100',\n", " '00100',\n", " '10001',\n", " '01101',\n", " '00101',\n", " '00100',\n", " '10011',\n", " '01011',\n", " '00000',\n", " '00000',\n", " '00101',\n", " '10010',\n", " '10011',\n", " '10110',\n", " '01000',\n", " '00100',\n", " '01101',\n", " '10011',\n", " '10001',\n", " '10101',\n", " '01110',\n", " '01110',\n", " '01101',\n", " '00100',\n", " '10001',\n", " '00111',\n", " '10100',\n", " '00000',\n", " '00111',\n", " '10001',\n", " '00000',\n", " '10101',\n", " '00100',\n", " '10001',\n", " '00100',\n", " '00100',\n", " '10011',\n", " '10010',\n", " '10101',\n", " '10010',\n", " '01000',\n", " '00100',\n", " '01011',\n", " '00111',\n", " '01011',\n", " '01110',\n", " '10010',\n", " '10011',\n", " '00011',\n", " '01110',\n", " '00000',\n", " '01011',\n", " '01110',\n", " '11000',\n", " '00000',\n", " '00100',\n", " '10010',\n", " '01100',\n", " '01101',\n", " '01101',\n", " '00011',\n", " '01000',\n", " '00110',\n", " '01101',\n", " '01101',\n", " '10001',\n", " '00111',\n", " '01110',\n", " '00111',\n", " '00111',\n", " '10011',\n", " '10010',\n", " '01101',\n", " '00000',\n", " '01110',\n", " '01000',\n", " '01011',\n", " '01101',\n", " '00010',\n", " '01101',\n", " '10010',\n", " '10010',\n", " '01000',\n", " '00010',\n", " '10001',\n", " '00100',\n", " '00000',\n", " '01101',\n", " '01101',\n", " '00100',\n", " '00100',\n", " '01000',\n", " '01000',\n", " '01000',\n", " '00100',\n", " '10001',\n", " '10110',\n", " '10011',\n", " '00000',\n", " '01101',\n", " '00100',\n", " '10010',\n", " '10001',\n", " '10101',\n", " '01110',\n", " '00110',\n", " '01000',\n", " '00100',\n", " '01000',\n", " '11000',\n", " '10110',\n", " '10010',\n", " '10010',\n", " '00011',\n", " '00110',\n", " '01111',\n", " '10101',\n", " '01110',\n", " '01000',\n", " '00000',\n", " '01000',\n", " '10010',\n", " '00000',\n", " '01110',\n", " '00000',\n", " '00100',\n", " '01110',\n", " '00000',\n", " '00100',\n", " '00011',\n", " '10001',\n", " '01101',\n", " '01000',\n", " '10011',\n", " '10001',\n", " '01101',\n", " '10111',\n", " '00100',\n", " '01000',\n", " '00110',\n", " '10001',\n", " '01111',\n", " '10010',\n", " '10010',\n", " '00111',\n", " '00000',\n", " '00011',\n", " '00111',\n", " '00011',\n", " '10011',\n", " '01110',\n", " '01000',\n", " '01111',\n", " '00000',\n", " '00000',\n", " '10011',\n", " '00100',\n", " '10111',\n", " '00100',\n", " '01101',\n", " '01101',\n", " '00100',\n", " '10010',\n", " '00000',\n", " '00110',\n", " '10001',\n", " '01110',\n", " '00001',\n", " '10011',\n", " '01011',\n", " '00100',\n", " '10010',\n", " '10001',\n", " '01101',\n", " '10001',\n", " '01110',\n", " '01000',\n", " '10001',\n", " '11000',\n", " '01111',\n", " '00001',\n", " '00110',\n", " '00100',\n", " '00011',\n", " '00010',\n", " '01011',\n", " '01011',\n", " '01000',\n", " '10110',\n", " '00000',\n", " '01011',\n", " '00000',\n", " '01011',\n", " '00100',\n", " '00100',\n", " '01101',\n", " '01000',\n", " '00110',\n", " '10001',\n", " '10001',\n", " '01101',\n", " '10110',\n", " '11000',\n", " '10001',\n", " '01011',\n", " '01000',\n", " '01100',\n", " '01011',\n", " '01111',\n", " '10010',\n", " '10011',\n", " '01110',\n", " '01011',\n", " '00100',\n", " '00101',\n", " '10011',\n", " '10001',\n", " '00011',\n", " '01100',\n", " '10100',\n", " '00000',\n", " '10001',\n", " '01000',\n", " '00100',\n", " '00100',\n", " '00100',\n", " '01000',\n", " '01000',\n", " '00000',\n", " '01110',\n", " '01011',\n", " '01101',\n", " '00100',\n", " '10110',\n", " '10010',\n", " '00000',\n", " '01110',\n", " '00111',\n", " '10001',\n", " '10011',\n", " '01011',\n", " '10010',\n", " '10011',\n", " '01110',\n", " '00001',\n", " '00100',\n", " '10011',\n", " '01101',\n", " '10010',\n", " '01011',\n", " '10101',\n", " '00101',\n", " '01000',\n", " '10101',\n", " '00011',\n", " '01110',\n", " '10101',\n", " '10011',\n", " '01111',\n", " '01110',\n", " '00000',\n", " '00100',\n", " '00100',\n", " '01000',\n", " '10010',\n", " '00010',\n", " '01000',\n", " '01110',\n", " '00111',\n", " '01000',\n", " '01111',\n", " '10010',\n", " '00100',\n", " '10101',\n", " '00100',\n", " '00100',\n", " '00011',\n", " '10011',\n", " '00100',\n", " '10110',\n", " '00101',\n", " '00000',\n", " '10001',\n", " '01101',\n", " '00111',\n", " '00100',\n", " '00001',\n", " '01011',\n", " '00100',\n", " '00000',\n", " '01110',\n", " '10011',\n", " '01110',\n", " '00111',\n", " '10011',\n", " '10011',\n", " '10011',\n", " '00100',\n", " '01111',\n", " '01101',\n", " '00010',\n", " '01010',\n", " '00000',\n", " '01110',\n", " '01101',\n", " '00111',\n", " '10110',\n", " '00100',\n", " '10011',\n", " '01100',\n", " '10101',\n", " '11000',\n", " '01111',\n", " '10001',\n", " '10001',\n", " '00100',\n", " '01110',\n", " '01101',\n", " '01101',\n", " '00000',\n", " '10010',\n", " '00110',\n", " '00011',\n", " '00100',\n", " '00011',\n", " '01110',\n", " '00100',\n", " '00100',\n", " '00100',\n", " '01110',\n", " '00000',\n", " '00000',\n", " '01100',\n", " '10011',\n", " '00010',\n", " '01000',\n", " '00010',\n", " '10011',\n", " '10011',\n", " '01000',\n", " '00101',\n", " '01101',\n", " '00000',\n", " '00011',\n", " '10001',\n", " '00100',\n", " '10010',\n", " '10001',\n", " '10011',\n", " '10010',\n", " '00100',\n", " '10001',\n", " '01110',\n", " '10010',\n", " '00100',\n", " '10011',\n", " '10001',\n", " '00111',\n", " '00010',\n", " '01000',\n", " '00010',\n", " '10011',\n", " '01111',\n", " '10010',\n", " '00000',\n", " '00000',\n", " '00100',\n", " '00111',\n", " '01011',\n", " '00011',\n", " '00111',\n", " '10010',\n", " '00101',\n", " '10111',\n", " '10010',\n", " '01110',\n", " '00000',\n", " '01110',\n", " '10011',\n", " '00010',\n", " '10011',\n", " '00001',\n", " '00001',\n", " '10010',\n", " '01110',\n", " '00100',\n", " '01000',\n", " '10001',\n", " '01101',\n", " '10010',\n", " '00000',\n", " '00011',\n", " '01011',\n", " '11000',\n", " '10011',\n", " '10001',\n", " '10001',\n", " '10100',\n", " '01101',\n", " '10001',\n", " '00010',\n", " '00100',\n", " '01111',\n", " '10011',\n", " '10011',\n", " '00111',\n", " '10001',\n", " '00100',\n", " '10100',\n", " '00111',\n", " '01101',\n", " '01010',\n", " '10011',\n", " '00000',\n", " '00010',\n", " '00100',\n", " '00010',\n", " '00100',\n", " '00100',\n", " '01011',\n", " '10001',\n", " '10110',\n", " '01101',\n", " '01000',\n", " '10001',\n", " '00100',\n", " '00100',\n", " '00100',\n", " '00000',\n", " '00100',\n", " '10010',\n", " '00100',\n", " '00100',\n", " '00100',\n", " '01000',\n", " '00011',\n", " '01000',\n", " '10010',\n", " '01110',\n", " '00110',\n", " '00010',\n", " '00100',\n", " '01110',\n", " '01100',\n", " '01101',\n", " '10001',\n", " '10011',\n", " '00100',\n", " '01001',\n", " '00111',\n", " '00000',\n", " '00110',\n", " '00000',\n", " '00001',\n", " '10010',\n", " '00100',\n", " '01101',\n", " '01000',\n", " '10011',\n", " '01011',\n", " '10110',\n", " '10011',\n", " '10001',\n", " '01101',\n", " '00001',\n", " '01100',\n", " '01000',\n", " '00100',\n", " '01011',\n", " '10010',\n", " '00000',\n", " '10001',\n", " '00100',\n", " '10011',\n", " '00100',\n", " '10010',\n", " '10001',\n", " '01101',\n", " '00110',\n", " '10010',\n", " '01101',\n", " '00111',\n", " '00100',\n", " '00001',\n", " '01000',\n", " '01110',\n", " '10010',\n", " '00011',\n", " '01000',\n", " '00100',\n", " '01101',\n", " '00000',\n", " '00101',\n", " '01011',\n", " '00100',\n", " '01000',\n", " '10010',\n", " '00000',\n", " '00111',\n", " '01110',\n", " '00010',\n", " '01000',\n", " '00101',\n", " '00100',\n", " '10101',\n", " '01100',\n", " '00101',\n", " '00000',\n", " '10011',\n", " '00000',\n", " '01101',\n", " '00000',\n", " '10011',\n", " '10001',\n", " '01101',\n", " '01000',\n", " '00000',\n", " '00110',\n", " '01101',\n", " '00111',\n", " '00000',\n", " '10011',\n", " '01101',\n", " '01100',\n", " '01000',\n", " '00001',\n", " '01101',\n", " '01000',\n", " '10100',\n", " '00101',\n", " '00100',\n", " '01101',\n", " '10001',\n", " '10011',\n", " '01110',\n", " '10011',\n", " '10011',\n", " '10001',\n", " '01101',\n", " '11000',\n", " '01111',\n", " '00000',\n", " '01000',\n", " '00011',\n", " '11000',\n", " '01000',\n", " '00100',\n", " '00110',\n", " '00011',\n", " '01101',\n", " '01100',\n", " '00100',\n", " '10001',\n", " '00111',\n", " '00111',\n", " '01000',\n", " '01110',\n", " '10011',\n", " '10001',\n", " '00100',\n", " '10011',\n", " '00010',\n", " '00100',\n", " '10010',\n", " '10010',\n", " '00100',\n", " '01000',\n", " '01011',\n", " '00011',\n", " '10001',\n", " '00001',\n", " '00010',\n", " '00100',\n", " '01111',\n", " '10001',\n", " '01000',\n", " '00110',\n", " '00000',\n", " '00100',\n", " '10010',\n", " '01110',\n", " '00000',\n", " '00011',\n", " '01011',\n", " '10011',\n", " '00000',\n", " '00111',\n", " '01000',\n", " '00100',\n", " '10101',\n", " '00100',\n", " '00001',\n", " '10001',\n", " '00010',\n", " '00100',\n", " '01101',\n", " '01011',\n", " '00100',\n", " '10101',\n", " '00000',\n", " '10010',\n", " '00000',\n", " '00011',\n", " '01101',\n", " '01101',\n", " '10011',\n", " '00111',\n", " '01101',\n", " '00100',\n", " '01000',\n", " '10011',\n", " '00100',\n", " '01000',\n", " '01000',\n", " '10010',\n", " '00000',\n", " '00111',\n", " '10100',\n", " '00111',\n", " '00111',\n", " '10100',\n", " '00000',\n", " '01100',\n", " '01110',\n", " '01101',\n", " '00100',\n", " '00101',\n", " '11000',\n", " '00111',\n", " '01011',\n", " '01110',\n", " '01101',\n", " '10110',\n", " '00111',\n", " '00000',\n", " '00100',\n", " '00100',\n", " '00100',\n", " '00100',\n", " '01110',\n", " '10010',\n", " '01101',\n", " '00100',\n", " '00100',\n", " '11000',\n", " '00000',\n", " '01101',\n", " '00100',\n", " '01000',\n", " '10010',\n", " '00100',\n", " '10011',\n", " '01110',\n", " '00110',\n", " '11000',\n", " '01000',\n", " '10011',\n", " '00100',\n", " '10001',\n", " '01011',\n", " '01000',\n", " '00111',\n", " '10011',\n", " '00010',\n", " '01100',\n", " '01000',\n", " '01110',\n", " '01000',\n", " '10001',\n", " '00000',\n", " '10001',\n", " '00101',\n", " '00011',\n", " '01110',\n", " '00100',\n", " '10011',\n", " '01101',\n", " '01000',\n", " '00111',\n", " '10011',\n", " '01101',\n", " '00100',\n", " '00111',\n", " '01000',\n", " '01000',\n", " '01010',\n", " '00000',\n", " '01100',\n", " '10001',\n", " '00011',\n", " '01100',\n", " '01101',\n", " '00000',\n", " '00011',\n", " '00000',\n", " '01101',\n", " '00000',\n", " '01110',\n", " '00011',\n", " '10010',\n", " '00100',\n", " '10010',\n", " '00100',\n", " '01000',\n", " '11000',\n", " '00010',\n", " '01011',\n", " '10010',\n", " '01000',\n", " '00000',\n", " '01101',\n", " '10011',\n", " '00000',\n", " '01110',\n", " '01011',\n", " '10011',\n", " '00010',\n", " '01000',\n", " '11000',\n", " '01100',\n", " '01000',\n", " '00011',\n", " '00100',\n", " '01101',\n", " '10011',\n", " '10011',\n", " '00111',\n", " '01011',\n", " '10011',\n", " '01101',\n", " '00011',\n", " '10111',\n", " '10011',\n", " '10011',\n", " '10011',\n", " '01100',\n", " '00000',\n", " '10010',\n", " '00001',\n", " '01011',\n", " '00100',\n", " '00000',\n", " '00100',\n", " '00100',\n", " '10011',\n", " '01011',\n", " '01000',\n", " '10010',\n", " '01000',\n", " '10001',\n", " '10011',\n", " '10110',\n", " '10011',\n", " '10100',\n", " '10001',\n", " '01111',\n", " '00101',\n", " '00000',\n", " '01000',\n", " '01011',\n", " '10011',\n", " '00100',\n", " '00000',\n", " '01110',\n", " '00100',\n", " '00101',\n", " '00100',\n", " '01000',\n", " '10010',\n", " '01000',\n", " '01000',\n", " '01000',\n", " '11000',\n", " '01000',\n", " '10010',\n", " '01000',\n", " '01010',\n", " '10101',\n", " '10011',\n", " '10110',\n", " '01000',\n", " '10010',\n", " '01111',\n", " '10001',\n", " '00001',\n", " '10010',\n", " '01000',\n", " '01101',\n", " '00100',\n", " '01011',\n", " '01111',\n", " '00111',\n", " '10001',\n", " '01100',\n", " '01110',\n", " '00111',\n", " '01000',\n", " '00000',\n", " '00110',\n", " '01101',\n", " '01011',\n", " '10010',\n", " '01011',\n", " '10101',\n", " '01000',\n", " '10011',\n", " '01110',\n", " '00011',\n", " '00000',\n", " '01000',\n", " '10010',\n", " '00011',\n", " '01111',\n", " '01101',\n", " '11000',\n", " '00011',\n", " '00011',\n", " '00010',\n", " '00000',\n", " '00000',\n", " '01110',\n", " '10011',\n", " '00000',\n", " '00111',\n", " '00010',\n", " '00100',\n", " '00111',\n", " '10011',\n", " '10100',\n", " '00100',\n", " '01000',\n", " '10001',\n", " '10001',\n", " '00100',\n", " '00011',\n", " '00000',\n", " '00100',\n", " '00010',\n", " '10011',\n", " '01110',\n", " '10010',\n", " '01101',\n", " '10001',\n", " '00111',\n", " '10101',\n", " '01101',\n", " '00000',\n", " '01110',\n", " '00011',\n", " '01110',\n", " '01000',\n", " '01010',\n", " '01110',\n", " '00100',\n", " '10011',\n", " '00010',\n", " '01000',\n", " '01101',\n", " '00100',\n", " '01101',\n", " '00100',\n", " '10100',\n", " '10001',\n", " '10001',\n", " '01000',\n", " '10010',\n", " '00011',\n", " '00010',\n", " '01110',\n", " '10100',\n", " '10001',\n", " '00000',\n", " '00110',\n", " '01011',\n", " '10101',\n", " '01000',\n", " '01100',\n", " '01100',\n", " '10100',\n", " '01111',\n", " '01111',\n", " '00011',\n", " '01000',\n", " '10011',\n", " '00100',\n", " '00000',\n", " '01101',\n", " '00011',\n", " '01000',\n", " '10011',\n", " '01100',\n", " '00000',\n", " '00000',\n", " '01000',\n", " '00000',\n", " '01000',\n", " '00100',\n", " '01011',\n", " '00100',\n", " '01110',\n", " '01101',\n", " '01101',\n", " '10001',\n", " '00100',\n", " '00100',\n", " '00011',\n", " '00000',\n", " '01110',\n", " '00011',\n", " '00001',\n", " '01110',\n", " '01000',\n", " '10100',\n", " '01100',\n", " '00100',\n", " '01011',\n", " '10001',\n", " '01110',\n", " '10011',\n", " '01101',\n", " '10011',\n", " '10011',\n", " '10011',\n", " '00110',\n", " '01000',\n", " '10011',\n", " '01101',\n", " ...]" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "[(int(c, 2)) for c in chunks(c8b, 5)]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "[0,\n", " 5,\n", " 2,\n", " 0,\n", " 4,\n", " 20,\n", " 14,\n", " 19,\n", " 19,\n", " 0,\n", " 2,\n", " 19,\n", " 7,\n", " 17,\n", " 8,\n", " 14,\n", " 11,\n", " 4,\n", " 19,\n", " 2,\n", " 18,\n", " 4,\n", " 17,\n", " 19,\n", " 7,\n", " 18,\n", " 7,\n", " 19,\n", " 17,\n", " 0,\n", " 7,\n", " 10,\n", " 24,\n", " 14,\n", " 17,\n", " 15,\n", " 5,\n", " 17,\n", " 6,\n", " 4,\n", " 14,\n", " 0,\n", " 3,\n", " 15,\n", " 15,\n", " 9,\n", " 13,\n", " 6,\n", " 11,\n", " 19,\n", " 4,\n", " 17,\n", " 13,\n", " 4,\n", " 5,\n", " 4,\n", " 14,\n", " 5,\n", " 8,\n", " 14,\n", " 17,\n", " 19,\n", " 18,\n", " 3,\n", " 3,\n", " 14,\n", " 4,\n", " 4,\n", " 20,\n", " 12,\n", " 18,\n", " 2,\n", " 17,\n", " 20,\n", " 4,\n", " 17,\n", " 13,\n", " 5,\n", " 4,\n", " 19,\n", " 11,\n", " 0,\n", " 0,\n", " 5,\n", " 18,\n", " 19,\n", " 22,\n", " 8,\n", " 4,\n", " 13,\n", " 19,\n", " 17,\n", " 21,\n", " 14,\n", " 14,\n", " 13,\n", " 4,\n", " 17,\n", " 7,\n", " 20,\n", " 0,\n", " 7,\n", " 17,\n", " 0,\n", " 21,\n", " 4,\n", " 17,\n", " 4,\n", " 4,\n", " 19,\n", " 18,\n", " 21,\n", " 18,\n", " 8,\n", " 4,\n", " 11,\n", " 7,\n", " 11,\n", " 14,\n", " 18,\n", " 19,\n", " 3,\n", " 14,\n", " 0,\n", " 11,\n", " 14,\n", " 24,\n", " 0,\n", " 4,\n", " 18,\n", " 12,\n", " 13,\n", " 13,\n", " 3,\n", " 8,\n", " 6,\n", " 13,\n", " 13,\n", " 17,\n", " 7,\n", " 14,\n", " 7,\n", " 7,\n", " 19,\n", " 18,\n", " 13,\n", " 0,\n", " 14,\n", " 8,\n", " 11,\n", " 13,\n", " 2,\n", " 13,\n", " 18,\n", " 18,\n", " 8,\n", " 2,\n", " 17,\n", " 4,\n", " 0,\n", " 13,\n", " 13,\n", " 4,\n", " 4,\n", " 8,\n", " 8,\n", " 8,\n", " 4,\n", " 17,\n", " 22,\n", " 19,\n", " 0,\n", " 13,\n", " 4,\n", " 18,\n", " 17,\n", " 21,\n", " 14,\n", " 6,\n", " 8,\n", " 4,\n", " 8,\n", " 24,\n", " 22,\n", " 18,\n", " 18,\n", " 3,\n", " 6,\n", " 15,\n", " 21,\n", " 14,\n", " 8,\n", " 0,\n", " 8,\n", " 18,\n", " 0,\n", " 14,\n", " 0,\n", " 4,\n", " 14,\n", " 0,\n", " 4,\n", " 3,\n", " 17,\n", " 13,\n", " 8,\n", " 19,\n", " 17,\n", " 13,\n", " 23,\n", " 4,\n", " 8,\n", " 6,\n", " 17,\n", " 15,\n", " 18,\n", " 18,\n", " 7,\n", " 0,\n", " 3,\n", " 7,\n", " 3,\n", " 19,\n", " 14,\n", " 8,\n", " 15,\n", " 0,\n", " 0,\n", " 19,\n", " 4,\n", " 23,\n", " 4,\n", " 13,\n", " 13,\n", " 4,\n", " 18,\n", " 0,\n", " 6,\n", " 17,\n", " 14,\n", " 1,\n", " 19,\n", " 11,\n", " 4,\n", " 18,\n", " 17,\n", " 13,\n", " 17,\n", " 14,\n", " 8,\n", " 17,\n", " 24,\n", " 15,\n", " 1,\n", " 6,\n", " 4,\n", " 3,\n", " 2,\n", " 11,\n", " 11,\n", " 8,\n", " 22,\n", " 0,\n", " 11,\n", " 0,\n", " 11,\n", " 4,\n", " 4,\n", " 13,\n", " 8,\n", " 6,\n", " 17,\n", " 17,\n", " 13,\n", " 22,\n", " 24,\n", " 17,\n", " 11,\n", " 8,\n", " 12,\n", " 11,\n", " 15,\n", " 18,\n", " 19,\n", " 14,\n", " 11,\n", " 4,\n", " 5,\n", " 19,\n", " 17,\n", " 3,\n", " 12,\n", " 20,\n", " 0,\n", " 17,\n", " 8,\n", " 4,\n", " 4,\n", " 4,\n", " 8,\n", " 8,\n", " 0,\n", " 14,\n", " 11,\n", " 13,\n", " 4,\n", " 22,\n", " 18,\n", " 0,\n", " 14,\n", " 7,\n", " 17,\n", " 19,\n", " 11,\n", " 18,\n", " 19,\n", " 14,\n", " 1,\n", " 4,\n", " 19,\n", " 13,\n", " 18,\n", " 11,\n", " 21,\n", " 5,\n", " 8,\n", " 21,\n", " 3,\n", " 14,\n", " 21,\n", " 19,\n", " 15,\n", " 14,\n", " 0,\n", " 4,\n", " 4,\n", " 8,\n", " 18,\n", " 2,\n", " 8,\n", " 14,\n", " 7,\n", " 8,\n", " 15,\n", " 18,\n", " 4,\n", " 21,\n", " 4,\n", " 4,\n", " 3,\n", " 19,\n", " 4,\n", " 22,\n", " 5,\n", " 0,\n", " 17,\n", " 13,\n", " 7,\n", " 4,\n", " 1,\n", " 11,\n", " 4,\n", " 0,\n", " 14,\n", " 19,\n", " 14,\n", " 7,\n", " 19,\n", " 19,\n", " 19,\n", " 4,\n", " 15,\n", " 13,\n", " 2,\n", " 10,\n", " 0,\n", " 14,\n", " 13,\n", " 7,\n", " 22,\n", " 4,\n", " 19,\n", " 12,\n", " 21,\n", " 24,\n", " 15,\n", " 17,\n", " 17,\n", " 4,\n", " 14,\n", " 13,\n", " 13,\n", " 0,\n", " 18,\n", " 6,\n", " 3,\n", " 4,\n", " 3,\n", " 14,\n", " 4,\n", " 4,\n", " 4,\n", " 14,\n", " 0,\n", " 0,\n", " 12,\n", " 19,\n", " 2,\n", " 8,\n", " 2,\n", " 19,\n", " 19,\n", " 8,\n", " 5,\n", " 13,\n", " 0,\n", " 3,\n", " 17,\n", " 4,\n", " 18,\n", " 17,\n", " 19,\n", " 18,\n", " 4,\n", " 17,\n", " 14,\n", " 18,\n", " 4,\n", " 19,\n", " 17,\n", " 7,\n", " 2,\n", " 8,\n", " 2,\n", " 19,\n", " 15,\n", " 18,\n", " 0,\n", " 0,\n", " 4,\n", " 7,\n", " 11,\n", " 3,\n", " 7,\n", " 18,\n", " 5,\n", " 23,\n", " 18,\n", " 14,\n", " 0,\n", " 14,\n", " 19,\n", " 2,\n", " 19,\n", " 1,\n", " 1,\n", " 18,\n", " 14,\n", " 4,\n", " 8,\n", " 17,\n", " 13,\n", " 18,\n", " 0,\n", " 3,\n", " 11,\n", " 24,\n", " 19,\n", " 17,\n", " 17,\n", " 20,\n", " 13,\n", " 17,\n", " 2,\n", " 4,\n", " 15,\n", " 19,\n", " 19,\n", " 7,\n", " 17,\n", " 4,\n", " 20,\n", " 7,\n", " 13,\n", " 10,\n", " 19,\n", " 0,\n", " 2,\n", " 4,\n", " 2,\n", " 4,\n", " 4,\n", " 11,\n", " 17,\n", " 22,\n", " 13,\n", " 8,\n", " 17,\n", " 4,\n", " 4,\n", " 4,\n", " 0,\n", " 4,\n", " 18,\n", " 4,\n", " 4,\n", " 4,\n", " 8,\n", " 3,\n", " 8,\n", " 18,\n", " 14,\n", " 6,\n", " 2,\n", " 4,\n", " 14,\n", " 12,\n", " 13,\n", " 17,\n", " 19,\n", " 4,\n", " 9,\n", " 7,\n", " 0,\n", " 6,\n", " 0,\n", " 1,\n", " 18,\n", " 4,\n", " 13,\n", " 8,\n", " 19,\n", " 11,\n", " 22,\n", " 19,\n", " 17,\n", " 13,\n", " 1,\n", " 12,\n", " 8,\n", " 4,\n", " 11,\n", " 18,\n", " 0,\n", " 17,\n", " 4,\n", " 19,\n", " 4,\n", " 18,\n", " 17,\n", " 13,\n", " 6,\n", " 18,\n", " 13,\n", " 7,\n", " 4,\n", " 1,\n", " 8,\n", " 14,\n", " 18,\n", " 3,\n", " 8,\n", " 4,\n", " 13,\n", " 0,\n", " 5,\n", " 11,\n", " 4,\n", " 8,\n", " 18,\n", " 0,\n", " 7,\n", " 14,\n", " 2,\n", " 8,\n", " 5,\n", " 4,\n", " 21,\n", " 12,\n", " 5,\n", " 0,\n", " 19,\n", " 0,\n", " 13,\n", " 0,\n", " 19,\n", " 17,\n", " 13,\n", " 8,\n", " 0,\n", " 6,\n", " 13,\n", " 7,\n", " 0,\n", " 19,\n", " 13,\n", " 12,\n", " 8,\n", " 1,\n", " 13,\n", " 8,\n", " 20,\n", " 5,\n", " 4,\n", " 13,\n", " 17,\n", " 19,\n", " 14,\n", " 19,\n", " 19,\n", " 17,\n", " 13,\n", " 24,\n", " 15,\n", " 0,\n", " 8,\n", " 3,\n", " 24,\n", " 8,\n", " 4,\n", " 6,\n", " 3,\n", " 13,\n", " 12,\n", " 4,\n", " 17,\n", " 7,\n", " 7,\n", " 8,\n", " 14,\n", " 19,\n", " 17,\n", " 4,\n", " 19,\n", " 2,\n", " 4,\n", " 18,\n", " 18,\n", " 4,\n", " 8,\n", " 11,\n", " 3,\n", " 17,\n", " 1,\n", " 2,\n", " 4,\n", " 15,\n", " 17,\n", " 8,\n", " 6,\n", " 0,\n", " 4,\n", " 18,\n", " 14,\n", " 0,\n", " 3,\n", " 11,\n", " 19,\n", " 0,\n", " 7,\n", " 8,\n", " 4,\n", " 21,\n", " 4,\n", " 1,\n", " 17,\n", " 2,\n", " 4,\n", " 13,\n", " 11,\n", " 4,\n", " 21,\n", " 0,\n", " 18,\n", " 0,\n", " 3,\n", " 13,\n", " 13,\n", " 19,\n", " 7,\n", " 13,\n", " 4,\n", " 8,\n", " 19,\n", " 4,\n", " 8,\n", " 8,\n", " 18,\n", " 0,\n", " 7,\n", " 20,\n", " 7,\n", " 7,\n", " 20,\n", " 0,\n", " 12,\n", " 14,\n", " 13,\n", " 4,\n", " 5,\n", " 24,\n", " 7,\n", " 11,\n", " 14,\n", " 13,\n", " 22,\n", " 7,\n", " 0,\n", " 4,\n", " 4,\n", " 4,\n", " 4,\n", " 14,\n", " 18,\n", " 13,\n", " 4,\n", " 4,\n", " 24,\n", " 0,\n", " 13,\n", " 4,\n", " 8,\n", " 18,\n", " 4,\n", " 19,\n", " 14,\n", " 6,\n", " 24,\n", " 8,\n", " 19,\n", " 4,\n", " 17,\n", " 11,\n", " 8,\n", " 7,\n", " 19,\n", " 2,\n", " 12,\n", " 8,\n", " 14,\n", " 8,\n", " 17,\n", " 0,\n", " 17,\n", " 5,\n", " 3,\n", " 14,\n", " 4,\n", " 19,\n", " 13,\n", " 8,\n", " 7,\n", " 19,\n", " 13,\n", " 4,\n", " 7,\n", " 8,\n", " 8,\n", " 10,\n", " 0,\n", " 12,\n", " 17,\n", " 3,\n", " 12,\n", " 13,\n", " 0,\n", " 3,\n", " 0,\n", " 13,\n", " 0,\n", " 14,\n", " 3,\n", " 18,\n", " 4,\n", " 18,\n", " 4,\n", " 8,\n", " 24,\n", " 2,\n", " 11,\n", " 18,\n", " 8,\n", " 0,\n", " 13,\n", " 19,\n", " 0,\n", " 14,\n", " 11,\n", " 19,\n", " 2,\n", " 8,\n", " 24,\n", " 12,\n", " 8,\n", " 3,\n", " 4,\n", " 13,\n", " 19,\n", " 19,\n", " 7,\n", " 11,\n", " 19,\n", " 13,\n", " 3,\n", " 23,\n", " 19,\n", " 19,\n", " 19,\n", " 12,\n", " 0,\n", " 18,\n", " 1,\n", " 11,\n", " 4,\n", " 0,\n", " 4,\n", " 4,\n", " 19,\n", " 11,\n", " 8,\n", " 18,\n", " 8,\n", " 17,\n", " 19,\n", " 22,\n", " 19,\n", " 20,\n", " 17,\n", " 15,\n", " 5,\n", " 0,\n", " 8,\n", " 11,\n", " 19,\n", " 4,\n", " 0,\n", " 14,\n", " 4,\n", " 5,\n", " 4,\n", " 8,\n", " 18,\n", " 8,\n", " 8,\n", " 8,\n", " 24,\n", " 8,\n", " 18,\n", " 8,\n", " 10,\n", " 21,\n", " 19,\n", " 22,\n", " 8,\n", " 18,\n", " 15,\n", " 17,\n", " 1,\n", " 18,\n", " 8,\n", " 13,\n", " 4,\n", " 11,\n", " 15,\n", " 7,\n", " 17,\n", " 12,\n", " 14,\n", " 7,\n", " 8,\n", " 0,\n", " 6,\n", " 13,\n", " 11,\n", " 18,\n", " 11,\n", " 21,\n", " 8,\n", " 19,\n", " 14,\n", " 3,\n", " 0,\n", " 8,\n", " 18,\n", " 3,\n", " 15,\n", " 13,\n", " 24,\n", " 3,\n", " 3,\n", " 2,\n", " 0,\n", " 0,\n", " 14,\n", " 19,\n", " 0,\n", " 7,\n", " 2,\n", " 4,\n", " 7,\n", " 19,\n", " 20,\n", " 4,\n", " 8,\n", " 17,\n", " 17,\n", " 4,\n", " 3,\n", " 0,\n", " 4,\n", " 2,\n", " 19,\n", " 14,\n", " 18,\n", " 13,\n", " 17,\n", " 7,\n", " 21,\n", " 13,\n", " 0,\n", " 14,\n", " 3,\n", " 14,\n", " 8,\n", " 10,\n", " 14,\n", " 4,\n", " 19,\n", " 2,\n", " 8,\n", " 13,\n", " 4,\n", " 13,\n", " 4,\n", " 20,\n", " 17,\n", " 17,\n", " 8,\n", " 18,\n", " 3,\n", " 2,\n", " 14,\n", " 20,\n", " 17,\n", " 0,\n", " 6,\n", " 11,\n", " 21,\n", " 8,\n", " 12,\n", " 12,\n", " 20,\n", " 15,\n", " 15,\n", " 3,\n", " 8,\n", " 19,\n", " 4,\n", " 0,\n", " 13,\n", " 3,\n", " 8,\n", " 19,\n", " 12,\n", " 0,\n", " 0,\n", " 8,\n", " 0,\n", " 8,\n", " 4,\n", " 11,\n", " 4,\n", " 14,\n", " 13,\n", " 13,\n", " 17,\n", " 4,\n", " 4,\n", " 3,\n", " 0,\n", " 14,\n", " 3,\n", " 1,\n", " 14,\n", " 8,\n", " 20,\n", " 12,\n", " 4,\n", " 11,\n", " 17,\n", " 14,\n", " 19,\n", " 13,\n", " 19,\n", " 19,\n", " 19,\n", " 6,\n", " 8,\n", " 19,\n", " 13,\n", " ...]" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "min([(int(c, 2)) for c in chunks(c8b, 5)])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 10, "text": [ "0" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "max([chr(int(c, 2) + ord('a')) for c in chunks(c8b, 5)])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ "'y'" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "def cadenus_letter(n, doubled='v'):\n", " letter = chr(n + ord('a'))\n", " if letter > doubled:\n", " letter = chr(n + ord('a') + 1)\n", " return letter" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "c8bl = ''.join([cadenus_letter(int(c, 2)) for c in chunks(c8b, 5)])\n", "c8bl" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 13, "text": [ "'afcaeuottacthrioletcserthshtrahkzorpfrgeoadppjnglternefeofiortsddoeeumscruernfetlaafstxientrvoonerhuahravereetsvsielhlostdoalozaesmnndignnrhohhtsnaoilncnssicreanneeiiierxtanesrvogieizxssdgpvoiaisaoaeoaedrnitrnyeigrpsshadhdtoipaateyennesagrobtlesrnroirzpbgedcllixalaleenigrrnxzrlimlpstoleftrdmuarieeeiiaolnexsaohrtlstobetnslvfivdovtpoaeeisciohipseveedtexfarnhebleaotohtttepnckaonhxetmvzprreonnasgdedoeeeoaamtcicttifnadresrtserosetrhcictpsaaehldhsfysoaotctbbsoeirnsadlztrrunrceptthreuhnktaceceelrxnireeeaeseeeidisogceomnrtejhagabsenitlxtrnbmielsaretesrngsnhebiosdienafleisahocifevmfatanatrniagnhatnmibniufenrtottrnzpaidziegdnmerhhiotretcesseildrbceprigaesoadltahievebrcenlevasadnnthneiteiisahuhhuamonefzhlonxhaeeeeosneezaneisetogziterlihtcmioirarfdoetnihtnehiikamrdmnadanaodseseizclsiantaoltcizmidentthltndytttmasbleaeetlisirtxturpfailteaoefeisiiizisikvtxisprbsinelphrmohiagnlslvitodaisdpnzddcaaotahcehtueirredaectosnrhvnaodoikoetcineneurrisdcouraglvimmuppditeanditmaaiaieleonnreedaodboiumelrotntttgitnrlrienniklzsogstcifzpipvidvssmnceiasiitsnneatitomrhbnhnidprlrepoznalsnvsdosanesitfaenltgodatteeaisicrootmsmfhauenirsghznxeintegodiileedtarnosrcaaendtcuttfdrbehtmfitoordruiaozaanoeeldoinhusgiteaoriecevemntratmtfpeucutahamtnexonicdeemrpaolitoafesoosspfnlneeootachllirssysofpdftfrnpraeeazlonahautntcntcbaxloneftoatecvoxdlxvnneedtiioigtegmtaheeatefaaeprrcrosheerrpalediengidrreouhvesuroztnsosinuiuiofprda'" ] } ], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "min(c8bl), max(c8bl)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 14, "text": [ "('a', 'z')" ] } ], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "len(c8bl), len(c8bl) / 25" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 15, "text": [ "(1400, 56.0)" ] } ], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "freqs_8b = pd.Series(collections.Counter([l.lower() for l in c8bl if l in string.ascii_letters]))\n", "freqs_8b.plot(kind='bar')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 16, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nfwNwK7U2g91uAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "freqs = pd.Series(english_counts)\n", "freqs.plot(kind='bar')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 17, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "rows = chunks(c8bl, len(c8bl) // 25)\n", "rows" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 18, "text": [ "['afcaeuottacthrioletcserthshtrahkzorpfrgeoadppjnglternefe',\n", " 'ofiortsddoeeumscruernfetlaafstxientrvoonerhuahravereetsv',\n", " 'sielhlostdoalozaesmnndignnrhohhtsnaoilncnssicreanneeiiie',\n", " 'rxtanesrvogieizxssdgpvoiaisaoaeoaedrnitrnyeigrpsshadhdto',\n", " 'ipaateyennesagrobtlesrnroirzpbgedcllixalaleenigrrnxzrlim',\n", " 'lpstoleftrdmuarieeeiiaolnexsaohrtlstobetnslvfivdovtpoaee',\n", " 'isciohipseveedtexfarnhebleaotohtttepnckaonhxetmvzprreonn',\n", " 'asgdedoeeeoaamtcicttifnadresrtserosetrhcictpsaaehldhsfys',\n", " 'oaotctbbsoeirnsadlztrrunrceptthreuhnktaceceelrxnireeeaes',\n", " 'eeeidisogceomnrtejhagabsenitlxtrnbmielsaretesrngsnhebios',\n", " 'dienafleisahocifevmfatanatrniagnhatnmibniufenrtottrnzpai',\n", " 'dziegdnmerhhiotretcesseildrbceprigaesoadltahievebrcenlev',\n", " 'asadnnthneiteiisahuhhuamonefzhlonxhaeeeeosneezaneisetogz',\n", " 'iterlihtcmioirarfdoetnihtnehiikamrdmnadanaodseseizclsian',\n", " 'taoltcizmidentthltndytttmasbleaeetlisirtxturpfailteaoefe',\n", " 'isiiizisikvtxisprbsinelphrmohiagnlslvitodaisdpnzddcaaota',\n", " 'hcehtueirredaectosnrhvnaodoikoetcineneurrisdcouraglvimmu',\n", " 'ppditeanditmaaiaieleonnreedaodboiumelrotntttgitnrlrienni',\n", " 'klzsogstcifzpipvidvssmnceiasiitsnneatitomrhbnhnidprlrepo',\n", " 'znalsnvsdosanesitfaenltgodatteeaisicrootmsmfhauenirsghzn',\n", " 'xeintegodiileedtarnosrcaaendtcuttfdrbehtmfitoordruiaozaa',\n", " 'noeeldoinhusgiteaoriecevemntratmtfpeucutahamtnexonicdeem',\n", " 'rpaolitoafesoosspfnlneeootachllirssysofpdftfrnpraeeazlon',\n", " 'ahautntcntcbaxloneftoatecvoxdlxvnneedtiioigtegmtaheeatef',\n", " 'aaeprrcrosheerrpalediengidrreouhvesuroztnsosinuiuiofprda']" ] } ], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "chunks(''.join([l if l in 'phase' else '.' for l in c8bl]), 56)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 19, "text": [ "['a..ae....a..h....e..se..hsh..ah....p...e.a.pp.....e..e.e',\n", " '......s...ee..s...e...e..aa.s...e.......e.h.ah.a.e.ee.s.',\n", " 's.e.h..s...a...aes.........h.hh.s.a......ss...ea..ee...e',\n", " '...a.es.....e...ss..p...a.sa.ae.ae........e...pssha.h...',\n", " '.paa.e.e..esa......es.......p..e......a.a.ee............',\n", " '.ps...e......a..eee..a...e.sa.h...s...e..s.........p.aee',\n", " '.s...h.pse.ee..e..a..he..ea...h...ep...a..h.e....p..e...',\n", " 'as..e..eee.aa..........a..es..se..se..h....psaaeh..hs..s',\n", " '.a......s.e...sa..........ep..h.e.h...a.e.ee......eeeaes',\n", " 'eee...s...e.....e.ha.a.se...........e.sa.e.es...s.he...s',\n", " '..e.a..e.sah....e...a.a.a....a..ha.........e.........pa.',\n", " '...e....e.hh....e..esse......ep...aes.a...ah.e.e...e..e.',\n", " 'asa....h.e..e..sah.hh.a...e..h....haeeee.s.ee.a.e.se....',\n", " '..e...h.......a....e...h..eh...a.....a.a.a..sese....s.a.',\n", " '.a.........e...h.........as..eaee...s.......p.a...ea.e.e',\n", " '.s.....s......sp..s..e.ph...h.a...s......a.s.p.....aa..a',\n", " 'h.eh..e...e.ae...s..h..a......e....e.e....s.....a.......',\n", " 'pp...ea.....aa.a.e.e....ee.a.......e................e...',\n", " '...s..s.....p.p....ss...e.as...s..ea......h..h...p...ep.',\n", " '..a.s..s..sa.es...ae......a..eea.s.......s..ha.e...s.h..',\n", " '.e...e......ee..a...s..aae...........eh............a..aa',\n", " '..ee.....h.s...ea...e.e.e....a....pe....aha...e......ee.',\n", " '.pa.....a.es..ssp....ee...a.h....ss.s..p......p.aeea....',\n", " 'aha.........a....e...a.e..........ee........e...aheea.e.',\n", " 'aaep.....shee..pa.e..e......e..h.es......s.s........p..a']" ] } ], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "columns = [''.join(c) for c in zip(*rows)]\n", "columns" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 20, "text": [ "['aosriliaoeddaitihpkzxnraa',\n", " 'ffixppssaeizstascplneopha',\n", " 'cietascgoeeiaeoiedzaieaae',\n", " 'aolaatidtinedrlihislneoup',\n", " 'erhntooecdagnltittostlltr',\n", " 'utleelhdtifdniczuegnedinr',\n", " 'ososyeiobslnthiieasvgottc',\n", " 'tdsrefpeboemhtzsintsoiocr',\n", " 'tdtvntsesgiencmirdcddnano',\n", " 'aodonreeocsremikriioihfts',\n", " 'ceogedvoeeahiidvetfsiuech',\n", " 'teaismeaiohhtoetdmzalssbe',\n", " 'huleauearmoieinxaapnegoae',\n", " 'rmoigadmnncoirtieaieeioxr',\n", " 'iszzrrttsritiatscipsdtslr',\n", " 'ocaxoiecatfrsrhptavitesop',\n", " 'lresbexideeeaflroiitaapna',\n", " 'eusstefcljvthdtbsedfrofel',\n", " 'temdleatzhmcuonsnlvanrnfe',\n", " 'crngeirttafehedireseoiltd',\n", " 'snnpsinirgashtynhosnsenoi',\n", " 'efdvrahfratsuntevnmlrceae',\n", " 'reionoenubaeaitlnnntceetn',\n", " 'ttgirlbansnimhtparcgavoeg',\n", " 'hlnaonldrealotmhoeeoaeoci',\n", " 'saniieercntdnnardeidemtvd',\n", " 'harsrxaeeirreesmodaannaor',\n", " 'tfhazsosptnbfhboiastdtcxr',\n", " 'rsoopatrtliczilhkoittrhde',\n", " 'athaboottxaehieiodiecallo',\n", " 'hxheghhshtgplkaaebteutlxu',\n", " 'kitoerterrnroaegtosatmivh',\n", " 'zesadttrenhinmencinittrnv',\n", " 'onnecltoubagxrtliunsffsne',\n", " 'rtadlseshmtahdlsnmeidpses',\n", " 'prorltpenineamileeacreyeu',\n", " 'fviniontkemsensvnltrbusdr',\n", " 'rolixbcrtlioeaiierioecoto',\n", " 'gontaekhasbaedrtuotohufiz',\n", " 'encrltaccandeatortotttpit',\n", " 'oennanoierilonxdrnmmmadon',\n", " 'arsylsncceutsataitrsfhfis',\n", " 'dhseelhtetfanouisthmiatgo',\n", " 'puiievxpeeehedrsdtbftmfts',\n", " 'pacgnfeslsniespdcgnhotrei',\n", " 'jhrriitarrrezefpoihaonngn',\n", " 'nrepgvmaxntvasanutnurepmu',\n", " 'gaasrdvengoeneizrniedxrti',\n", " 'lvnsrozhistbeildardnroaau',\n", " 'tenhnvplrntriztdglpiunehi',\n", " 'ereaxtrdehrcsceclrrriieeo',\n", " 'reedzprheeneelaavilsacaef',\n", " 'neihroesebzntsoaiergodzap',\n", " 'etidlaofaiploieomnehzeltr',\n", " 'fsitienyeoaegaftmnpzaeoed',\n", " 'eveomensssivzneauionamnfa']" ] } ], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "letter_positions = {letter: [(r, c) for r, row in enumerate(rows) for c, char in enumerate(row) if char == letter] for letter in 'phaseeight'}\n", "letter_positions" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 21, "text": [ "{'h': [(0, 12),\n", " (0, 24),\n", " (0, 26),\n", " (0, 30),\n", " (1, 42),\n", " (1, 45),\n", " (2, 4),\n", " (2, 27),\n", " (2, 29),\n", " (2, 30),\n", " (3, 49),\n", " (3, 52),\n", " (5, 30),\n", " (6, 5),\n", " (6, 21),\n", " (6, 30),\n", " (6, 42),\n", " (7, 38),\n", " (7, 48),\n", " (7, 51),\n", " (8, 30),\n", " (8, 34),\n", " (9, 18),\n", " (9, 50),\n", " (10, 11),\n", " (10, 32),\n", " (11, 10),\n", " (11, 11),\n", " (11, 43),\n", " (12, 7),\n", " (12, 17),\n", " (12, 19),\n", " (12, 20),\n", " (12, 29),\n", " (12, 34),\n", " (13, 6),\n", " (13, 23),\n", " (13, 27),\n", " (14, 15),\n", " (15, 24),\n", " (15, 28),\n", " (16, 0),\n", " (16, 3),\n", " (16, 20),\n", " (18, 42),\n", " (18, 45),\n", " (19, 44),\n", " (19, 53),\n", " (20, 38),\n", " (21, 9),\n", " (21, 41),\n", " (22, 28),\n", " (23, 1),\n", " (23, 49),\n", " (24, 10),\n", " (24, 31)],\n", " 'e': [(0, 4),\n", " (0, 17),\n", " (0, 21),\n", " (0, 39),\n", " (0, 50),\n", " (0, 53),\n", " (0, 55),\n", " (1, 10),\n", " (1, 11),\n", " (1, 18),\n", " (1, 22),\n", " (1, 32),\n", " (1, 40),\n", " (1, 49),\n", " (1, 51),\n", " (1, 52),\n", " (2, 2),\n", " (2, 16),\n", " (2, 46),\n", " (2, 50),\n", " (2, 51),\n", " (2, 55),\n", " (3, 5),\n", " (3, 12),\n", " (3, 30),\n", " (3, 33),\n", " (3, 42),\n", " (4, 5),\n", " (4, 7),\n", " (4, 10),\n", " (4, 19),\n", " (4, 31),\n", " (4, 42),\n", " (4, 43),\n", " (5, 6),\n", " (5, 16),\n", " (5, 17),\n", " (5, 18),\n", " (5, 25),\n", " (5, 38),\n", " (5, 54),\n", " (5, 55),\n", " (6, 9),\n", " (6, 11),\n", " (6, 12),\n", " (6, 15),\n", " (6, 22),\n", " (6, 25),\n", " (6, 34),\n", " (6, 44),\n", " (6, 52),\n", " (7, 4),\n", " (7, 7),\n", " (7, 8),\n", " (7, 9),\n", " (7, 26),\n", " (7, 31),\n", " (7, 35),\n", " (7, 47),\n", " (8, 10),\n", " (8, 26),\n", " (8, 32),\n", " (8, 40),\n", " (8, 42),\n", " (8, 43),\n", " (8, 50),\n", " (8, 51),\n", " (8, 52),\n", " (8, 54),\n", " (9, 0),\n", " (9, 1),\n", " (9, 2),\n", " (9, 10),\n", " (9, 16),\n", " (9, 24),\n", " (9, 36),\n", " (9, 41),\n", " (9, 43),\n", " (9, 51),\n", " (10, 2),\n", " (10, 7),\n", " (10, 16),\n", " (10, 43),\n", " (11, 3),\n", " (11, 8),\n", " (11, 16),\n", " (11, 19),\n", " (11, 22),\n", " (11, 29),\n", " (11, 35),\n", " (11, 45),\n", " (11, 47),\n", " (11, 51),\n", " (11, 54),\n", " (12, 9),\n", " (12, 12),\n", " (12, 26),\n", " (12, 36),\n", " (12, 37),\n", " (12, 38),\n", " (12, 39),\n", " (12, 43),\n", " (12, 44),\n", " (12, 48),\n", " (12, 51),\n", " (13, 2),\n", " (13, 19),\n", " (13, 26),\n", " (13, 45),\n", " (13, 47),\n", " (14, 11),\n", " (14, 29),\n", " (14, 31),\n", " (14, 32),\n", " (14, 50),\n", " (14, 53),\n", " (14, 55),\n", " (15, 21),\n", " (16, 2),\n", " (16, 6),\n", " (16, 10),\n", " (16, 13),\n", " (16, 30),\n", " (16, 35),\n", " (16, 37),\n", " (17, 5),\n", " (17, 17),\n", " (17, 19),\n", " (17, 24),\n", " (17, 25),\n", " (17, 35),\n", " (17, 52),\n", " (18, 24),\n", " (18, 34),\n", " (18, 53),\n", " (19, 13),\n", " (19, 19),\n", " (19, 29),\n", " (19, 30),\n", " (19, 47),\n", " (20, 1),\n", " (20, 5),\n", " (20, 12),\n", " (20, 13),\n", " (20, 25),\n", " (20, 37),\n", " (21, 2),\n", " (21, 3),\n", " (21, 15),\n", " (21, 20),\n", " (21, 22),\n", " (21, 24),\n", " (21, 35),\n", " (21, 46),\n", " (21, 53),\n", " (21, 54),\n", " (22, 10),\n", " (22, 21),\n", " (22, 22),\n", " (22, 49),\n", " (22, 50),\n", " (23, 17),\n", " (23, 23),\n", " (23, 34),\n", " (23, 35),\n", " (23, 44),\n", " (23, 50),\n", " (23, 51),\n", " (23, 54),\n", " (24, 2),\n", " (24, 11),\n", " (24, 12),\n", " (24, 18),\n", " (24, 21),\n", " (24, 28),\n", " (24, 33)],\n", " 'a': [(0, 0),\n", " (0, 3),\n", " (0, 9),\n", " (0, 29),\n", " (0, 41),\n", " (1, 25),\n", " (1, 26),\n", " (1, 44),\n", " (1, 47),\n", " (2, 11),\n", " (2, 15),\n", " (2, 34),\n", " (2, 47),\n", " (3, 3),\n", " (3, 24),\n", " (3, 27),\n", " (3, 29),\n", " (3, 32),\n", " (3, 50),\n", " (4, 2),\n", " (4, 3),\n", " (4, 12),\n", " (4, 38),\n", " (4, 40),\n", " (5, 13),\n", " (5, 21),\n", " (5, 28),\n", " (5, 53),\n", " (6, 18),\n", " (6, 26),\n", " (6, 39),\n", " (7, 0),\n", " (7, 11),\n", " (7, 12),\n", " (7, 23),\n", " (7, 45),\n", " (7, 46),\n", " (8, 1),\n", " (8, 15),\n", " (8, 38),\n", " (8, 53),\n", " (9, 19),\n", " (9, 21),\n", " (9, 39),\n", " (10, 4),\n", " (10, 10),\n", " (10, 20),\n", " (10, 22),\n", " (10, 24),\n", " (10, 29),\n", " (10, 33),\n", " (10, 54),\n", " (11, 34),\n", " (11, 38),\n", " (11, 42),\n", " (12, 0),\n", " (12, 2),\n", " (12, 16),\n", " (12, 22),\n", " (12, 35),\n", " (12, 46),\n", " (13, 14),\n", " (13, 31),\n", " (13, 37),\n", " (13, 39),\n", " (13, 41),\n", " (13, 54),\n", " (14, 1),\n", " (14, 25),\n", " (14, 30),\n", " (14, 46),\n", " (14, 51),\n", " (15, 30),\n", " (15, 41),\n", " (15, 51),\n", " (15, 52),\n", " (15, 55),\n", " (16, 12),\n", " (16, 23),\n", " (16, 48),\n", " (17, 6),\n", " (17, 12),\n", " (17, 13),\n", " (17, 15),\n", " (17, 27),\n", " (18, 26),\n", " (18, 35),\n", " (19, 2),\n", " (19, 11),\n", " (19, 18),\n", " (19, 26),\n", " (19, 31),\n", " (19, 45),\n", " (20, 16),\n", " (20, 23),\n", " (20, 24),\n", " (20, 51),\n", " (20, 54),\n", " (20, 55),\n", " (21, 16),\n", " (21, 29),\n", " (21, 40),\n", " (21, 42),\n", " (22, 2),\n", " (22, 8),\n", " (22, 26),\n", " (22, 48),\n", " (22, 51),\n", " (23, 0),\n", " (23, 2),\n", " (23, 12),\n", " (23, 21),\n", " (23, 48),\n", " (23, 52),\n", " (24, 0),\n", " (24, 1),\n", " (24, 16),\n", " (24, 55)],\n", " 'p': [(0, 35),\n", " (0, 43),\n", " (0, 44),\n", " (3, 20),\n", " (3, 46),\n", " (4, 1),\n", " (4, 28),\n", " (5, 1),\n", " (5, 51),\n", " (6, 7),\n", " (6, 35),\n", " (6, 49),\n", " (7, 43),\n", " (8, 27),\n", " (10, 53),\n", " (11, 30),\n", " (14, 44),\n", " (15, 15),\n", " (15, 23),\n", " (15, 45),\n", " (17, 0),\n", " (17, 1),\n", " (18, 12),\n", " (18, 14),\n", " (18, 49),\n", " (18, 54),\n", " (21, 34),\n", " (22, 1),\n", " (22, 16),\n", " (22, 39),\n", " (22, 46),\n", " (24, 3),\n", " (24, 15),\n", " (24, 52)],\n", " 'g': [(0, 38),\n", " (0, 47),\n", " (2, 23),\n", " (3, 10),\n", " (3, 19),\n", " (3, 44),\n", " (4, 13),\n", " (4, 30),\n", " (4, 46),\n", " (7, 2),\n", " (9, 8),\n", " (9, 20),\n", " (9, 47),\n", " (10, 30),\n", " (11, 4),\n", " (11, 33),\n", " (12, 54),\n", " (15, 31),\n", " (16, 49),\n", " (17, 44),\n", " (18, 5),\n", " (19, 23),\n", " (19, 52),\n", " (20, 6),\n", " (21, 12),\n", " (23, 42),\n", " (23, 45),\n", " (24, 23)],\n", " 'i': [(0, 14),\n", " (1, 2),\n", " (1, 31),\n", " (2, 1),\n", " (2, 22),\n", " (2, 36),\n", " (2, 43),\n", " (2, 52),\n", " (2, 53),\n", " (2, 54),\n", " (3, 11),\n", " (3, 13),\n", " (3, 23),\n", " (3, 25),\n", " (3, 37),\n", " (3, 43),\n", " (4, 0),\n", " (4, 25),\n", " (4, 36),\n", " (4, 45),\n", " (4, 54),\n", " (5, 15),\n", " (5, 19),\n", " (5, 20),\n", " (5, 45),\n", " (6, 0),\n", " (6, 3),\n", " (6, 6),\n", " (7, 16),\n", " (7, 20),\n", " (7, 40),\n", " (8, 11),\n", " (8, 48),\n", " (9, 3),\n", " (9, 5),\n", " (9, 26),\n", " (9, 35),\n", " (9, 53),\n", " (10, 1),\n", " (10, 8),\n", " (10, 14),\n", " (10, 28),\n", " (10, 37),\n", " (10, 40),\n", " (10, 55),\n", " (11, 2),\n", " (11, 12),\n", " (11, 23),\n", " (11, 32),\n", " (11, 44),\n", " (12, 10),\n", " (12, 13),\n", " (12, 14),\n", " (12, 49),\n", " (13, 0),\n", " (13, 5),\n", " (13, 10),\n", " (13, 12),\n", " (13, 22),\n", " (13, 28),\n", " (13, 29),\n", " (13, 48),\n", " (13, 53),\n", " (14, 6),\n", " (14, 9),\n", " (14, 35),\n", " (14, 37),\n", " (14, 47),\n", " (15, 0),\n", " (15, 2),\n", " (15, 3),\n", " (15, 4),\n", " (15, 6),\n", " (15, 8),\n", " (15, 13),\n", " (15, 19),\n", " (15, 29),\n", " (15, 37),\n", " (15, 42),\n", " (16, 7),\n", " (16, 27),\n", " (16, 33),\n", " (16, 41),\n", " (16, 52),\n", " (17, 3),\n", " (17, 9),\n", " (17, 14),\n", " (17, 16),\n", " (17, 32),\n", " (17, 45),\n", " (17, 51),\n", " (17, 55),\n", " (18, 9),\n", " (18, 13),\n", " (18, 16),\n", " (18, 25),\n", " (18, 28),\n", " (18, 29),\n", " (18, 37),\n", " (18, 47),\n", " (19, 15),\n", " (19, 32),\n", " (19, 34),\n", " (19, 49),\n", " (20, 2),\n", " (20, 9),\n", " (20, 10),\n", " (20, 42),\n", " (20, 50),\n", " (21, 7),\n", " (21, 13),\n", " (21, 19),\n", " (21, 50),\n", " (22, 5),\n", " (22, 31),\n", " (23, 38),\n", " (23, 39),\n", " (23, 41),\n", " (24, 20),\n", " (24, 24),\n", " (24, 44),\n", " (24, 47),\n", " (24, 49)],\n", " 't': [(0, 7),\n", " (0, 8),\n", " (0, 11),\n", " (0, 18),\n", " (0, 23),\n", " (0, 27),\n", " (0, 49),\n", " (1, 5),\n", " (1, 23),\n", " (1, 29),\n", " (1, 34),\n", " (1, 53),\n", " (2, 8),\n", " (2, 31),\n", " (3, 2),\n", " (3, 38),\n", " (3, 54),\n", " (4, 4),\n", " (4, 17),\n", " (5, 3),\n", " (5, 8),\n", " (5, 32),\n", " (5, 35),\n", " (5, 39),\n", " (5, 50),\n", " (6, 14),\n", " (6, 28),\n", " (6, 31),\n", " (6, 32),\n", " (6, 33),\n", " (6, 45),\n", " (7, 14),\n", " (7, 18),\n", " (7, 19),\n", " (7, 29),\n", " (7, 36),\n", " (7, 42),\n", " (8, 3),\n", " (8, 5),\n", " (8, 19),\n", " (8, 28),\n", " (8, 29),\n", " (8, 37),\n", " (9, 15),\n", " (9, 27),\n", " (9, 30),\n", " (9, 42),\n", " (10, 21),\n", " (10, 25),\n", " (10, 34),\n", " (10, 46),\n", " (10, 48),\n", " (10, 49),\n", " (11, 14),\n", " (11, 17),\n", " (11, 41),\n", " (12, 6),\n", " (12, 11),\n", " (12, 52),\n", " (13, 1),\n", " (13, 7),\n", " (13, 20),\n", " (13, 24),\n", " (14, 0),\n", " (14, 4),\n", " (14, 13),\n", " (14, 14),\n", " (14, 17),\n", " (14, 21),\n", " (14, 22),\n", " (14, 23),\n", " (14, 33),\n", " (14, 39),\n", " (14, 41),\n", " (14, 49),\n", " (15, 11),\n", " (15, 38),\n", " (15, 54),\n", " (16, 4),\n", " (16, 15),\n", " (16, 31),\n", " (17, 4),\n", " (17, 10),\n", " (17, 39),\n", " (17, 41),\n", " (17, 42),\n", " (17, 43),\n", " (17, 46),\n", " (18, 7),\n", " (18, 30),\n", " (18, 36),\n", " (18, 38),\n", " (19, 16),\n", " (19, 22),\n", " (19, 27),\n", " (19, 28),\n", " (19, 39),\n", " (20, 4),\n", " (20, 15),\n", " (20, 28),\n", " (20, 31),\n", " (20, 32),\n", " (20, 39),\n", " (20, 43),\n", " (21, 14),\n", " (21, 27),\n", " (21, 30),\n", " (21, 32),\n", " (21, 39),\n", " (21, 44),\n", " (22, 6),\n", " (22, 25),\n", " (22, 42),\n", " (23, 4),\n", " (23, 6),\n", " (23, 9),\n", " (23, 19),\n", " (23, 22),\n", " (23, 37),\n", " (23, 43),\n", " (23, 47),\n", " (23, 53),\n", " (24, 39)],\n", " 's': [(0, 20),\n", " (0, 25),\n", " (1, 6),\n", " (1, 14),\n", " (1, 28),\n", " (1, 54),\n", " (2, 0),\n", " (2, 7),\n", " (2, 17),\n", " (2, 32),\n", " (2, 41),\n", " (2, 42),\n", " (3, 6),\n", " (3, 16),\n", " (3, 17),\n", " (3, 26),\n", " (3, 47),\n", " (3, 48),\n", " (4, 11),\n", " (4, 20),\n", " (5, 2),\n", " (5, 27),\n", " (5, 34),\n", " (5, 41),\n", " (6, 1),\n", " (6, 8),\n", " (7, 1),\n", " (7, 27),\n", " (7, 30),\n", " (7, 34),\n", " (7, 44),\n", " (7, 52),\n", " (7, 55),\n", " (8, 8),\n", " (8, 14),\n", " (8, 55),\n", " (9, 6),\n", " (9, 23),\n", " (9, 38),\n", " (9, 44),\n", " (9, 48),\n", " (9, 55),\n", " (10, 9),\n", " (11, 20),\n", " (11, 21),\n", " (11, 36),\n", " (12, 1),\n", " (12, 15),\n", " (12, 41),\n", " (12, 50),\n", " (13, 44),\n", " (13, 46),\n", " (13, 52),\n", " (14, 26),\n", " (14, 36),\n", " (15, 1),\n", " (15, 7),\n", " (15, 14),\n", " (15, 18),\n", " (15, 34),\n", " (15, 43),\n", " (16, 17),\n", " (16, 42),\n", " (18, 3),\n", " (18, 6),\n", " (18, 19),\n", " (18, 20),\n", " (18, 27),\n", " (18, 31),\n", " (19, 4),\n", " (19, 7),\n", " (19, 10),\n", " (19, 14),\n", " (19, 33),\n", " (19, 41),\n", " (19, 51),\n", " (20, 20),\n", " (21, 11),\n", " (22, 11),\n", " (22, 14),\n", " (22, 15),\n", " (22, 33),\n", " (22, 34),\n", " (22, 36),\n", " (24, 9),\n", " (24, 34),\n", " (24, 41),\n", " (24, 43)]}" ] } ], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "solutions = [[p] for p in letter_positions['p']]\n", "for letter in 'has': #'haseeight':\n", " new_solutions = []\n", " for solution in solutions:\n", " used_columns = [p[1] for p in solution]\n", " for position in letter_positions[letter]:\n", " if position[1] not in used_columns:\n", " new_solutions += [solution + [position]]\n", " solutions = new_solutions\n", "len(solutions)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 24, "text": [ "17639131" ] } ], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 22 } ], "metadata": {} } ] }