Updated for challenge 9
[cipher-tools.git] / .ipynb_checkpoints / challenge6-checkpoint.ipynb
1 {
2 "metadata": {
3 "name": ""
4 },
5 "nbformat": 3,
6 "nbformat_minor": 0,
7 "worksheets": [
8 {
9 "cells": [
10 {
11 "cell_type": "code",
12 "collapsed": false,
13 "input": [
14 "%matplotlib inline\n",
15 "import matplotlib.pyplot as plt\n",
16 "\n",
17 "from cipherbreak import *\n",
18 "with open('2013/mona-lisa-words.txt') as f:\n",
19 " mlwords = [line.rstrip() for line in f]\n",
20 "mltrans = collections.defaultdict(list)\n",
21 "for word in mlwords:\n",
22 " mltrans[transpositions_of(word)] += [word]\n",
23 "c6a = open('2013/6a.ciphertext').read()\n",
24 "c6b = open('2013/6b.ciphertext').read()"
25 ],
26 "language": "python",
27 "metadata": {},
28 "outputs": [],
29 "prompt_number": 1
30 },
31 {
32 "cell_type": "code",
33 "collapsed": false,
34 "input": [
35 "c1a = open('2013/1a.ciphertext').read()\n",
36 "c1b = open('2013/1b.ciphertext').read()\n",
37 "c2a = open('2013/2a.ciphertext').read()\n",
38 "c2b = open('2013/2b.ciphertext').read()\n",
39 "c3a = open('2013/3a.ciphertext').read()\n",
40 "c3b = open('2013/3b.ciphertext').read()\n",
41 "c4a = open('2013/4a.ciphertext').read()\n",
42 "c4b = open('2013/4b.ciphertext').read()\n",
43 "c5a = open('2013/5a.ciphertext').read()\n",
44 "c5b = open('2013/5b.ciphertext').read()\n",
45 "\n",
46 "p1a = caesar_decipher(c1a, 8)\n",
47 "p1b = caesar_decipher(c1b, 14)\n",
48 "p2a = affine_decipher(c2a, 3, 3, True)\n",
49 "p2b = caesar_decipher(c2b, 6)\n",
50 "p3a = affine_decipher(c3a, 7, 8, True)\n",
51 "p3b = keyword_decipher(c3b, 'louvigny', 2)\n",
52 "p4a = keyword_decipher(c4a, 'montal', 2)\n",
53 "p4b = keyword_decipher(c4b, 'salvation', 2)\n",
54 "p5a = keyword_decipher(c5a, 'alfredo', 2)\n",
55 "p5b = vigenere_decipher(sanitise(c5b), 'florence')"
56 ],
57 "language": "python",
58 "metadata": {},
59 "outputs": [],
60 "prompt_number": 2
61 },
62 {
63 "cell_type": "code",
64 "collapsed": false,
65 "input": [
66 "plot_frequency_histogram(frequencies(sanitise(c6a)))"
67 ],
68 "language": "python",
69 "metadata": {},
70 "outputs": [
71 {
72 "output_type": "stream",
73 "stream": "stderr",
74 "text": [
75 "/home/neil/.virtualenvs/p3basic/lib/python3.3/site-packages/matplotlib/figure.py:372: UserWarning: matplotlib is currently using a non-GUI backend, so cannot show the figure\n",
76 " \"matplotlib is currently using a non-GUI backend, \"\n"
77 ]
78 },
79 {
80 "metadata": {},
81 "output_type": "display_data",
82 "png": "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\nTSKWQQ011FATHzEH0Y4dO3TVVVcpLy9PvXv31m233aaXXnqpK3tLE8EE1CRiGdRQQw018RFzEB05\nckRDhw5t/XzIkCE6cuRIlzQFAOg+Yg6ic6MvAADoJCdGf/3rX50ZM2a0fv7www87gUDggmnGjh3r\n6NxYQV68ePHi1c1fY8eOvWiexHwfUVNTk0aMGKFNmzbpy1/+siZNmqTVq1dr5MiRscwOANBN9Yq5\nsFcv/fKXv9SMGTPU3Nysb3zjG4QQAKDD4vpkBQAAouHJCkmitrZWRUVFCV9uVVWVHnvssbjNf+XK\nlSosLNT8+fPjMv/OrLepU6cmpK5///4xLQfxdezYMT311FOm24AIom4v3qMfn3rqKW3cuFG/+93v\n4rqcWGzbti0hdYwwjZ3jOHF7XmVDQ4OefPLJuMwbHUMQxcmcOXM0YcIEjR49Ws8++6yrmqamJt15\n550qLCzUvHnzdPr06ag1L7zwgsaOHavi4mJ97Wtfc7Wcn/70pxoxYoRKSkr03nvvuap58cUXNXny\nZHm9Xt17771qaWmJWnPvvffq/fff1w033KBf/OIXrpbz4x//WAUFBSopKdFXv/pVV0drzc3Nuuee\nezR69GjNmDFDZ86ccbWsWI9U4nGEU1tbq4KCAt11110aMWKE7rjjDr322muaOnWq8vPz9be//a3d\n2pEjR3Z4HfzsZz9TUVGRioqKtGLFCtc9dmQb/fy25vb7WVtbqxEjRsjv96uoqEiHDx+OWnPy5End\ndNNNKi4uVlFRkdasWRO1ZvHixfrXv/4lr9eryspKV319/uh7+fLleuihh9qtWbJkyQVhF+0MxKOP\nPqrHH39cknT//fertLRUkrR582bdeeedbdYtXbr0gu/hgw8+qJUrV7bb269+9St5vV55vV4NGzZM\n1113XbvTx1Wsw7fRvnA47DiO45w6dcoZPXq08/HHH7c7/cGDBx3Lspw33njDcRzHWbBggbN8+fJ2\na9555x0nPz+/dd7nl9met956yykqKnJOnz7tHD9+3Lnqqqucxx57rN2affv2OTNnznSampocx3Gc\n++67z3nhhReiLstxHCcvLy/qez9vx44dTnFxsXP27FmnsbHRGT58eNTeDh486PTq1cvZu3ev4ziO\nU1FR4bz44ouulte/f39X03W2zs3059/HO++847S0tDjjx493FixY4DiO47z00kvO7Nmzo9Z2ZB2c\n3w5OnTrlnDhxwhk1apSze/fuqD12ZBuNZVs7v5wePXo4b775ZtRpz1u7dq2zcOHC1s+PHTsWtaa2\nttYZPXq062UcPHjwgumXL1/uVFVVtVuze/duZ9q0aa2fFxYWOocPH25z+u3btzvz5s1zHMdxrrnm\nGmfy5MnOp59+6lRVVTnPPPNMm3W1tbXOuHHjHMdxnObmZufKK690tT9wHMf59NNPnZKSEmfdunWu\npo8HjojiZMWKFSouLtaUKVN0+PBh/eMf/4haM3ToUE2ZMkWSdOedd2rr1q3tTr9582ZVVFQoK+vc\n33XJzMyMuozXX39dc+fOVZ8+fZSRkaFZs2ZFPfWxadMm7dy5UxMmTJDX69XmzZt18ODBqMvqqG3b\ntmn27Nm65JJL1L9/f82cOdPVaZlhw4ZpzJgxkqTx48ertra2y3tLhGHDhmnUqFGyLEujRo3S9ddf\nL0kaPXp01PfU0XWwdetWzZ07V3379lW/fv00d+5cvf7661F77Mg2Gsu2dt4VV1yhSZMmuZpWksaM\nGaMNGzZo8eLF2rp1qzweT9Qat710RnFxsT788EPV1dVp7969yszM1ODBg9ucfty4cdq5c6caGxvV\np08fTZkyRW+99Za2bt2qkpKSNuuuuOIKZWdna8+ePXrttdc0btw4V/sDSfr2t7+t0tJS3XTTTR1+\nf10l5uHbaFswGNSmTZu0fft29enTR9OnT9fZs2ej1n3+WoLT+rdD2p++oz9M/1vjtt7v9+vhhx/u\n0LI6KtbevvSlL7V+3LNnT1enNJPR599Hjx49dMkll7R+3NTU5LrWzTq42Lp2cy2rI9torN9PSerX\nr5/raSVp+PDh2r17t1555RV9//vfV2lpqX7wgx90aB7R9OrV64JT0m63s3nz5mnt2rWqr6/Xbbfd\n1u60vXv31rBhw/Tcc8/p6quv1pgxY7R582b985//VEFBQbu1d999t1atWqVQKKQFCxa46u25557T\nBx98YPxaGUdEcXD8+HFlZmaqT58+2r9/v7Zv3+6q7tChQ63T/v73v2/3NyBJuu666/THP/5R4XBY\nklr/bc+1116r6upqnTlzRo2NjVq3bl3UHVBpaanWrl2rjz76qHU5hw4dcvOWOmTq1Kl6+eWXdfbs\nWZ04cUKvvPIKF/rjpKSkRNXV1Tp9+rROnjyp6urqqNub1LFtNJZtLVZ1dXXq06eP7rjjDn3ve9/T\nrl27otZkZGSosbHR9TJs29aHH36ocDiss2fPat26da7qbr31Vq1evVpr167VvHnzok5fUlKi5cuX\na9q0aSopKdHTTz+tcePGRa2bM2eO1q9fr7feekszZsyIOv3OnTv12GOPJcVAIo6I4uCGG27Q008/\nrcLCQo0YMaL1VEZ7LMvSiBEj9MQTT2jBggUaNWqU7rvvvnZrCgsL9eCDD2ratGnq2bOnxo0bp9/+\n9rft1ni9Xt16660aO3ascnJyXJ3+GDlypH7yk5+ovLxcLS0t6t27t5588kn93//9n6v35daECRM0\na9YsjRkzRrZtq6ioSJdddlmHl+F2mbHuFDtaF2s/n//czdFxR5bp9Xr19a9/vfX7v3DhQo0dOzZq\njx3ZRv93W5s4caLro6KOruO3335bDzzwQOuRpJth2dnZ2Zo6daqKiop04403Rv2bar1799YPf/hD\nTZo0SYMHD1ZhYaGrPgsLC3XixAkNGTJEtm1Hnb6kpEQPP/ywpkyZor59+6pv376ufkno3bu3rrvu\nOmVmZrrq64knnlBDQ4OmT58uSZo4caKeeeaZqHXxwA2tSConT55Uv379dOrUKU2bNk3PPvusiouL\nTbfV6uOPP07p61CdUVtbq5kzZ+rtt9+Oqf6hhx5S//799d3vfreLO4MktbS0aPz48Vq7dq2uvPJK\n0+10CKfmkFTuueceeb1ejR8/XrfccktShdB//vMfXX311XrggQdMt2JMZ0+tcao1Pvbt26fhw4fr\n+uuvT7kQkjgiAgAYxhERAMAogggAYBRBBAAwiiACABhFEAEAjCKIAABG/T+xw3Fhb8rTYQAAAABJ\nRU5ErkJggg==\n",
83 "text": [
84 "<matplotlib.figure.Figure at 0xaebe642c>"
85 ]
86 }
87 ],
88 "prompt_number": 3
89 },
90 {
91 "cell_type": "code",
92 "collapsed": false,
93 "input": [
94 "c6af = frequencies(sanitise(c6a))\n",
95 "plot_frequency_histogram(c6af, sort_key=lambda l: c6af[l])"
96 ],
97 "language": "python",
98 "metadata": {},
99 "outputs": [
100 {
101 "metadata": {},
102 "output_type": "display_data",
103 "png": "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\noRozZowkafz48XEdU1v7WbdunfLz8zV58mQdO3ZM//znP1ts/9JLL2nv3r2aMGGCvF6vduzYoSNH\njsRj+Jdw83ttztVXX62JEye22GbcuHHau3ev6urq1KtXL02ePFmvv/66du3apYKCgpj7bs7u3bs1\nd+5cXXHFFerbt69mz54d9THG8nzbsWOHSkpKlJZ24bOxUlNTXY/xO9/5jgoLCzVr1izXNW7l5+fr\ngw8+UHV1tQ4cOKDU1FQNGjSoxZqrr75a6enpeuONN/Tiiy9q3LhxUR/Prl27NH/+fPXu3Vt9+vTR\n/Pnz9fLLL0cd35AhQzR58mRJ0uLFi7Vr166E1IwZM0bbtm3TypUrtWvXLnk8nqg1iRDz8m0070tf\n+lLT/W7duumKK65oul9fXx+3fj7/2R5u3yw/O77u3bu7msLHorX9BINBvfTSS3r11VfVq1cvTZs2\nTefOnYvaj9/v1/3339/m8SZKnz59orbp2bOnhg4dqieffFLXXXedxowZox07duhf//qXcnJy4j6m\nWJ478ahx68knn9R7773n+rhcjx49Ltkl6+Y5vXDhQm3evFk1NTW65ZZbXPVz++23a8OGDQqFQlq2\nbFnU9pf7nbk5tvbZNomsGT58uPbv36/nn39eP/jBD1RYWKgf/vCHUevijRlRJ3bDDTeooqJCZ8+e\nVV1dnbZs2dKpDyCfOHFCqamp6tWrl95++229+uqrUWsKCwu1efNmffjhh5KkcDiso0ePxn1sKSkp\nqquri/t2P6ugoEDl5eWaOnWqCgoK9Nhjj2ncuHEJ6WvKlCl67rnndO7cOZ08eVLPP/981OdOLM+3\n6dOn609/+pPC4bAkNf3bkr1792rt2rWtWrBj27Y++OADhcNhnTt3Tlu2bIlas2jRIm3cuFGbN2/W\nwoULXfUzb948bd26Va+//rpmzpwZtX1BQYEqKip05swZnTp1ShUVFa5muEePHm16/v/hD39IWE11\ndbV69eql2267Td///ve1b9++qDWJwIwoAT7/4vzs19FeuK0JEq/Xq0WLFmns2LHKyMjQtdde6/qv\n1Fj7bEvbaLU33nijHnvsMeXm5mrEiBFNuxlaMnLkSP30pz9VcXGxGhsb1bNnTz3yyCP6yle+0urx\ntSQ9PV1TpkxRXl6ebrrpplZ9/pbbfgoKCnT//fdr8uTJ6t27t3r37t2q3XKteTwTJkzQnDlzNGbM\nGNm2rby8PPXr16/Fms8/36LtbpSk3Nxc3XvvvZo6daq6d++ucePG6Xe/+12LNQ8//LBqa2s1bdo0\nSdK1116rxx9/vMWanj176kc/+pEmTpyoQYMGKTc3N+rvIzc3VydPntTgwYNl23bUx3Kxn+nTpys1\nNdXV79vr9eob3/hG0+9q+fLlGjt2bNS6ESNG6OGHH9ayZcs0atQo3XXXXS22tyyr1TWSdPDgQd1z\nzz1Ne25MnaLACa1J5L777lPfvn31ve99LyHb//jjjxN6TAnt69SpU+rTp49Onz6tqVOn6oknnlB+\nfr7pYXVojY2NGj9+vDZv3qxhw4YlpI+qqirNnj1bBw8eTMj2OyJ2zSWZRO2a++9//6vrrrtO99xz\nT0K2j/Z3xx13yOv1avz48VqwYAEhFMWhQ4c0fPhwzZgxI2EhdFFn3sUeC2ZEAACjmBEBAIwiiAAA\nRhFEAACjCCIAgFEEEQDAKIIIAGDU/wAb7nFhOTPwsAAAAABJRU5ErkJggg==\n",
104 "text": [
105 "<matplotlib.figure.Figure at 0xae9d774c>"
106 ]
107 }
108 ],
109 "prompt_number": 4
110 },
111 {
112 "cell_type": "code",
113 "collapsed": false,
114 "input": [
115 "plot_frequency_histogram(normalised_english_counts, sort_key=lambda l: normalised_english_counts[l])"
116 ],
117 "language": "python",
118 "metadata": {},
119 "outputs": [
120 {
121 "metadata": {},
122 "output_type": "display_data",
123 "png": "iVBORw0KGgoAAAANSUhEUgAAAawAAAEkCAYAAABzKwUZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHx5JREFUeJzt3X9QVXX+x/HXNSgLpNQxG++lUCF+KF5QkFHXpGwXtXTM\ntJg03aQidx23xmprahNn+1ZMuptGP7CZtXHb3B/ujrjKMq26d0ZLl0zsx6CNFtQFw9rMwF8E18/3\nD4siL+deEMSPPB8zZ7zH8z6f+zmHw33xOefce13GGCMAAM5zvbq7AwAAhIPAAgBYgcACAFiBwAIA\nWIHAAgBYgcACAFghZGCVlZUpKSlJCQkJKiwsPGP5vn37NGbMGPXu3VvLly8/Y3kgEFB6erqmTp3a\nOT0GAPRIEU4LA4GAFi5cqM2bN8vtdiszM1PTpk1TcnJyS03//v31/PPPa/369UHbWLFihVJSUtTQ\n0NC5PQcA9CiOI6zy8nLFx8crLi5OkZGRys3NVUlJSauaAQMGKCMjQ5GRkWesX1NTo9LSUt19993i\n/ckAgLPhGFi1tbWKjY1tmfd4PKqtrQ278QceeEDPPvusevXiUhkA4Ow4JonL5epwwxs3btSVV16p\n9PR0RlcAgLPmeA3L7XbL7/e3zPv9fnk8nrAafuutt7RhwwaVlpbq5MmTqq+v19y5c7VmzZpWdWlp\naXr33Xc70HUAwIXG6/Vqz549wRcaB01NTWbIkCGmqqrKNDY2Gq/XayorK4PWLlmyxCxbtizoMp/P\nZ26++eagy0J0wXpLliyh9jzqB7Xtrz1f+kFtx+tt4pQJjiOsiIgIFRUVKScnR4FAQHl5eUpOTlZx\ncbEkKT8/X3V1dcrMzFR9fb169eqlFStWqLKyUtHR0a3aOpvTiwAAOAaWJE2ePFmTJ09u9X/5+fkt\nj6+66qpWpw2DmTBhgiZMmNDBLgIAIF1UUFBQ0J0dWLp0qbq5C10uLi6O2vOoH9S2v/Z86Qe1Ha+3\nhVMmuL49Z9htXC4XdxECACQ5ZwJvkAIAWIHAAgBYgcACAFiBwAIAWIHAAgBYgcACAFiBwAIAWIHA\nAgBYgcACAFiBwAIAWIHAAgBYgcACAFiBwAIAWIHAAgBYgcACAFiBwAIAWIHAAgBYgcACAFiBwAIA\nWIHAAgBYgcACAFiBwAIAWIHAAgBYgcACAFiBwAIAWIHAAgBYIazAKisrU1JSkhISElRYWHjG8n37\n9mnMmDHq3bu3li9f3vL/fr9f119/vYYNG6bhw4dr5cqVnddzAECP4jLGGKeCQCCgxMREbd68WW63\nW5mZmVq7dq2Sk5Nbar744gt98sknWr9+vfr27avFixdLkurq6lRXV6e0tDQdPXpUo0aN0vr161ut\n63K5FKILAIAewikTQo6wysvLFR8fr7i4OEVGRio3N1clJSWtagYMGKCMjAxFRka2+v+rrrpKaWlp\nkqTo6GglJyfr4MGDHd0OAEAPFjKwamtrFRsb2zLv8XhUW1vb7ieqrq5WRUWFsrKy2r0uAPRUMTH9\n5HK5HKeYmH7d3c1zIiJUgcvlOusnOXr0qGbOnKkVK1YoOjr6rNsDgJ6ioeErSc6XTRoazv512gYh\nA8vtdsvv97fM+/1+eTyesJ+gqalJt956q+bMmaPp06cHrSkoKGh5nJ2drezs7LDbBwDYy+fzyefz\nhVUb8qaL5uZmJSYmasuWLRo0aJBGjx59xk0X3ykoKFCfPn1abrowxmjevHnq37+/fv/73wfvADdd\nAECbTp/lCvUaeeG8jjplQsjAkqR//etfuv/++xUIBJSXl6dHH31UxcXFkqT8/HzV1dUpMzNT9fX1\n6tWrl/r06aPKykrt2bNH1113nUaMGNFyavHpp5/WpEmTwuocAPR0BNYPloUTWF2JwAKAthFY3+OT\nLgAAViCwAABWILAAAFYgsAAAViCwAABWILAAAFYgsAAAViCwAABWILAAAFYgsAAAViCwAABWILAA\nAFYgsAAAViCwAABWILAAAFYgsAAAViCwAABWILAAAFYgsAAAViCwAABWILAAAFYgsAAAViCwAABW\nILAAAFYgsAAAViCwAABWILAAAFYgsAAAVggZWGVlZUpKSlJCQoIKCwvPWL5v3z6NGTNGvXv31vLl\ny9u1LgAA4XIZY0xbCwOBgBITE7V582a53W5lZmZq7dq1Sk5Obqn54osv9Mknn2j9+vXq27evFi9e\nHPa6kuRyueTQBQDo0Vwul6RQr5EXzuuoUyY4jrDKy8sVHx+vuLg4RUZGKjc3VyUlJa1qBgwYoIyM\nDEVGRrZ7XQAAwuUYWLW1tYqNjW2Z93g8qq2tDavhs1kXAIAfcwys00PRjjmbdQEA+LEIp4Vut1t+\nv79l3u/3y+PxhNVwe9YtKChoeZydna3s7OywngMAYDefzyefzxdWreNNF83NzUpMTNSWLVs0aNAg\n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\n1CkzatQoM3/+fGOMMSUlJWb69OlntP/dz+47y5YtMwUFBY7bGM6x095js6qqyvTq1cv897//Ddn2\nunXrzD333NMy//XXXzu2GxERYd59911jjDG33Xabee2118669jvh7Atjvj8Ojh8/boYPH97msfTd\nfjt+/Lg5evSoGTZsmKmoqGiz3erq6lY/v7ZUVlaaqVOnmubmZmOMMQsWLDBr1qwJq+8XCkZYXWzR\nokWaOHGibrrppqDLt23bphkzZqh3797q06ePpk2b1qmnUp544gm98cYb2rVrlx5++GHH2s8//1zT\np0/X66+/7njNIC0tTZ9//rk+++wzvfvuu+rbt6/cbneb9bGxsRozZowkac6cOdq+fftZ17755pua\nPn26Lr74YkVHR2vq1Kmdtt+2bt2q2267Tf36nX6Td9++fYPWXXPNNerfv7/27NmjN954QyNHjgxa\n+91otaGhQb1799aYMWO0a9cubd++XePHjz+jfvDgwRo2bJhcLpeGDRumG2+8UZI0fPhwVVdXd8o2\nhqMjx+Y111yj0aNHh2x7xIgR+ve//61HHnlE27dvV0xMjGP94MGDNWLECEnSqFGjHPdDe2rbY8WK\nFUpLS9OYMWNUU1Oj/fv3B63bvn27ZsyYoUsvvVRRUVGaMWOGtm3b1ma74R63W7Zs0TvvvKOMjAyl\np6dr69atqqqq6tC22MrxtnacnVdffVV+v9/x/LTL5Wp1wHZmWEnS//73Px07dkyBQEAnTpzQZZdd\n1mbtFVdcoWuuuUbbtm1TUlKSY7uzZs3SunXrVFdXp9zcXMfaH177MMY4XgsJt7Yr99uP23Zy9913\na/Xq1Tp06JDmz58ftCYyMlKDBw/Wq6++qrFjx2rEiBHaunWrDhw4EHQ/X3LJJS2Pe/XqpYsvvrjl\ncXNz8xn1ERERrU4NOZ1GbY+O7OOoqKiw2k5ISFBFRYU2bdqkxx9/XBMnTtRvfvObNut/uE8uuugi\nx21sT224fD6ftmzZop07d6p37966/vrr1djYGLQ22H7ryDXDYObNm6ennnqqU9qyESOsLvLOO+9o\n+fLlIS/wX3fddVq/fr1OnjyphoYGbdy4sdMObun0e+WefPJJ3XHHHSHPj1988cX6xz/+oTVr1gR9\nk/cP3X777Vq7dq3WrVunWbNmOdZ++umn2rlzpyTp9ddfDzqqaG/tuHHj9M9//lONjY06evSoNm3a\n1Gn77YYbbtDf/vY3HT58WJJa/g3mlltuUVlZmXbt2qWcnJw268aPH69ly5ZpwoQJGj9+vF5++WWN\nHDmyU/o7cOBAff755zp8+LAaGxu1cePGTmm3K4/Nzz77TL1799bs2bP14IMPavfu3Z3Sblepr69X\n37591bt3b+3bt6/lGA1m/PjxWr9+vU6cOKFjx45p/fr1jsd8nz591NDQELIPEydO1Lp16/TFF19I\nOn1cfvrpp+3fGIsxwuoiL7zwgr766itdf/31kqTMzEytWrXqjLr09HTdfvvt8nq9uvLKK5WZmRn2\nX/ehXjzWrFmjSy65RLm5uTp16pTGjh0rn8+n7OzsNtu77LLLtHHjRv30pz9Vnz59dPPNNwetTUlJ\n0dGjR+XxeDRw4EDHPiYmJuqFF17Q/PnzNWzYMC1YsKDN+nBrMzIyNG3aNI0YMUIDBw5UamqqLr/8\n8rZ3hsK/yy0lJUWPPfaYJkyYoIsuukgjR47UH/7wh6C1kZGRuuGGG9S3b1/H9sePH6+nnnpKY8aM\n0aWXXqpLL720zRexH7fzw/lgzxEZGaknnnhCo0ePltvtVkpKSshtDWdf/PjYDOdUX7j7+P3339dD\nDz3UMoIMdVu30z45m9pwlkvSpEmT9PLLLyslJUWJiYktp62DSU9P189//vOW/XXPPffI6/W2Wd+/\nf3+NGzdOqampmjJlSpvfHZicnKwnn3xSP/vZz3Tq1ClFRkbqxRdf1NVXXx2y/xcK3jh8nlm6dKmi\no6O1ePFix7ovv/yyU8/Pnw+qq6s1depUvf/++2HVHzt2TFFRUTp+/LgmTJigV155RWlpaV3cy9ZO\nnTqlUaNGad26dRo6dOg5fW6gp+GU4Hko1F98Bw8e1NixY/XQQw+dox6dO+055XTvvfcqPT1do0aN\n0syZM895WFVWViohIUE33ngjYQWcA4ywAABWYIQFALACgQUAsAKBBQCwAoEFALACgQUAsAKBBQCw\nwv8DbMnA/BWkp54AAAAASUVORK5CYII=\n",
124 "text": [
125 "<matplotlib.figure.Figure at 0xaea2d2cc>"
126 ]
127 }
128 ],
129 "prompt_number": 5
130 },
131 {
132 "cell_type": "code",
133 "collapsed": false,
134 "input": [
135 "c6bf = frequencies(sanitise(c6b))\n",
136 "plot_frequency_histogram(c6bf, sort_key=lambda l: c6bf[l])"
137 ],
138 "language": "python",
139 "metadata": {},
140 "outputs": [
141 {
142 "metadata": {},
143 "output_type": "display_data",
144 "png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEkCAYAAAB6wKVjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGFFJREFUeJzt3XtQVOf9x/HPKhiNQIPpuLZgxYkIrqywanDUUFFAM01l\n0FS8JjSYpLHtdNrmUpuLQpsqmWqnmsZcHJtgnWit06I1U4dGf5tRW4tatWao1TbSCCLGoBHReOP8\n/qCut73CIg/wfs3sCLvf85xnzy778Tl7znNslmVZAgDAMN3auwMAAHhDQAEAjERAAQCMREABAIxE\nQAEAjERAAQCM5Degjh07pvHjx2vo0KFKSUnR8uXLJUn19fXKycnR4MGDNXHiRJ05c8azzOLFi5WY\nmKjk5GSVl5e3be8BAJ2Wzd95UCdOnNCJEyeUlpamc+fOacSIESorK9Pbb7+tL37xi3ruuef0yiuv\n6PTp0yopKVFlZaVmzZql3bt3q6amRtnZ2Tp8+LC6dWOgBgAIjd/k6Nevn9LS0iRJUVFRGjJkiGpq\narRp0yYVFBRIkgoKClRWViZJ2rhxo2bOnKnIyEglJCRo0KBBqqioaOOnAADojIIe2lRVVWnfvn0a\nNWqU6urqZLfbJUl2u111dXWSpOPHjys+Pt6zTHx8vGpqasLcZQBAVxBUQJ07d04PP/ywli1bpujo\n6Jses9lsstlsPpf19xgAAL5EBCq4fPmyHn74YT3yyCPKy8uT1DxqOnHihPr166fa2lr17dtXkhQX\nF6djx455lq2urlZcXNxtbaalpenAgQPheg4AgA4sNTVV+/fvv+1+vyMoy7I0d+5cORwOff/73/fc\nn5ubq9LSUklSaWmpJ7hyc3O1bt06Xbp0SUePHtWRI0eUnp5+W7sHDhyQZVmd8rZw4cI2qW3Ltqnl\n9ejotab0w4TajnjzNWDxO4LauXOn1qxZo2HDhsnlcklqPox8/vz5ys/P16pVq5SQkKD169dLkhwO\nh/Lz8+VwOBQREaEVK1awiw8A0CJ+A+qBBx5QU1OT18fef/99r/c///zzev7551vfMwBAl9a9qKio\n6E6vtLi4WO2w2jsmISGhTWrbsm1qQ681pR/UmtUPE2o7Gl+Z4PdE3bZis9nUDqsFABjIVyYwxQMA\nwEgEFADASAQUAMBIBBQAGCYmpo9nlh5ft5iYPu3dzTbHQRIAYJjm80cDfUZ2ns9RDpIAAHQoBBQA\nwEgEFADASAQUAMBIBBQAwEgEFADASAQUAMBIBBQAwEgEFADASAQUAMBIBBQAwEgEFADASAQUAMBI\nBBQAwEgEFADASAQUAMBIBBQAwEgEFADASAQUAMBIBBQAwEgEFADASAQUAMBIBBQAwEgEFADASAQU\nAMBIBBQAwEgEFADASAQUAMBIBBQAwEgEFADASAQUAMBIBBQAwEgEFADASAQUAMBIBBQAwEgEFADA\nSAQUAMBIBBQAwEgEFADASAQUAMBIBBQAwEgEFADASAQUAMBIBBQAwEgEFADASAQUAMBIBBQAwEgE\nFADASAQUAMBIAQOqsLBQdrtdTqfTc19RUZHi4+Plcrnkcrn0pz/9yfPY4sWLlZiYqOTkZJWXl7dN\nrwEAnZ7NsizLX8H27dsVFRWlRx99VAcPHpQkFRcXKzo6Wj/84Q9vqq2srNSsWbO0e/du1dTUKDs7\nW4cPH1a3bjfnoM1mU4DVAkCXZbPZJAX6jOw8n6O+MiHgCCojI0OxsbG33e+tsY0bN2rmzJmKjIxU\nQkKCBg0apIqKihZ2GQDQlbX4O6hXX31Vqampmjt3rs6cOSNJOn78uOLj4z018fHxqqmpaX0vAQBd\nTkRLFpo3b54WLFggSXrppZf09NNPa9WqVV5rm4eqtysqKvL8nJmZqczMzJZ0BQDQwbjdbrnd7oB1\nLQqovn37en5+/PHHNXnyZElSXFycjh075nmsurpacXFxXtu4MaAAAF3HrYOS4uJir3Ut2sVXW1vr\n+fkPf/iD5wi/3NxcrVu3TpcuXdLRo0d15MgRpaent2QVANCpxMT0kc1m83mLienT3l00TsAR1MyZ\nM/XBBx/o1KlT6t+/v4qLi+V2u7V//37ZbDYNHDhQb775piTJ4XAoPz9fDodDERERWrFihc9dfADQ\nlTQ0nJa/I/MaGvisvFXAw8zbZKUcZg6giwl86Pj1z0UOM2/GTBIAACMRUAAAIxFQAAAjEVAAACMR\nUAAAIxFQAAAjEVAAACMRUAAAIxFQAAAjEVAAACMRUAAAIxFQAAAjEVAAACMRUAAAIxFQAAAjEVAA\nACMRUAAAIxFQAAAjEVAAACMRUAAAIxFQAAAjEVAAACMRUAAAIxFQAAAjEVAAACMRUAAAIxFQAAAj\nEVAAACMRUAAAIxFQAAAjEVAAACMRUAAAIxFQAAAjEVAA0AIxMX1ks9n83mJi+rR3Nzs0m2VZ1h1f\nqc2mdlgtAISNzWaTFOhz7PpnXeD6UGpvru/ofGUCIygAgJEIKACAkQgoAICRCCgAgJEIKACAkQgo\nAICRCCgAgJEIKACAkQgoAPgfZocwCzNJAMD/hDKDAzNJhA8zSQAAOhQCCkCnxm67jouAAtDhhBI6\nDQ2n1by7zPetuQam4TsoAB1OW31XxHdQ7YPvoAAYjV1xuFVEe3cAAKQbd8X5q7Hdmc7ACIygAABG\nIqAAAEYioAAARiKgAABGIqAAAEYKGFCFhYWy2+1yOp2e++rr65WTk6PBgwdr4sSJOnPmjOexxYsX\nKzExUcnJySovL2+bXgMAOr2AAfXYY49py5YtN91XUlKinJwcHT58WFlZWSopKZEkVVZW6re//a0q\nKyu1ZcsWffvb31ZTU1Pb9BwA0KkFDKiMjAzFxsbedN+mTZtUUFAgSSooKFBZWZkkaePGjZo5c6Yi\nIyOVkJCgQYMGqaKiog26DQDo7Fr0HVRdXZ3sdrskyW63q66uTpJ0/PhxxcfHe+ri4+NVU1MThm4C\nALqaVs8kcW0KEn+Pe1NUVOT5OTMzU5mZma3tCgCgA3C73XK73QHrWhRQdrtdJ06cUL9+/VRbW6u+\nfftKkuLi4nTs2DFPXXV1teLi4ry2cWNAAQC6jlsHJcXFxV7rWrSLLzc3V6WlpZKk0tJS5eXlee5f\nt26dLl26pKNHj+rIkSNKT09vySoAAF1cwBHUzJkz9cEHH+jUqVPq37+/fvKTn2j+/PnKz8/XqlWr\nlJCQoPXr10uSHA6H8vPz5XA4FBERoRUrVvjd/QcAgC9cDwqAEUy4bhPXg2ofXA8KANChEFAAACMR\nUAAAIxFQANoMl3FHa3DJdwBthsu4ozUYQQEAjERAAQCMREABAIxEQAEAjERAAQCMREABAIxEQAEA\njERAAQCMREABAIxEQAEAjERAAQgJ8+vhTmEuPgAhYX493CmMoAAARiKgAABGIqAAAEYioAAARiKg\nAABGIqAAAEYioAAARiKgAABGIqAAAEYioAAARiKgAABGIqAAAEYioAAARiKgAABGIqAAAEYioAAA\nRiKgAABGIqAAcBl3GIlLvgPgMu4wEiMoAICRCCgAgJEIKACAkQgoAICRCCgAgJEIKACAkQgoAICR\nCCgAgJEIKACAkQgoAICRCCgAgJEIKACAkQgoAICRCCgAgJEIKACAkQgoAICRCCiggwj1qreB6rlC\nLkxnsyzL/2U022KlNpvaYbVAh2az2RToqrfS9b+twPWh1F6vpzb0WqntXo/OwFcmMIICABiJgAIA\nGCmiNQsnJCQoJiZG3bt3V2RkpCoqKlRfX6/p06frv//9rxISErR+/Xrdc8894eovAKCLaNUIymaz\nye12a9++faqoqJAklZSUKCcnR4cPH1ZWVpZKSkrC0lEAQNfS6l18t36xtWnTJhUUFEiSCgoKVFZW\n1tpVAAC6oFaPoLKzszVy5EitXLlSklRXVye73S5Jstvtqqura30vAQBdTqu+g9q5c6e+9KUv6ZNP\nPlFOTo6Sk5Nvevza+RbeFBUVeX7OzMxUZmZma7oCAOgg3G633G53wLqwnQdVXFysqKgorVy5Um63\nW/369VNtba3Gjx+vQ4cO3bxSzoMCJDWfTNvQcNpvTXR0rM6erTfmvBtqOQ8q3MJ+HtT58+fV0NAg\nSWpsbFR5ebmcTqdyc3NVWloqSSotLVVeXl5LVwF0es3hZPm9BQowoLNq8S6+uro6TZkyRZJ05coV\nzZ49WxMnTtTIkSOVn5+vVatWeQ4zBwAgVEx1BLSjjrhLiVqzXo/OgKmOAAAdCgEFADASAQUAMBIB\nBQAwEgEFADASAQWEWahXvgXgXaumOgJwu+sn3/qr8T4FGIDrGEEBAIxEQAEAjERAAQCMREABAIxE\nQAEAjERAAQCMREABAIxEQKHLCuWEWk6+Be48TtRFlxXKCbWcfAvceYygAABGIqAAAEYioAAARiKg\nAABGIqBgPI62A7omAgrtIpQguX4Ene9bc01otQDMxmHmaBcctg0gEEZQAAAjEVAAACMRUAAAIxFQ\nAAAjEVAAACMRUAAAIxFQAAAjEVAAACMRUAAAIxFQAAAjEVAIm0Dz6zFJK4BQMBcfwibQ/HrMrQcg\nFIygAABGIqAAAEYioAAARiKgAABGIqAAAEYioAAARiKgAABGIqAAAEYioAAARiKg4FOgqYuYvghA\nW2KqI/gUaOqi5hqmLwLQNhhBAQCMREABAIxEQHUxfK8EoKPgO6guhu+VAHQUjKAAAEYioAAARiKg\nAABGIqAAAEYioAAARmqTgNqyZYuSk5OVmJioV155pS1WgRtw6DiAzijsAXX16lV997vf1ZYtW1RZ\nWam1a9fqn//8Z7hXYyy32+3zsVCCJJTa64eO33j7v5t+b67x2etQniG1bd42taHXtmXbHa228wh7\nQFVUVGjQoEFKSEhQZGSkZsyYoY0bN4Z7NcbyF1C3B8lC3Ros14LEe+gs9Frroyeh9JrakGvbsm1q\nQ69ty7Y7Wm3nEfaAqqmpUf/+/T2/x8fHq6amJtyrAQB0cmEPKJuta81CcOuuuOLiYr7/AYBwsMLs\nr3/9qzVp0iTP74sWLbJKSkpuqklNTb113xU3bty4ceuit9TUVK95YrMsy1IYXblyRUlJSdq6dau+\n/OUvKz09XWvXrtWQIUPCuRoAQCcX9sliIyIi9Ktf/UqTJk3S1atXNXfuXMIJABCysI+gAAAIB2aS\naGdjx45tl/VWVVXJ6XR2uLY7u+XLl8vhcOiRRx4JepmioiItXbo0rP2IiooKWGPS69xef0ct8dln\nn+n1119v7250CARUO9u5c2d7dwEGef311/X+++/rN7/5TdDLtMWRsyYdjWtZlgLt6OlIf0enT5/W\nihUr2rsbHQIBFSZvvvmmXC6XXC6XBg4cqAkTJgS1XDD/U/3Zz36mpKQkZWRkaNasWT7/t7x7926l\npqbq4sWLamxsVEpKiiorKwO2/9FHH2n48OHau3ev18d//OMf3/QHFcz/2K9cuaI5c+bI4XBo2rRp\nunDhwm01Cxcu1LJlyzy/v/DCC1q+fPltdVVVVUpOTtZjjz2mpKQkzZ49W+Xl5Ro7dqwGDx6s3bt3\ne+3D6tWrlZqaqrS0ND366KN++/vTn/5UycnJfrfxz3/+c7366quSpB/84AfKysqSJG3btk1z5szx\n2e9A2+Gap556Sh999JEefPBB/fKXv/Tb3xvfE//617/81t460lmyZImKi4v9LhOsq1ev6sknn1RK\nSoomTZqkzz//3GtdY2OjHnroIaWlpcnpdGr9+vUB+5yUlKSCggI5nU5VV1f7rQ/m70iSfvGLX8jp\ndMrpdN703vO2/iFDhgT13K6ZMmWKRo4cqZSUFK1cudJn3fz58/Wf//xHLpdLP/rRjwL2ec2aNRo1\napRcLpeeeuopNTU1BVym0wj3YeZd3eXLl62MjAxr8+bNQdVHRUX5fXzPnj2W0+m0Lly4YJ09e9Ya\nNGiQtXTpUp/1L774ovXMM89Y3/nOd247vP9GR48etVJSUqxDhw5ZLpfL+sc//uGzdt++fda4ceM8\nvzscDqu6utpv2zabzfrLX/5iWZZlFRYWWkuWLLmtrqqqyho+fLhlWZZ19epV67777rPq6+u9thcR\nEWF9+OGHVlNTkzVixAirsLDQsizL2rhxo5WXl3fbMh9++KE1ePBg69NPP7Usy/La7jUVFRVWWlqa\ndfHiRauhocFKTEz0uo137dplTZs2zbIsy3rggQesUaNGWZcvX7aKioqst956q8Xb4UYJCQmePvsS\n6nvi2mt9zZIlS6yioiK/6wj0vrzWbkREhHXgwAHLsiwrPz/fWrNmjdfaDRs2WE888YTn988++yxg\n2926dbP+9re/BexHsP29tt3Onz9vnTt3zho6dKi1b98+n+sP9rldc+09dv78eSslJcXn61hVVXXT\n6+FPZWWlNXnyZOvKlSuWZVnWvHnzrNWrVwe1bGfACCrMvve97ykrK0sPPfRQWNrbvn27pk6dqp49\neyo6Olq5ubl+d3csWLBA5eXl2rNnj5577jm/bZ88eVJ5eXl69913/X6XkJaWppMnT6q2tlYHDhxQ\nbGys4uLi/Lbdv39/jR49WpI0Z84c7dix47aaAQMG6N5779X+/ftVXl6u4cOHKzY21mt7AwcO1NCh\nQ2Wz2TR06FBlZ2dLklJSUlRVVXVb/bZt25Sfn68+fZpPkvbVrtS8eygvL089evRQVFSUJk+e7HUb\nXxtlNjQ0qGfPnho9erT27NmjHTt2KCMjo8XbIVShvifa0sCBAzVs2DBJ0ogRI7y+FpI0bNgw/fnP\nf9b8+fO1Y8cOxcTEBGx7wIABSk9PD1tfd+zYoalTp6pXr17q3bu3pk6dqu3bt/usD/a5XbNs2TKl\npaVp9OjRqq6u1pEjR7zWhfJabd26VXv37tXIkSPlcrm0bds2HT16NOjlO7qwH2belb3zzjs6duxY\nWPcv22y2m97Qgd7cp06dUmNjo65evaoLFy7o7rvv9ll7zz33aMCAAdq+fbuSk5P9tjtt2jRt2LBB\nJ06c0IwZM4Lq94199vWdxuOPP663335bdXV1Kiws9NneXXfd5fm5W7du6tGjh+fnK1eueF1/sB8E\nwW7jyMhIDRw4UO+8847GjBmjYcOGadu2bfr3v//tc/sFux1CEep7IiIi4qbdQv52M4bqxtele/fu\nPttOTEzUvn379N577+nFF19UVlaWXnrpJb9t9+7dO2z9lLxvN3+vR7DPTWqeg3Pr1q3atWuXevbs\nqfHjx+vixYth6XdBQYEWLVoUlrY6GkZQYbJ3714tXbo0pC+3g/HVr35VZWVl+vzzz9XQ0KDNmzf7\n/aP61re+pZdfflmzZs0KuH+7R48e+v3vf6/Vq1dr7dq1fmunT5+utWvXasOGDZo2bVrAfn/88cfa\ntWuXJOndd9/1OcKYMmWKtmzZoj179mjSpEkB2w3WhAkT9Lvf/U719fWS5PnXm7Fjx+qPf/yjLl68\nqHPnzum9997zuY0zMjK0ZMkSjRs3ThkZGXrjjTc0fPhwn20Hux1CEep7wm636+TJk6qvr9fFixe1\nefPmVvchVLW1terZs6dmz56tZ555Rn//+9/veB8yMjJUVlamCxcuqLGxUWVlZWF5PSTp7Nmzio2N\nVc+ePXXo0CHPa+5NdHS0Ghoagmo3KytLGzZs0CeffCKp+X388ccfh6XPHQEjqDB57bXXdPr0aY0f\nP16SdP/99+utt94KuFyg/1G7XC5Nnz5dqamp6tu3r+6//36f/2NevXq17rrrLs2YMUNNTU0aM2aM\n3G63MjMzfa777rvv1ubNm5WTk6Po6Gh9/etf91rrcDh07tw5xcfHy263B3xOSUlJeu2111RYWKih\nQ4dq3rx5XmsjIyM1YcIExcbG+t0Wtz524+/elnM4HHrhhRc0btw4de/eXcOHD9evf/1rr22PHDlS\nubm5GjZsmOx2u5xOp77whS94rc3IyNCiRYs0evRo9erVS7169fL7IRfsdvD3XG5163si0G6wyMhI\nLViwQOnp6YqLi5PD4Qi4nmBHev5elxsdPHhQzz77rGf0G8xh1qGMNoPdbt/85jc92+uJJ55Qampq\n0G36W8eDDz6oN954Qw6HQ0lJSZ7dut7ce++9Gjt2rJxOp772ta/5vWbekCFD9PLLL2vixIlqampS\nZGSkVqxYoa985Ss+l+lMOFG3HX366adB7du+UXFxsaKiovT000+3XcfuoKamJo0YMUIbNmzQfffd\n1279aGxsVO/evXX+/HmNGzdOK1euVFpaWqvarKqq0uTJk3Xw4MEw9RLoWtjF106OHz+uMWPG6Nln\nnw15WZPOUWmNyspKJSYmKjs7u13DSZKefPJJuVwujRgxQt/4xjdaHU7XdJbXCmgPjKAAAEZiBAUA\nMBIBBQAwEgEFADASAQUAMBIBBQAwEgEFADDS/wNGdtm/BfKkMwAAAABJRU5ErkJggg==\n",
145 "text": [
146 "<matplotlib.figure.Figure at 0xaea3550c>"
147 ]
148 }
149 ],
150 "prompt_number": 6
151 },
152 {
153 "cell_type": "code",
154 "collapsed": false,
155 "input": [
156 "plot_frequency_histogram(c6bf)"
157 ],
158 "language": "python",
159 "metadata": {},
160 "outputs": [
161 {
162 "metadata": {},
163 "output_type": "display_data",
164 "png": "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\nW7duVVVVldatW6d//etfoZ6Nwdxhqg3ntLtObfv+aLSmh9bWm13bccstXLXhnLb32s9PU7j+8Zcb\nfr9a0/4e3O7ga7uSkAdUZWWlhgwZoqSkJEVHR2vWrFnatGlTqGdjMHeYasM57a5Te+sfjRd08x8R\n3380WtNDa+vNru245Rau2nBOu/NrCagQqaur08CBAz2/JyYmqq6uLtSzAQB0cSEPKJuNM+8BoD1u\n3uRaUlLSPfdvWSH2t7/9zZo6darn98WLF1ulpaU31KSnp9+84ZYHDx48eHTTR3p6utc8sVmWZSmE\nLl++rJSUFG3btk1f/vKXlZmZqXXr1mnYsGGhnA0AoIsL+cVio6Ki9Ktf/UpTp07VlStXNH/+fMIJ\nANBqIR9BAQAQClxJohPU1NTI6XSGfT7FxcVatmxZyKa3YsUKORwOPfjggyGbZluWxfjx40Na35Ye\nYmJiWlWP1vnkk0/06quvdnYb6GQEVBcW6iMqX331Vb377rv6zW9+E9LpttauXbvCWh8Mjla9lWVZ\nCtUGmdOnT2vlypUhmRYiFwEVQvfff79Gjx6ttLQ0rVq1ym/t5cuXNW/ePDkcDs2YMUPnz5/3Wbtm\nzRqlp6crIyNDDz30kN/p/uxnP1NKSoqysrL073//22/t2rVrNWbMGLlcLj3++ONqaWnxWfv444/r\ngw8+0L333qtf/vKXfqcrST/96U+VmpqqrKwszZkzx+9I7sqVK3rssceUlpamqVOn6rPPPvM77daO\nXlpT/8EHH2jkyJHat29fq+Zxs5qaGqWmpurhhx9WSkqK5s6dq4qKCo0fP15Dhw7Vnj17bqkfNmxY\n0MvhF7/4hZxOp5xOp5YvXx5UL8Gub9evQ4G+u5qaGqWkpKiwsFBOp1O1tbVe65qbm3XfffcpIyND\nTqdTGzZs8NvzwoUL9d///lcul0s/+tGP/M7/+tHv0qVLVVJS4rX2xz/+8Q2h52sLw89//nO9/PLL\nkqQf/OAHysnJkSRt375d8+bNu6V+z549Sk9P14ULF9Tc3Ky0tDRVVVV57eGFF1644ft69tlntWLF\nCp+f7/XXX5fL5ZLL5dLgwYM1adIkn7VdUqgPM+/OGhsbLcuyrHPnzllpaWnWxx9/7LWuurrastls\n1l//+lfLsiyrqKjIWrp0qdfa999/3xo6dKhnWtfm4c3evXstp9NpnT9/3vr000+tIUOGWMuWLfNa\nW1VVZU2bNs26fPmyZVmWtWDBAmvNmjV+P19SUpLPz3S9yspKKyMjw7pw4YLV1NRkJScn++yjurra\nioqKsg4ePGhZlmUVFBRYa9eu9Tv9mJiYgD20pr66utpKS0uzDh8+bLlcLuuf//xnSKYZFRVlvf/+\n+1ZLS4s1atQoq6ioyLIsy9q0aZOVn5/vtT6Y5XDtez537px19uxZa/jw4db+/fv99hLs+taadeja\ntHv06GH9/e9/970wLMvauHGj9eijj3p+/+STT/zW19TUWGlpaX5rrs3/+rqlS5daxcXFXmv3799v\nTZgwwfO7w+Gwamtrb6nbvXu3NWPGDMuyLOuee+6xxowZY126dMkqLi623njjDa/Tfu6556wnn3zS\n+s53vnPLaTU3f66RI0dalmVZV65cse666y6//6avuXTpkpWVlWVt2bIlYG1XwggqhJYvX66MjAyN\nHTtWtbW1Onr0qM/agQMHauzYsZKkefPmaefOnV7rtm/froKCAvXrd/WkvPj4eJ/T3LFjh6ZPn67e\nvXsrNjZWeXl5Pje5bNu2Tfv27dPo0aPlcrm0fft2VVdXB/tR/dq1a5fy8/PVq1cvxcTEaNq0aX43\n/QwePFgjRoyQJI0aNUo1NTUh6aM1Tp48qfz8fL399tsh2z84ePBgDR8+XDabTcOHD9fkyZMlSWlp\naV4/Y7DLYefOnZo+fbr69Omjvn37avr06dqxY4ffXoJd31qzDl0zaNAgZWZm+q0ZMWKE/vznP2vh\nwoXauXOn4uLi/NYHmmdbZGRk6OTJk6qvr9fBgwcVHx+vhISEW+qujaCbmprUu3dvjR07Vnv37tXO\nnTuVlZXlddqLFi1SRUWF9u7dq6efftpnD4MGDdKdd96pAwcOqKKiQiNHjvT7b/qa733ve8rJydF9\n990X/AfuAkJ+mHl35Xa7tW3bNu3evVu9e/fWxIkTdeHCBZ/11+/DsCzL5z4Nm80W9D/Wm2sDva+w\nsFCLFy8Oatqt0do+brvtNs/PPXv29Lv5KVzuuOMODRo0SDt27FBqampIpnn95+rRo4d69erl+fny\n5ct+6/0tB2/LN9A+sbaub8Gse3379g1Yk5ycrP379+udd97Rc889p5ycHD3//PMB3xdIVFTUDZum\nA607M2bM0MaNG3XixAnNmjXLa010dLQGDx6st956S+PGjdOIESO0fft2/ec///G5bpw6dUrNzc26\ncuWKzp8/r9tvv91nD4888ojefPNNNTQ0qKioKOBnfOutt3Ts2LFuuU+OEVSIfPrpp4qPj1fv3r11\n+PBh7d6922/9hx9+6Kl5++23ff6f2aRJk/S73/1OjY2NkuT5rzdf/epXVV5ers8++0xNTU3asmWL\nzz9EOTk52rhxoz766CPPdD/88MOAnzMY48eP1x//+EdduHBBZ8+e1TvvvGP8QQW9evXS73//e61Z\ns0br1q3r7Hb8ysrKUnl5uc6fP6/m5maVl5f7XH+uCXZ9a8061Br19fXq3bu35s6dqyeffFL/+Mc/\n/NbHxsaqqakp4HTtdrtOnjypxsZGXbhwQVu2bPFbP3PmTK1bt04bN27UjBkzfNZlZWVp6dKlmjBh\ngrKysvTaa69p5MiRPuu/9a1v6cUXX9ScOXP87jOTru6r3rp1q/bu3aupU6f6rd23b5+WLVvW6Qcm\ndRZGUCFy77336rXXXpPD4VBKSopnc4o3NptNKSkpeuWVV1RUVKThw4drwYIFXmsdDoeeffZZTZgw\nQT179tTIkSP161//2muty+XSzJkzlZ6erv79+/vd7DJs2DC9+OKLmjJlilpaWhQdHa2VK1fqK1/5\nit++gzF69Gjl5eVpxIgRstvtcjqd+sIXvhD0dFszGghGMPU2m0233367tmzZotzcXMXGxurrX/96\nu6fp63dv7w92ObhcLn3zm9/0fL+PPvqo0tPT/fYS7Pp28zp09913BxxFBbMsDh06pKeeesozkgx0\nCPmdd96p8ePHy+l06mtf+5rP+8pFR0dr0aJFyszMVEJCghwOh99+HA6Hzp49q8TERNntdp91WVlZ\nWrx4scaOHas+ffqoT58+PkN9zZo1uu222zRr1iy1tLRo3Lhxcrvdys7O9tnzpEmTFB8fH3DZvfLK\nKzp9+rQmTpwoSbr77rv1xhtv+H1PV8KJugiL5uZm9e3bV+fOndOECRO0atUqZWRkdHgfH3/8caft\n1zJFTU2Npk2bpkOHDrX6vSUlJYqJidETTzwRhs66p5aWFo0aNUobN27UXXfd1dntGI1NfAiLxx57\nTC6XS6NGjdI3vvGNTgmn48ePa9y4cXrqqac6fN6mac9mOtM3z0aSqqoqJScna/LkyYRTEBhBAQCM\nxAgKAGAkAgoAYCQCCgBgJAIKAGAkAgoAYCQCCgBgpP8D+njZv7/d4VMAAAAASUVORK5CYII=\n",
165 "text": [
166 "<matplotlib.figure.Figure at 0xaea9556c>"
167 ]
168 }
169 ],
170 "prompt_number": 7
171 },
172 {
173 "cell_type": "code",
174 "collapsed": false,
175 "input": [
176 "plot_frequency_histogram(normalised_english_counts)"
177 ],
178 "language": "python",
179 "metadata": {},
180 "outputs": [
181 {
182 "metadata": {},
183 "output_type": "display_data",
184 "png": "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\nMEAjR45s8cIJ6Uzo9OrVq+mii1DX5aKLrsVFFwDCiVMmOM6wIiIiVFhYqNzcXAUCAc2bN0/Jyckq\nKiqSJOXn5+vQoUPKzMxUbW2tevTooRUrVqiiokLR0dEtrgsAQHs4zrAuSAPMsLoUMywA4aTdl7UD\nABAuCCwAgBUILACAFQgsAIAVCCwAgBUILACAFQgsAIAVCCwAgBUILACAFQgsAIAVCCwAgBUILACA\nFQgsAIAVCCwAgBUILACAFQgsAGEnJqaPXC6X4y0mpk9Xt4kLjA9wvMjxAY4IR7wuL158gCMAwHoE\nFgDACgQWAMAKBBYAwAoEFgDACgQWAMAKBBYAwAoEFgDACgQWAMAKBBYAwAoEFgDACkEDq7S0VElJ\nSUpISNDSpUtbrFm4cKESEhLk9XpVXl7e9P1nnnlGQ4YMUVpamu68807V19efv84BABcVx8AKBAJa\nsGCBSktLVVFRobVr12rv3r3NakpKSnTgwAHt379fq1at0vz58yVJVVVVevXVV7V792598MEHCgQC\n+vOf/9x5IwEAdGuOgVVWVqb4+HjFxcUpMjJSeXl5Ki4ublazYcMGzZkzR5KUlZWlo0eP6vDhw4qJ\niVFkZKROnDihxsZGnThxQm63u/NGAgDo1hwDq6amRrGxsU3LHo9HNTU1IdX06dNHixYt0rXXXqsB\nAwboqquu0k033XSe2wcAXCwcA+vMZ9IE19Jnl3z88cd6/vnnVVVVpYMHD+rYsWP605/+1L4uAZyD\nDznExSbC6U632y2/39+07Pf75fF4HGuqq6vldrvl8/k0evRo9e3bV5I0bdo0vf3225o5c+Y5j1NQ\nUND0dU5OjnJyctozFuCiUlf3tYJ9yGFdXWi/dAJdxefzyefzhVZsHDQ0NJhBgwaZyspKU19fb7xe\nr6moqGhWs2nTJjNx4kRjjDE7duwwWVlZxhhjysvLzZAhQ8yJEyfM6dOnzezZs01hYeE5jxGkBXQy\nSUYyQW48R+GoOz933XlscOb0vDrOsCIiIlRYWKjc3FwFAgHNmzdPycnJKioqkiTl5+dr0qRJKikp\nUXx8vKKiorR69WpJUnp6umbPnq0RI0aoR48eGjZsmO677752JTAAAK7vEq3rGnC5WjwHZqOYmD7f\nHaZpXa9evVVbe+QCdRTcmfOUwfZ/93mOupPu/Nx157HBmVMmEFjnkY0/ZDb2jDO683PXnccGZ06Z\nwFszAQCsQGABAKxAYAEArEBgAQCsQGABAKxAYAEArEBgAQCsQGABAKxAYAEArEBgAQCsQGABAKxA\nYAEArEBgAQCsQGABAKxAYAEArEBgAQCsQGABAKxAYAEArEBgwSoxMX3kcrkcbzExfbq6TQCdgMCC\nVerqvpZkHG9nauxEIAOtI7DQ5fhP+nvdPZCBjojo6gaA7/+TdqpxXZhmAIQtZlgAACsQWAAuCA79\noqM4JAjgguDQLzqKGRYAwAoEFgDACkEDq7S0VElJSUpISNDSpUtbrFm4cKESEhLk9XpVXl7e9P2j\nR49q+vTpSk5OVkpKinbu3Hn+OgcAXFQcAysQCGjBggUqLS1VRUWF1q5dq7179zarKSkp0YEDB7R/\n/36tWrVK8+fPb7rvV7/6lSZNmqS9e/fq/fffV3JycueMAgDQ7TkGVllZmeLj4xUXF6fIyEjl5eWp\nuLi4Wc2GDRs0Z84cSVJWVpaOHj2qw4cP65tvvtG2bds0d+5cSVJERISuvPLKThoGAKC7cwysmpoa\nxcbGNi17PB7V1NQEramurlZlZaX69eunu+++W8OGDdO9996rEydOnOf2AQAXC8fAcrlCu8TUmOaX\nqrpcLjU2Nmr37t36xS9+od27dysqKkrPPvts+zsFAFzUHP8Oy+12y+/3Ny37/X55PB7Hmurqarnd\nbhlj5PF4lJmZKUmaPn16q4FVUFDQ9HVOTo5ycnLaOg4AXSAmpk/Q9zbs1au3amuPXKCOYBufzyef\nzxdasXHQ0NBgBg0aZCorK019fb3xer2moqKiWc2mTZvMxIkTjTHG7Nixw2RlZTXdl52dbT766CNj\njDGLFy82jzzyyDmPEaQFq0gykglyC6/xhkPPbekhHPrtTLbti87qNxzGhq7h9Lw6zrAiIiJUWFio\n3NxcBQIBzZs3T8nJySoqKpIk5efna9KkSSopKVF8fLyioqK0evXqpvVfeOEFzZw5U99++60GDx7c\n7D4AANrC9V2idV0DLtc558BsdeacX7CxhNd4w6HntvQQDv12Jtv2RWf1Gw5jQ9dwygTe6QIAYAUC\nCwBgBQILAGAFAgsAYAUCCwBgBQILAGAFAgsAYAUCCwBgBQILAGAFAgsAYAUCCwBgBQILAGAFAgsA\nYAUCCwBgBQILAGAFAgsAYAUCCwBgBQILAGAFAgsAYAUCCwBgBQILAGAFAgsAYAUCCwBgBQILAGAF\n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\nrY7prLKyMpOenm7q6+tNXV2dSUhIaLWHyspKExERYd577z1jjDG33367ef311x23Hx0d7Xh/e9ap\nrKw0qampZt++fSYjI8O8//77Hdrm2XF9+OGH5vTp02b48OFm7ty5xhhjiouLzdSpU1tdJ5R9cfZ5\nPnHihDl27JgZMmSIKS8vb7WXUF9rbXn9nN12jx49zH//+99Wa85at26duffee5uWv/nmm1Zrq6qq\nTGpqatBtnu3hh7XLli0zBQUF59SVl5ebsWPHNi2npKSY6urqFre5c+dOM2PGDGOMMT/5yU9MVlaW\naWhoMAUFBWbVqlUtrvPEE0+Yhx56yPzyl79s8c95zqqqqjLDhg0zxhgTCATM4MGDHX+mjTGmoaHB\nZGdnm40bNzrWdUfMsDrRihUrlJ6erlGjRqm6ulr79+9vtTY2NlajRo2SJM2aNUvbt29vsW7r1q26\n/fbb1afPmT8U7N27d6vb3LZtm6ZNm6aePXuqV69emjJlSquHabZs2aJ3331XI0aMUEZGhrZu3arK\nyspQh9qqt956S1OnTtWll16q6OhoTZ482fFQ0cCBAzV06FBJ0vDhw1VVVdXhHtrjiy++0NSpU/XG\nG2+cl/OLAwcO1JAhQ+RyuTRkyBDddNNNkqTU1NRWxxjqvti+fbumTZumyy+/XFFRUZo2bZq2bdvW\nai+hvtba8vo567rrrtPIkSMdayRp6NCh+ve//61HH31U27dvV0xMTKu1wR6zPdLT0/XFF1/o888/\n13vvvafevXvL7Xa3WHt2hl1XV6eePXtq1KhR2rVrl7Zv367s7OwW13nyySf15ptvateuXXrkkUda\n7eO6665T3759tWfPHr355psaNmyY48+0dObNxsePH6+bb7459AF3E46XtaP9fD6ftmzZop07d6pn\nz54aN26c6uvrW63/4TkQY0yr50RcLlfIP8A/rg223pw5c/T000+HtO1QtbWHyy67rOnrSy65xPFw\nVWe66qqrdN1112nbtm1KSkrq8PZ+OK4ePXro0ksvbfq6sbEx6DpO+6Klfex0Tq29r7VQXndRUVFB\nayQpISFB5eXl2rRpk5544gmNHz9ev/nNb0Ja10lERESzQ9lOr58ZM2Zo3bp1OnTokPLy8lqti4yM\n1MCBA/Xaa69p9OjRGjp0qLZu3aoDBw60+tr43//+p+PHjysQCOjkyZO64oorWt3+Pffco9WrV+vw\n4cOaO3eu4/hee+01+f3+i/acHjOsTlJbW6vevXurZ8+e2rdvn3bu3OlY/9lnnzXVvPHGG63+5nbj\njTfqb3/7m44cOSJJTf+25IYbbtD69et16tQp1dXVaePGja3+5zR+/HitW7dOX375ZdN2P/vss6Dj\nDGbMmDH65z//qfr6eh07dkybNm2y4gKFSy+9VP/4xz+0Zs2aFv/gPZxkZ2dr/fr1OnnypI4fP671\n69e3+vqRQn+tteX101aff/65evbsqZkzZ+qhhx7S7t27W63t1auX6urqQtpu//799cUXX+jIkSOq\nr6/Xxo0bW6294447tHbtWq1bt04zZsxw3G52draWLVumsWPHKjs7W6+88oqGDRvWan1+fr6eeuop\n3XnnnUHPu916660qLS3Vrl27lJub22rdu+++q+XLl3fpRU5djRlWJ5kwYYJeeeUVpaSkKDExsekQ\nTEtcLpcSExP14osvau7cuRoyZIjmz5/fYm1KSooef/xxjR07VpdccomGDRumP/zhDy3WZmRk6I47\n7pDX69XVV1/teKgmOTlZTz31lH72s5/p9OnTioyM1EsvvaRrr73Wse9gRowYoSlTpmjo0KHq37+/\n0tLSdOWVV4a8zWCP0Z7/QENZx+Vy6YorrtDGjRv105/+VL169dItt9zS7m06jctphhPKY2RkZOjn\nP/950/N77733yuv1ttpLqK+1H79+MjMzg86yQn0+PvjgAz388MNNs02ny9b79u2rMWPGKC0tTZMm\nTXL8bL3IyEg9+eSTGjlypNxut1JSUlrtKSUlRceOHZPH41H//v0d+83OztbTTz+tUaNG6fLLL9fl\nl1/eatCvWbNGl112mfLy8nT69GmNHj1aPp9POTk5rfZ84403qnfv3o7778UXX9TXX3+tcePGSZIy\nMzO1atUqx767G/5wGJ3u+PHjioqK0okTJzR27Fi9+uqrSk9P75Jevvrqqy49N9bVqqqqNHnyZH3w\nwQdtXnfJkiWKjo7WokWLOqGzi9fp06c1fPhwrVu3ToMHD+7qdsIahwTR6e677z5lZGRo+PDhmj59\nepeF1cGDBzV69Gg9/PDDXfL44aIjh/VsOJxrk4qKCiUkJOimm24irELADAsAYAVmWAAAKxBYAAAr\nEFgAACsQWAAAKxBYAAArEFgAACv8P5ZWvQDqsWNNAAAAAElFTkSuQmCC\n",
185 "text": [
186 "<matplotlib.figure.Figure at 0xae9bd72c>"
187 ]
188 }
189 ],
190 "prompt_number": 8
191 },
192 {
193 "cell_type": "code",
194 "collapsed": false,
195 "input": [
196 "c6a"
197 ],
198 "language": "python",
199 "metadata": {},
200 "outputs": [
201 {
202 "metadata": {},
203 "output_type": "pyout",
204 "prompt_number": 9,
205 "text": [
206 "'CPYYL GVVIR PDDVU BCSUP QOWPW SYBYP ODBCS PBBPR CSIOZ PTSTV HYVTW PYOZC OGCRV TTPUI BVGVS YOUGZ ZSRYS BPYLY SHSYY OUGBV BCSWP OUBOU GPUIR DSPYD LTSUB OVUOU GZPYP ZSSTZ DONSB CSLNU SJPAV EBBCS ZRPTV EYHYO SUIDL ZZVHH ORSYJ PZWDP UUOUG BVWED DBCSL WORNS IEWCS YBYPO DBCSU OGCBP HBSYZ CSJSU BTOZZ OUGAE BLVER PUYSP IPAVE BBCPB OUBCS OYYSW VYBZB ODDUV MVLVU GSBBO UGPRR SZZBV BCSVY OGOUP DTOZZ TVUPO UBCSG PDDSY LPUIO PTASG OUUOU GBVBC OUNJS TOGCB USSIB VYVDD VEBPA DPRNA PGMVA LVEJP UBBVI VOBVY ZCPDD OALBC SJPLO JPZZE YWYOZ SIALB COZYS WVYBB CSVBC SYWPW SYZJS CPFSH YVTBC SUPQO ZPBBC OZDSF SDPYS SURYL WBSIE ZOUGA OHOIV YWDPL HPOYZ BLDSR OWCSY ZBCOZ VUSOZ UBTPL ASBCS ROWCS YRDSY NJPZV HHIEB LBCPB IPLJS GVBDE RNL\\n'"
207 ]
208 }
209 ],
210 "prompt_number": 9
211 },
212 {
213 "cell_type": "code",
214 "collapsed": false,
215 "input": [
216 "len(sanitise(c6b))"
217 ],
218 "language": "python",
219 "metadata": {},
220 "outputs": [
221 {
222 "metadata": {},
223 "output_type": "pyout",
224 "prompt_number": 18,
225 "text": [
226 "1573"
227 ]
228 }
229 ],
230 "prompt_number": 18
231 },
232 {
233 "cell_type": "code",
234 "collapsed": false,
235 "input": [
236 "c6as = sanitise(c6a)"
237 ],
238 "language": "python",
239 "metadata": {},
240 "outputs": [],
241 "prompt_number": 35
242 },
243 {
244 "cell_type": "code",
245 "collapsed": false,
246 "input": [
247 "frequencies(ngrams(c6as, 2))"
248 ],
249 "language": "python",
250 "metadata": {},
251 "outputs": [
252 {
253 "metadata": {},
254 "output_type": "pyout",
255 "prompt_number": 48,
256 "text": [
257 "Counter({'bc': 21, 'cs': 20, 'ou': 15, 'sy': 12, 'oz': 10, 'ug': 10, 'bv': 8, 'ub': 8, 'bb': 7, 'su': 7, 'py': 6, 'pu': 6, 'vy': 6, 'jp': 6, 'dd': 6, 'zz': 6, 'ys': 6, 'yo': 6, 've': 6, 'ds': 5, 'eb': 5, 'po': 5, 'bo': 5, 'si': 5, 'yz': 5, 'vu': 5, 'vb': 5, 'co': 5, 'cp': 5, 'wp': 4, 'dp': 4, 'pz': 4, 'pl': 4, 'pd': 4, 'pb': 4, 'js': 4, 'og': 4, 'bp': 4, 'zb': 4, 'sb': 4, 'yl': 4, 'yb': 4, 'uo': 4, 'ui': 4, 'up': 4, 'hy': 3, 'wc': 3, 'pt': 3, 'pr': 3, 'sw': 3, 'bl': 3, 'zc': 3, 'rp': 3, 'zp': 3, 'zs': 3, 'zv': 3, 'od': 3, 'ow': 3, 'gb': 3, 'gc': 3, 'gv': 3, 'gp': 3, 'lb': 3, 'sr': 3, 'ss': 3, 'sp': 3, 'rn': 3, 'st': 3, 'sj': 3, 'lv': 3, 'db': 3, 'sg': 3, 'to': 3, 'ie': 3, 'tv': 3, 'yy': 3, 'yp': 3, 'al': 3, 'yv': 3, 'yw': 3, 'us': 3, 'vt': 3, 'vh': 3, 'pa': 3, 'wv': 2, 'ws': 2, 'ip': 2, 'wd': 2, 'ho': 2, 'hh': 2, 'pw': 2, 'er': 2, 'mv': 2, 'oy': 2, 'ry': 2, 'lw': 2, 'so': 2, 'qo': 2, 'by': 2, 'bs': 2, 'bt': 2, 'zd': 2, 'rs': 2, 'zo': 2, 'or': 2, 'rd': 2, 'ga': 2, 'go': 2, 'ey': 2, 'gz': 2, 'sz': 2, 'ro': 2, 'sv': 2, 'dv': 2, 'sh': 2, 'do': 2, 'sl': 2, 'dl': 2, 'io': 2, 'ts': 2, 'ir': 2, 'tp': 2, 'iv': 2, 'as': 2, 'av': 2, 'nj': 2, 'uu': 2, 'ns': 2, 'fs': 2, 'ib': 2, 'pq': 2, 'vi': 2, 'cb': 2, 'hs': 1, 'hp': 1, 'wy': 1, 'we': 1, 'wb': 1, 'wo': 1, 'hi': 1, 'lj': 1, 'lo': 1, 'du': 1, 'pi': 1, 'ph': 1, 'ed': 1, 'pf': 1, 'zj': 1, 'pg': 1, 'lp': 1, 'oa': 1, 'lt': 1, 'yn': 1, 'nl': 1, 'vv': 1, 'lz': 1, 'ze': 1, 'ao': 1, 'bi': 1, 'ap': 1, 'bd': 1, 'bz': 1, 'de': 1, 'bu': 1, 'on': 1, 'oj': 1, 'oh': 1, 'oi': 1, 'rr': 1, 'ob': 1, 'rv': 1, 'zr': 1, 'zt': 1, 'zw': 1, 'rc': 1, 'op': 1, 'dt': 1, 'gm': 1, 'ej': 1, 'gs': 1, 'zu': 1, 'la': 1, 'lg': 1, 'ld': 1, 'ov': 1, 'ly': 1, 'sf': 1, 'sd': 1, 'lh': 1, 'os': 1, 'ia': 1, 'ta': 1, 'id': 1, 'tz': 1, 'tw': 1, 'tt': 1, 'ad': 1, 'ae': 1, 'yr': 1, 'yh': 1, 'yj': 1, 'yd': 1, 'ln': 1, 'un': 1, 'na': 1, 'uy': 1, 'nu': 1, 'uv': 1, 'ez': 1, 'ur': 1, 'tb': 1, 'vw': 1, 'ew': 1, 'vs': 1, 'sc': 1, 'hb': 1, 'vd': 1, 'vg': 1, 'va': 1, 'vm': 1, 'vl': 1, 'vo': 1, 'zy': 1, 'cr': 1})"
258 ]
259 }
260 ],
261 "prompt_number": 48
262 },
263 {
264 "cell_type": "code",
265 "collapsed": false,
266 "input": [
267 "' '.join(segment(letters(c6a).translate(''.maketrans({'B':'t', 'C':'h', 'S':'e', 'O':'i', 'U':'n', 'G':'g', 'A':'b', 'V':'o', 'N':'k', 'J':'w', 'T':'m', 'I':'d', 'P':'a', 'W':'p', 'R':'c', 'Y':'r', 'L':'y', 'D':'l', 'H':'f', 'Z':'s', 'Q':'z', 'E':'u', 'F':'v', 'M':'j'}))))"
268 ],
269 "language": "python",
270 "metadata": {},
271 "outputs": [
272 {
273 "metadata": {},
274 "output_type": "pyout",
275 "prompt_number": 65,
276 "text": [
277 "'harry good call on the nazi paper trail the attached is a memo from paris high command to goering s secretary referring to the painting and clearly mentioning sara seems like they knew about the scam our friendly ss officer was planning to pull they picked up her trail the night after she went missing but you can read about that in their report still no joy on getting access to the original miss mona in the gallery and i am beginning to think we might need to rollout a black bag job you want to do it or shall i by the way i was surprised by this report the other papers we have from the nazis at this level are encrypted using bifid or playfair style ciphers this one isnt maybe the cipher clerk was off duty that day we got lucky'"
278 ]
279 }
280 ],
281 "prompt_number": 65
282 },
283 {
284 "cell_type": "code",
285 "collapsed": false,
286 "input": [
287 "trans={'B':'t', 'C':'h', 'S':'e', 'O':'i', 'U':'n', 'G':'g', 'A':'b', 'V':'o', 'N':'k', 'J':'w', 'T':'m', 'I':'d', 'P':'a', 'W':'p', 'R':'c', 'Y':'r', 'L':'y', 'D':'l', 'H':'f', 'Z':'s', 'Q':'z', 'E':'u', 'F':'v', 'M':'j'}"
288 ],
289 "language": "python",
290 "metadata": {},
291 "outputs": [],
292 "prompt_number": 66
293 },
294 {
295 "cell_type": "code",
296 "collapsed": false,
297 "input": [
298 "sorted(trans.keys(), key=lambda k: trans[k])"
299 ],
300 "language": "python",
301 "metadata": {},
302 "outputs": [
303 {
304 "metadata": {},
305 "output_type": "pyout",
306 "prompt_number": 84,
307 "text": [
308 "['P',\n",
309 " 'A',\n",
310 " 'R',\n",
311 " 'I',\n",
312 " 'S',\n",
313 " 'H',\n",
314 " 'G',\n",
315 " 'C',\n",
316 " 'O',\n",
317 " 'M',\n",
318 " 'N',\n",
319 " 'D',\n",
320 " 'T',\n",
321 " 'U',\n",
322 " 'V',\n",
323 " 'W',\n",
324 " 'Y',\n",
325 " 'Z',\n",
326 " 'B',\n",
327 " 'E',\n",
328 " 'F',\n",
329 " 'J',\n",
330 " 'L',\n",
331 " 'Q']"
332 ]
333 }
334 ],
335 "prompt_number": 84
336 },
337 {
338 "cell_type": "code",
339 "collapsed": false,
340 "input": [
341 "keyword_decipher(c6as, 'parishighcommand', 2)"
342 ],
343 "language": "python",
344 "metadata": {},
345 "outputs": [
346 {
347 "metadata": {},
348 "output_type": "pyout",
349 "prompt_number": 86,
350 "text": [
351 "'harrygoodcallonthenazipapertrailtheattachedisamemofromparishighcommandtogoeringssecretaryreferringtothepaintingandclearlymentioningsaraseemsliketheyknewaboutthescamourfriendlyssofficerwasplanningtopulltheypickeduphertrailthenightaftershewentmissingbutyoucanreadaboutthatintheirreportstillnojoyongettingaccesstotheoriginalmissmonainthegalleryandiambeginningtothinkwemightneedtorolloutablackbagjobyouwanttodoitorshallibythewayiwassurprisedbythisreporttheotherpaperswehavefromthenazisatthislevelareencryptedusingbifidorplayfairstyleciphersthisoneisntmaybethecipherclerkwasoffdutythatdaywegotlucky'"
352 ]
353 }
354 ],
355 "prompt_number": 86
356 },
357 {
358 "cell_type": "code",
359 "collapsed": false,
360 "input": [],
361 "language": "python",
362 "metadata": {},
363 "outputs": []
364 }
365 ],
366 "metadata": {}
367 }
368 ]
369 }