Done Cadenus ciphers, but not automated breaking
authorNeil Smith <neil.git@njae.me.uk>
Mon, 29 Dec 2014 22:24:54 +0000 (22:24 +0000)
committerNeil Smith <neil.git@njae.me.uk>
Mon, 29 Dec 2014 22:24:54 +0000 (22:24 +0000)
2014-challenge8.ipynb
cadenus-ciphers.ipynb [new file with mode: 0644]
cipher.py

index 5b5d5dc19aa6a527e12022bc628c8d346dec109e..2339799e584ff6ae74b83e6aaeea13e945ae8de3 100644 (file)
@@ -1,7 +1,7 @@
 {
  "metadata": {
   "name": "",
-  "signature": "sha256:e375a3faf5213c9f51d99f7c22948b1a55e592a6d8b6156a30b0fb490ea337a1"
+  "signature": "sha256:552bea7734ea4d4e21f21be2dca0f09009e1c1eb9a767ab8c6c8097144b76db4"
  },
  "nbformat": 3,
  "nbformat_minor": 0,
@@ -26,7 +26,7 @@
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 9
+     "prompt_number": 1
     },
     {
      "cell_type": "code",
        "output_type": "pyout",
        "prompt_number": 2,
        "text": [
-        "<matplotlib.axes.AxesSubplot at 0x7fe302243fd0>"
+        "<matplotlib.axes.AxesSubplot at 0x7f2de7d75e10>"
        ]
       },
       {
        "metadata": {},
        "output_type": "display_data",
-       "png": "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\n",
+       "png": "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\nTkSuQmCC\n",
        "text": [
-        "<matplotlib.figure.Figure at 0x7fe32d0cc0f0>"
+        "<matplotlib.figure.Figure at 0x7f2e1c1ae978>"
        ]
       }
      ],
        "output_type": "pyout",
        "prompt_number": 3,
        "text": [
-        "<matplotlib.axes.AxesSubplot at 0x7fe301119be0>"
+        "<matplotlib.axes.AxesSubplot at 0x7f2de514fba8>"
        ]
       },
       {
        "metadata": {},
        "output_type": "display_data",
-       "png": "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\n",
+       "png": "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\nTkSuQmCC\n",
        "text": [
-        "<matplotlib.figure.Figure at 0x7fe301154198>"
+        "<matplotlib.figure.Figure at 0x7f2de5155a58>"
        ]
       }
      ],
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 12,
+       "prompt_number": 7,
        "text": [
         "875.0"
        ]
       }
      ],
-     "prompt_number": 12
+     "prompt_number": 7
     },
     {
      "cell_type": "code",
      "collapsed": false,
      "input": [
-      "[c for c in chunks(c8b, 8)]"
+      "[c for c in chunks(c8b, 5)]"
      ],
      "language": "python",
      "metadata": {},
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 21,
+       "prompt_number": 8,
        "text": [
-        "['00000001',\n",
-        " '01000100',\n",
-        " '00000010',\n",
-        " '01010001',\n",
-        " '11010011',\n",
-        " '10011000',\n",
-        " '00000101',\n",
-        " '00110011',\n",
-        " '11000101',\n",
-        " '00001110',\n",
-        " '01011001',\n",
-        " '00100110',\n",
-        " '00101001',\n",
-        " '00010010',\n",
-        " '00110011',\n",
-        " '00111100',\n",
-        " '10001111',\n",
-        " '00111000',\n",
-        " '10000000',\n",
-        " '11101010',\n",
-        " '11000011',\n",
-        " '10100010',\n",
-        " '11110010',\n",
-        " '11000100',\n",
-        " '11000100',\n",
-        " '01110000',\n",
-        " '00000110',\n",
-        " '11110111',\n",
-        " '10100101',\n",
-        " '10100110',\n",
-        " '01011100',\n",
-        " '11001001',\n",
-        " '00010110',\n",
-        " '10010000',\n",
-        " '10100100',\n",
-        " '01110001',\n",
-        " '01010000',\n",
-        " '11101000',\n",
-        " '11001110',\n",
-        " '01000011',\n",
-        " '00011011',\n",
-        " '10001000',\n",
-        " '01001010',\n",
-        " '00110010',\n",
-        " '01000010',\n",
-        " '10001101',\n",
-        " '00001001',\n",
-        " '00010110',\n",
-        " '10010100',\n",
-        " '10010011',\n",
-        " '01011000',\n",
-        " '00000000',\n",
-        " '01011001',\n",
-        " '01001110',\n",
-        " '11001000',\n",
-        " '00100011',\n",
-        " '01100111',\n",
-        " '00011010',\n",
-        " '10111001',\n",
-        " '11001101',\n",
-        " '00100100',\n",
-        " '01001111',\n",
-        " '01000000',\n",
-        " '00011110',\n",
-        " '00100000',\n",
-        " '10101001',\n",
-        " '00100010',\n",
-        " '01000010',\n",
-        " '01001110',\n",
-        " '01010101',\n",
-        " '10010010',\n",
-        " '00001000',\n",
-        " '10110011',\n",
-        " '10101101',\n",
-        " '11010010',\n",
-        " '10011000',\n",
-        " '11011100',\n",
-        " '00000101',\n",
-        " '10111011',\n",
-        " '00000000',\n",
-        " '00100100',\n",
-        " '10011000',\n",
-        " '11010110',\n",
-        " '10001101',\n",
-        " '00000110',\n",
-        " '01101011',\n",
-        " '01100010',\n",
-        " '01110111',\n",
-        " '00011100',\n",
-        " '11110011',\n",
-        " '10010011',\n",
-        " '01000000',\n",
-        " '11100100',\n",
-        " '00101101',\n",
-        " '10100010',\n",
-        " '01101100',\n",
-        " '10100100',\n",
-        " '10000001',\n",
-        " '01000100',\n",
-        " '10000000',\n",
-        " '01101011',\n",
-        " '01001000',\n",
-        " '01000100',\n",
-        " '00100001',\n",
-        " '00000100',\n",
-        " '10001101',\n",
-        " '10100110',\n",
-        " '00000110',\n",
-        " '10010010',\n",
-        " '01010001',\n",
-        " '10101011',\n",
-        " '10001100',\n",
-        " '10000010',\n",
-        " '00100011',\n",
-        " '00010110',\n",
-        " '10010100',\n",
-        " '10000110',\n",
-        " '01100111',\n",
-        " '11010101',\n",
-        " '11001000',\n",
-        " '00000010',\n",
-        " '00100100',\n",
-        " '00000111',\n",
-        " '00000000',\n",
-        " '10001110',\n",
-        " '00000001',\n",
-        " '00000111',\n",
-        " '00010110',\n",
-        " '10100010',\n",
-        " '01110001',\n",
-        " '01101101',\n",
-        " '11001000',\n",
-        " '10000011',\n",
-        " '01000101',\n",
-        " '11110010',\n",
-        " '10010001',\n",
-        " '11000000',\n",
-        " '00110011',\n",
-        " '10001110',\n",
-        " '01101110',\n",
-        " '01000011',\n",
-        " '11000000',\n",
-        " '00001001',\n",
-        " '10010010',\n",
-        " '11100100',\n",
-        " '01101011',\n",
-        " '01001001',\n",
-        " '00100000',\n",
-        " '00011010',\n",
-        " '00101110',\n",
-        " '00001100',\n",
-        " '11010110',\n",
-        " '01001001',\n",
-        " '01000101',\n",
-        " '10110001',\n",
-        " '01110010',\n",
-        " '00100011',\n",
-        " '10000111',\n",
-        " '10000100',\n",
-        " '11000100',\n",
-        " '00011000',\n",
-        " '10010110',\n",
-        " '10110100',\n",
-        " '01011000',\n",
-        " '00001011',\n",
-        " '00000010',\n",
-        " '11001000',\n",
-        " '01000110',\n",
-        " '10100000',\n",
-        " '11010001',\n",
-        " '10001011',\n",
-        " '01101101',\n",
-        " '10001000',\n",
-        " '10101101',\n",
-        " '00001100',\n",
-        " '01011011',\n",
-        " '11100101',\n",
-        " '00110111',\n",
-        " '00101100',\n",
-        " '10000101',\n",
-        " '10011100',\n",
-        " '01000110',\n",
-        " '11001010',\n",
-        " '00000010',\n",
-        " '00101000',\n",
-        " '00100001',\n",
-        " '00001000',\n",
-        " '10000100',\n",
-        " '00000001',\n",
-        " '11001011',\n",
-        " '01101001',\n",
-        " '00101101',\n",
-        " '00100000',\n",
-        " '00111000',\n",
-        " '11110001',\n",
-        " '10011010',\n",
-        " '11100101',\n",
-        " '00110111',\n",
-        " '00000100',\n",
-        " '10010011',\n",
-        " '01101100',\n",
-        " '10010111',\n",
-        " '01010010',\n",
-        " '10100010',\n",
-        " '10100011',\n",
-        " '01110101',\n",
-        " '01100110',\n",
-        " '11110111',\n",
-        " '00000000',\n",
-        " '10000100',\n",
-        " '01000100',\n",
-        " '10000100',\n",
-        " '10000111',\n",
-        " '00011101',\n",
-        " '00001111',\n",
-        " '10010001',\n",
-        " '00101010',\n",
-        " '01000010',\n",
-        " '00001110',\n",
-        " '01100100',\n",
-        " '10110001',\n",
-        " '01000001',\n",
-        " '00010110',\n",
-        " '10011100',\n",
-        " '10000001',\n",
-        " '01011001',\n",
-        " '00000000',\n",
-        " '11101001',\n",
-        " '10111000',\n",
-        " '11110011',\n",
-        " '10011100',\n",
-        " '11001000',\n",
-        " '11110110',\n",
-        " '10001001',\n",
-        " '01000000',\n",
-        " '01110011',\n",
-        " '01001111',\n",
-        " '01100010',\n",
-        " '01001101',\n",
-        " '10010101',\n",
-        " '11000011',\n",
-        " '11100011',\n",
-        " '00010010',\n",
-        " '00111001',\n",
-        " '10101101',\n",
-        " '00000100',\n",
-        " '10001100',\n",
-        " '00110010',\n",
-        " '00001101',\n",
-        " '11000100',\n",
-        " '00100001',\n",
-        " '00011100',\n",
-        " '00000000',\n",
-        " '00110010',\n",
-        " '01100010',\n",
-        " '01000000',\n",
-        " '10100111',\n",
-        " '00110100',\n",
-        " '00010101',\n",
-        " '10100000',\n",
-        " '00011100',\n",
-        " '01001001',\n",
-        " '00101000',\n",
-        " '11001110',\n",
-        " '01000100',\n",
-        " '10001011',\n",
-        " '10100100',\n",
-        " '01001001',\n",
-        " '11000100',\n",
-        " '11100010',\n",
-        " '01000000',\n",
-        " '10100110',\n",
-        " '11111001',\n",
-        " '00000000',\n",
-        " '00000100',\n",
-        " '00111010',\n",
-        " '11000110',\n",
-        " '01111001',\n",
-        " '00010110',\n",
-        " '11110010',\n",
-        " '01110000',\n",
-        " '00011101',\n",
-        " '00110001',\n",
-        " '01001100',\n",
-        " '00100001',\n",
-        " '10010011',\n",
-        " '10001000',\n",
-        " '10001000',\n",
-        " '10110110',\n",
-        " '01000000',\n",
-        " '00011010',\n",
-        " '11110001',\n",
-        " '00111000',\n",
-        " '11000110',\n",
-        " '10001101',\n",
-        " '10001000',\n",
-        " '10001000',\n",
-        " '11111001',\n",
-        " '11001100',\n",
-        " '11110001',\n",
-        " '00100101',\n",
-        " '00001110',\n",
-        " '11010101',\n",
-        " '01001100',\n",
-        " '00000010',\n",
-        " '00100000',\n",
-        " '10001000',\n",
-        " '01000101',\n",
-        " '11000110',\n",
-        " '11001101',\n",
-        " '01000100',\n",
-        " '01001000',\n",
-        " '01000010',\n",
-        " '00000000',\n",
-        " '10010010',\n",
-        " '00100001',\n",
-        " '00001000',\n",
-        " '10000001',\n",
-        " '10100010',\n",
-        " '01001110',\n",
-        " '00110000',\n",
-        " '10001000',\n",
-        " '11100110',\n",
-        " '00110110',\n",
-        " '00110011',\n",
-        " '00100010',\n",
-        " '01001110',\n",
-        " '00000011',\n",
-        " '00000000',\n",
-        " '00110010',\n",
-        " '00100011',\n",
-        " '01010001',\n",
-        " '00110101',\n",
-        " '11011010',\n",
-        " '01110001',\n",
-        " '01101000',\n",
-        " '01011000',\n",
-        " '10000010',\n",
-        " '00101110',\n",
-        " '01000000',\n",
-        " '10001001',\n",
-        " '00100110',\n",
-        " '01001001',\n",
-        " '01000101',\n",
-        " '10100110',\n",
-        " '10010011',\n",
-        " '01001110',\n",
-        " '01000000',\n",
-        " '10100001',\n",
-        " '11010010',\n",
-        " '00011010',\n",
-        " '00001000',\n",
-        " '11010000',\n",
-        " '00010101',\n",
-        " '01100100',\n",
-        " '01000100',\n",
-        " '10000000',\n",
-        " '01110111',\n",
-        " '00001001',\n",
-        " '00000101',\n",
-        " '00100101',\n",
-        " '01011000',\n",
-        " '01010000',\n",
-        " '01001100',\n",
-        " '00001101',\n",
-        " '00000100',\n",
-        " '11100010',\n",
-        " '11010100',\n",
-        " '00000000',\n",
-        " '11001101',\n",
-        " '00111000',\n",
-        " '00100110',\n",
-        " '11010110',\n",
-        " '00100000',\n",
-        " '00101101',\n",
-        " '01000101',\n",
-        " '00001010',\n",
-        " '01000110',\n",
-        " '11000110',\n",
-        " '01101110',\n",
-        " '10011100',\n",
-        " '11100010',\n",
-        " '11011100',\n",
-        " '00111100',\n",
-        " '00001000',\n",
-        " '00011110',\n",
-        " '00010000',\n",
-        " '01000011',\n",
-        " '00001101',\n",
-        " '10101100',\n",
-        " '00100100',\n",
-        " '01001110',\n",
-        " '01110100',\n",
-        " '00111010',\n",
-        " '01110001',\n",
-        " '00100100',\n",
-        " '11000100',\n",
-        " '01001001',\n",
-        " '01001000',\n",
-        " '10001000',\n",
-        " '01011000',\n",
-        " '11100010',\n",
-        " '00010001',\n",
-        " '00010001',\n",
-        " '11110001',\n",
-        " '01000001',\n",
-        " '10000000',\n",
-        " '01001001',\n",
-        " '00111000',\n",
-        " '00000011',\n",
-        " '01011100',\n",
-        " '11000000',\n",
-        " '01110100',\n",
-        " '00010010',\n",
-        " '10100100',\n",
-        " '00001100',\n",
-        " '01000100',\n",
-        " '01000110',\n",
-        " '10101100',\n",
-        " '10010101',\n",
-        " '00000100',\n",
-        " '10000000',\n",
-        " '00110110',\n",
-        " '10110110',\n",
-        " '01100111',\n",
-        " '01101001',\n",
-        " '00010001',\n",
-        " '00110010',\n",
-        " '00100001',\n",
-        " '00010010',\n",
-        " '00000001',\n",
-        " '11101000',\n",
-        " '01110011',\n",
-        " '11010000',\n",
-        " '00001100',\n",
-        " '01110011',\n",
-        " '01001000',\n",
-        " '01011100',\n",
-        " '00011101',\n",
-        " '01101110',\n",
-        " '01101101',\n",
-        " '10001110',\n",
-        " '00000010',\n",
-        " '00010000',\n",
-        " '10000100',\n",
-        " '01110100',\n",
-        " '10011010',\n",
-        " '01000010',\n",
-        " '01100000',\n",
-        " '00001101',\n",
-        " '00100010',\n",
-        " '00100100',\n",
-        " '01001001',\n",
-        " '10111000',\n",
-        " '11011000',\n",
-        " '01000100',\n",
-        " '11001001',\n",
-        " '00010101',\n",
-        " '10100000',\n",
-        " '11110011',\n",
-        " '00010011',\n",
-        " '00010000',\n",
-        " '11100100',\n",
-        " '01000100',\n",
-        " '00010001',\n",
-        " '00101000',\n",
-        " '11011100',\n",
-        " '01001001',\n",
-        " '10110101',\n",
-        " '00000111',\n",
-        " '10011011',\n",
-        " '01001000',\n",
-        " '01110100',\n",
-        " '00100001',\n",
-        " '01000000',\n",
-        " '01100100',\n",
-        " '01000110',\n",
-        " '11000110',\n",
-        " '10000000',\n",
-        " '01100000',\n",
-        " '01101000',\n",
-        " '00011100',\n",
-        " '00111001',\n",
-        " '00010010',\n",
-        " '01000100',\n",
-        " '01000110',\n",
-        " '00000100',\n",
-        " '10111001',\n",
-        " '00100000',\n",
-        " '00001101',\n",
-        " '10011000',\n",
-        " '00011100',\n",
-        " '10111001',\n",
-        " '10001001',\n",
-        " '00011000',\n",
-        " '01100010',\n",
-        " '00000110',\n",
-        " '01000110',\n",
-        " '11001110',\n",
-        " '01100111',\n",
-        " '01011100',\n",
-        " '11011010',\n",
-        " '00111011',\n",
-        " '11001110',\n",
-        " '01110011',\n",
-        " '01100000',\n",
-        " '00100100',\n",
-        " '00010101',\n",
-        " '10010000',\n",
-        " '00000100',\n",
-        " '00100100',\n",
-        " '11010110',\n",
-        " '10001001',\n",
-        " '00100010',\n",
-        " '00110011',\n",
-        " '10110100',\n",
-        " '11101001',\n",
-        " '00010111',\n",
-        " '10010100',\n",
-        " '00001000',\n",
-        " '01011100',\n",
-        " '11001000',\n",
-        " '00000111',\n",
-        " '00010000',\n",
-        " '10100100',\n",
-        " '01000100',\n",
-        " '10010000',\n",
-        " '10000100',\n",
-        " '01100001',\n",
-        " '00010010',\n",
-        " '01000010',\n",
-        " '10101011',\n",
-        " '00111011',\n",
-        " '00100010',\n",
-        " '01001111',\n",
-        " '10001000',\n",
-        " '01100100',\n",
-        " '10000110',\n",
-        " '10010001',\n",
-        " '01101111',\n",
-        " '00111100',\n",
-        " '01011000',\n",
-        " '11100011',\n",
-        " '10100000',\n",
-        " '00000110',\n",
-        " '01101010',\n",
-        " '11100100',\n",
-        " '10111010',\n",
-        " '10100010',\n",
-        " '01101110',\n",
-        " '00011000',\n",
-        " '00010001',\n",
-        " '00100001',\n",
-        " '10111101',\n",
-        " '10111000',\n",
-        " '00011000',\n",
-        " '11000100',\n",
-        " '00000000',\n",
-        " '00111010',\n",
-        " '01100000',\n",
-        " '00111000',\n",
-        " '10001000',\n",
-        " '01111001',\n",
-        " '11010000',\n",
-        " '10001000',\n",
-        " '10001100',\n",
-        " '01001000',\n",
-        " '00110000',\n",
-        " '00010000',\n",
-        " '01010011',\n",
-        " '01110100',\n",
-        " '10011011',\n",
-        " '00010011',\n",
-        " '11010101',\n",
-        " '10100000',\n",
-        " '01110000',\n",
-        " '11011100',\n",
-        " '10000101',\n",
-        " '00111000',\n",
-        " '10010011',\n",
-        " '00010010',\n",
-        " '00011010',\n",
-        " '01000110',\n",
-        " '10010010',\n",
-        " '10010001',\n",
-        " '10001010',\n",
-        " '00100100',\n",
-        " '00110001',\n",
-        " '00111010',\n",
-        " '10010001',\n",
-        " '00000001',\n",
-        " '10010111',\n",
-        " '01010100',\n",
-        " '00110001',\n",
-        " '10010100',\n",
-        " '01111011',\n",
-        " '11000110',\n",
-        " '10001001',\n",
-        " '10010000',\n",
-        " '00001101',\n",
-        " '00011010',\n",
-        " '00100110',\n",
-        " '11000000',\n",
-        " '00000001',\n",
-        " '00000000',\n",
-        " '01000001',\n",
-        " '00010110',\n",
-        " '01000111',\n",
-        " '00110101',\n",
-        " '10110001',\n",
-        " '00100001',\n",
-        " '00000110',\n",
-        " '00000111',\n",
-        " '00001100',\n",
-        " '00101110',\n",
-        " '01000101',\n",
-        " '00011000',\n",
-        " '01000101',\n",
-        " '11000101',\n",
-        " '11010011',\n",
-        " '01101100',\n",
-        " '11100111',\n",
-        " '00110011',\n",
-        " '00100010',\n",
-        " '01101101',\n",
-        " '10001010',\n",
-        " '11100010',\n",
-        " '10000010',\n",
-        " '00110101',\n",
-        " '10101000',\n",
-        " '01010010',\n",
-        " '11110001',\n",
-        " '00100111',\n",
-        " '00011010',\n",
-        " '01010011',\n",
-        " '00010010',\n",
-        " '00001011',\n",
-        " '10000111',\n",
-        " '10100001',\n",
-        " '11110101',\n",
-        " '01000000',\n",
-        " '11101011',\n",
-        " '00101001',\n",
-        " '00110001',\n",
-        " '10100010',\n",
-        " '00100010',\n",
-        " '00000001',\n",
-        " '00100100',\n",
-        " '00100010',\n",
-        " '01110010',\n",
-        " '01101011',\n",
-        " '01001000',\n",
-        " '00001001',\n",
-        " '10100010',\n",
-        " '01101110',\n",
-        " '01100100',\n",
-        " '01001110',\n",
-        " '00010110',\n",
-        " '10011101',\n",
-        " '10101000',\n",
-        " '00011011',\n",
-        " '11100010',\n",
-        " '10111000',\n",
-        " '10010001',\n",
-        " '11101110',\n",
-        " '11000011',\n",
-        " '01000000',\n",
-        " '10111001',\n",
-        " '00110110',\n",
-        " '10110010',\n",
-        " '00011011',\n",
-        " '10100100',\n",
-        " '00000110',\n",
-        " '10010010',\n",
-        " '01001000',\n",
-        " '10011001',\n",
-        " '01000000',\n",
-        " '01000110',\n",
-        " '10101110',\n",
-        " '01100110',\n",
-        " '01110000',\n",
-        " '11000001',\n",
-        " '00111001',\n",
-        " '10010000',\n",
-        " '10000000',\n",
-        " '01000100',\n",
-        " '10010000',\n",
-        " '00101000',\n",
-        " '10111001',\n",
-        " '11010011',\n",
-        " '01100100',\n",
-        " '10011000',\n",
-        " '01010011',\n",
-        " '10000010',\n",
-        " '10000100',\n",
-        " '01101010',\n",
-        " '00100011',\n",
-        " '00100011',\n",
-        " '00011111',\n",
-        " '00001101',\n",
-        " '10110001',\n",
-        " '00010000',\n",
-        " '11011001',\n",
-        " '10010000',\n",
-        " '11001110',\n",
-        " '00011010',\n",
-        " '00010000',\n",
-        " '10110010',\n",
-        " '00010000',\n",
-        " '01110011',\n",
-        " '00000100',\n",
-        " '01011010',\n",
-        " '11101001',\n",
-        " '01000100',\n",
-        " '01000000',\n",
-        " '00000001',\n",
-        " '00011010',\n",
-        " '00111001',\n",
-        " '10001010',\n",
-        " '10010011',\n",
-        " '10011001',\n",
-        " '01000111',\n",
-        " '00010000',\n",
-        " '10010000',\n",
-        " '11110011',\n",
-        " '01100001',\n",
-        " '01010001',\n",
-        " '00110111',\n",
-        " '00111010',\n",
-        " '00100011',\n",
-        " '10001101',\n",
-        " '00010000',\n",
-        " '00000111',\n",
-        " '01100000',\n",
-        " '00000000',\n",
-        " '01101011',\n",
-        " '10001000',\n",
-        " '01000101',\n",
-        " '10001101',\n",
-        " '11001000',\n",
-        " '01101001',\n",
-        " '11101001',\n",
-        " '00100011',\n",
-        " '00100010',\n",
-        " '01100100',\n",
-        " '00000011',\n",
-        " '10100010',\n",
-        " '10000010',\n",
-        " '00001000',\n",
-        " '10010101',\n",
-        " '00100011',\n",
-        " '00011011',\n",
-        " '00111000',\n",
-        " '10000010',\n",
-        " '01101100',\n",
-        " '10011001',\n",
-        " '01011110',\n",
-        " '01001010',\n",
-        " '00001010',\n",
-        " '10010011',\n",
-        " '00000001',\n",
-        " '11000000',\n",
-        " '11001001',\n",
-        " '10110100',\n",
-        " '10010110',\n",
-        " '01110011',\n",
-        " '01010000',\n",
-        " '00100001',\n",
-        " '10010000',\n",
-        " '10001100',\n",
-        " '10001011',\n",
-        " '11000000',\n",
-        " '11100101',\n",
-        " '10100010',\n",
-        " '01101110',\n",
-        " '00000001',\n",
-        " '01001001',\n",
-        " '00100111',\n",
-        " '00111010',\n",
-        " '01010010',\n",
-        " '01111001',\n",
-        " '01011010',\n",
-        " '10110110',\n",
-        " '10010000',\n",
-        " '10001110',\n",
-        " '01110100',\n",
-        " '11000000',\n",
-        " '00100011',\n",
-        " '10101101',\n",
-        " '01101000',\n",
-        " '10001100',\n",
-        " '10100101',\n",
-        " '01111001',\n",
-        " '00111000',\n",
-        " '10101111',\n",
-        " '00011001',\n",
-        " '01100110',\n",
-        " '01011000',\n",
-        " '10110101',\n",
-        " '11110001',\n",
-        " '00000001',\n",
-        " '00001000',\n",
-        " '00001100',\n",
-        " '00101101',\n",
-        " '11001101',\n",
-        " '00000001',\n",
-        " '11000001',\n",
-        " '01001001',\n",
-        " '10110110',\n",
-        " '01100010',\n",
-        " '01101100',\n",
-        " '11000100',\n",
-        " '00010000',\n",
-        " '01011001',\n",
-        " '01101110',\n",
-        " '01101001',\n",
-        " '00001011',\n",
-        " '00110111',\n",
-        " '00000010',\n",
-        " '01100100',\n",
-        " '00010101',\n",
-        " '01011101',\n",
-        " '01100001',\n",
-        " '10101110',\n",
-        " '11010101',\n",
-        " '01101011',\n",
-        " '01001000',\n",
-        " '01000001',\n",
-        " '11001101',\n",
-        " '00001000',\n",
-        " '01110010',\n",
-        " '00001101',\n",
-        " '00110010',\n",
-        " '00011001',\n",
-        " '10010011',\n",
-        " '00000001',\n",
-        " '11001000',\n",
-        " '01000000',\n",
-        " '01001100',\n",
-        " '10000101',\n",
-        " '00000000',\n",
-        " '00001000',\n",
-        " '11111000',\n",
-        " '11000100',\n",
-        " '01010001',\n",
-        " '01110100',\n",
-        " '10001110',\n",
-        " '01000010',\n",
-        " '01000110',\n",
-        " '00101111',\n",
-        " '00000010',\n",
-        " '11001000',\n",
-        " '00110100',\n",
-        " '00010001',\n",
-        " '10100110',\n",
-        " '01000000',\n",
-        " '11100011',\n",
-        " '00010010',\n",
-        " '00111010',\n",
-        " '10000111',\n",
-        " '10101001',\n",
-        " '00100101',\n",
-        " '01001000',\n",
-        " '10111011',\n",
-        " '00010011',\n",
-        " '01101100',\n",
-        " '10011101',\n",
-        " '00100100',\n",
-        " '00110110',\n",
-        " '10001000',\n",
-        " '10100010',\n",
-        " '00011100',\n",
-        " '01010111',\n",
-        " '11000100',\n",
-        " '01100000']"
+        "['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": 21
+     "prompt_number": 8
     },
     {
      "cell_type": "code",
      "collapsed": false,
      "input": [
-      "[(int(c, 2)) for c in chunks(c8b, 8)]"
+      "[(int(c, 2)) for c in chunks(c8b, 5)]"
      ],
      "language": "python",
      "metadata": {},
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 20,
+       "prompt_number": 9,
        "text": [
-        "[1,\n",
-        " 68,\n",
-        " 2,\n",
-        " 81,\n",
-        " 211,\n",
-        " 152,\n",
+        "[0,\n",
         " 5,\n",
-        " 51,\n",
-        " 197,\n",
+        " 2,\n",
+        " 0,\n",
+        " 4,\n",
+        " 20,\n",
         " 14,\n",
-        " 89,\n",
-        " 38,\n",
-        " 41,\n",
-        " 18,\n",
-        " 51,\n",
-        " 60,\n",
-        " 143,\n",
-        " 56,\n",
-        " 128,\n",
-        " 234,\n",
-        " 195,\n",
-        " 162,\n",
-        " 242,\n",
-        " 196,\n",
-        " 196,\n",
-        " 112,\n",
-        " 6,\n",
-        " 247,\n",
-        " 165,\n",
-        " 166,\n",
-        " 92,\n",
-        " 201,\n",
-        " 22,\n",
-        " 144,\n",
-        " 164,\n",
-        " 113,\n",
-        " 80,\n",
-        " 232,\n",
-        " 206,\n",
-        " 67,\n",
-        " 27,\n",
-        " 136,\n",
-        " 74,\n",
-        " 50,\n",
-        " 66,\n",
-        " 141,\n",
-        " 9,\n",
-        " 22,\n",
-        " 148,\n",
-        " 147,\n",
-        " 88,\n",
-        " 0,\n",
-        " 89,\n",
-        " 78,\n",
-        " 200,\n",
-        " 35,\n",
-        " 103,\n",
-        " 26,\n",
-        " 185,\n",
-        " 205,\n",
-        " 36,\n",
-        " 79,\n",
-        " 64,\n",
-        " 30,\n",
-        " 32,\n",
-        " 169,\n",
-        " 34,\n",
-        " 66,\n",
-        " 78,\n",
-        " 85,\n",
-        " 146,\n",
-        " 8,\n",
-        " 179,\n",
-        " 173,\n",
-        " 210,\n",
-        " 152,\n",
-        " 220,\n",
-        " 5,\n",
-        " 187,\n",
+        " 19,\n",
+        " 19,\n",
         " 0,\n",
-        " 36,\n",
-        " 152,\n",
-        " 214,\n",
-        " 141,\n",
-        " 6,\n",
-        " 107,\n",
-        " 98,\n",
-        " 119,\n",
-        " 28,\n",
-        " 243,\n",
-        " 147,\n",
-        " 64,\n",
-        " 228,\n",
-        " 45,\n",
-        " 162,\n",
-        " 108,\n",
-        " 164,\n",
-        " 129,\n",
-        " 68,\n",
-        " 128,\n",
-        " 107,\n",
-        " 72,\n",
-        " 68,\n",
-        " 33,\n",
-        " 4,\n",
-        " 141,\n",
-        " 166,\n",
-        " 6,\n",
-        " 146,\n",
-        " 81,\n",
-        " 171,\n",
-        " 140,\n",
-        " 130,\n",
-        " 35,\n",
-        " 22,\n",
-        " 148,\n",
-        " 134,\n",
-        " 103,\n",
-        " 213,\n",
-        " 200,\n",
         " 2,\n",
-        " 36,\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",
-        " 142,\n",
-        " 1,\n",
         " 7,\n",
-        " 22,\n",
-        " 162,\n",
-        " 113,\n",
-        " 109,\n",
-        " 200,\n",
-        " 131,\n",
-        " 69,\n",
-        " 242,\n",
-        " 145,\n",
-        " 192,\n",
-        " 51,\n",
-        " 142,\n",
-        " 110,\n",
-        " 67,\n",
-        " 192,\n",
-        " 9,\n",
-        " 146,\n",
-        " 228,\n",
-        " 107,\n",
-        " 73,\n",
-        " 32,\n",
-        " 26,\n",
-        " 46,\n",
-        " 12,\n",
-        " 214,\n",
-        " 73,\n",
-        " 69,\n",
-        " 177,\n",
-        " 114,\n",
-        " 35,\n",
-        " 135,\n",
-        " 132,\n",
-        " 196,\n",
+        " 10,\n",
         " 24,\n",
-        " 150,\n",
-        " 180,\n",
-        " 88,\n",
-        " 11,\n",
-        " 2,\n",
-        " 200,\n",
-        " 70,\n",
-        " 160,\n",
-        " 209,\n",
-        " 139,\n",
-        " 109,\n",
-        " 136,\n",
-        " 173,\n",
-        " 12,\n",
-        " 91,\n",
-        " 229,\n",
-        " 55,\n",
-        " 44,\n",
-        " 133,\n",
-        " 156,\n",
-        " 70,\n",
-        " 202,\n",
-        " 2,\n",
-        " 40,\n",
-        " 33,\n",
-        " 8,\n",
-        " 132,\n",
-        " 1,\n",
-        " 203,\n",
-        " 105,\n",
-        " 45,\n",
-        " 32,\n",
-        " 56,\n",
-        " 241,\n",
-        " 154,\n",
-        " 229,\n",
-        " 55,\n",
-        " 4,\n",
-        " 147,\n",
-        " 108,\n",
-        " 151,\n",
-        " 82,\n",
-        " 162,\n",
-        " 163,\n",
-        " 117,\n",
-        " 102,\n",
-        " 247,\n",
-        " 0,\n",
-        " 132,\n",
-        " 68,\n",
-        " 132,\n",
-        " 135,\n",
-        " 29,\n",
-        " 15,\n",
-        " 145,\n",
-        " 42,\n",
-        " 66,\n",
         " 14,\n",
-        " 100,\n",
-        " 177,\n",
-        " 65,\n",
-        " 22,\n",
-        " 156,\n",
-        " 129,\n",
-        " 89,\n",
-        " 0,\n",
-        " 233,\n",
-        " 184,\n",
-        " 243,\n",
-        " 156,\n",
-        " 200,\n",
-        " 246,\n",
-        " 137,\n",
-        " 64,\n",
-        " 115,\n",
-        " 79,\n",
-        " 98,\n",
-        " 77,\n",
-        " 149,\n",
-        " 195,\n",
-        " 227,\n",
-        " 18,\n",
-        " 57,\n",
-        " 173,\n",
+        " 17,\n",
+        " 15,\n",
+        " 5,\n",
+        " 17,\n",
+        " 6,\n",
         " 4,\n",
-        " 140,\n",
-        " 50,\n",
-        " 13,\n",
-        " 196,\n",
-        " 33,\n",
-        " 28,\n",
+        " 14,\n",
         " 0,\n",
-        " 50,\n",
-        " 98,\n",
-        " 64,\n",
-        " 167,\n",
-        " 52,\n",
-        " 21,\n",
-        " 160,\n",
-        " 28,\n",
-        " 73,\n",
-        " 40,\n",
-        " 206,\n",
-        " 68,\n",
-        " 139,\n",
-        " 164,\n",
-        " 73,\n",
-        " 196,\n",
-        " 226,\n",
-        " 64,\n",
-        " 166,\n",
-        " 249,\n",
-        " 0,\n",
-        " 4,\n",
-        " 58,\n",
-        " 198,\n",
-        " 121,\n",
-        " 22,\n",
-        " 242,\n",
-        " 112,\n",
-        " 29,\n",
-        " 49,\n",
-        " 76,\n",
-        " 33,\n",
-        " 147,\n",
-        " 136,\n",
-        " 136,\n",
-        " 182,\n",
-        " 64,\n",
-        " 26,\n",
-        " 241,\n",
-        " 56,\n",
-        " 198,\n",
-        " 141,\n",
-        " 136,\n",
-        " 136,\n",
-        " 249,\n",
-        " 204,\n",
-        " 241,\n",
-        " 37,\n",
-        " 14,\n",
-        " 213,\n",
-        " 76,\n",
-        " 2,\n",
-        " 32,\n",
-        " 136,\n",
-        " 69,\n",
-        " 198,\n",
-        " 205,\n",
-        " 68,\n",
-        " 72,\n",
-        " 66,\n",
-        " 0,\n",
-        " 146,\n",
-        " 33,\n",
-        " 8,\n",
-        " 129,\n",
-        " 162,\n",
-        " 78,\n",
-        " 48,\n",
-        " 136,\n",
-        " 230,\n",
-        " 54,\n",
-        " 51,\n",
-        " 34,\n",
-        " 78,\n",
         " 3,\n",
-        " 0,\n",
-        " 50,\n",
-        " 35,\n",
-        " 81,\n",
-        " 53,\n",
-        " 218,\n",
-        " 113,\n",
-        " 104,\n",
-        " 88,\n",
-        " 130,\n",
-        " 46,\n",
-        " 64,\n",
-        " 137,\n",
-        " 38,\n",
-        " 73,\n",
-        " 69,\n",
-        " 166,\n",
-        " 147,\n",
-        " 78,\n",
-        " 64,\n",
-        " 161,\n",
-        " 210,\n",
-        " 26,\n",
-        " 8,\n",
-        " 208,\n",
-        " 21,\n",
-        " 100,\n",
-        " 68,\n",
-        " 128,\n",
-        " 119,\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",
-        " 37,\n",
-        " 88,\n",
-        " 80,\n",
-        " 76,\n",
-        " 13,\n",
-        " 4,\n",
-        " 226,\n",
-        " 212,\n",
-        " 0,\n",
-        " 205,\n",
-        " 56,\n",
-        " 38,\n",
-        " 214,\n",
-        " 32,\n",
-        " 45,\n",
-        " 69,\n",
-        " 10,\n",
-        " 70,\n",
-        " 198,\n",
-        " 110,\n",
-        " 156,\n",
-        " 226,\n",
-        " 220,\n",
-        " 60,\n",
-        " 8,\n",
-        " 30,\n",
-        " 16,\n",
-        " 67,\n",
-        " 13,\n",
-        " 172,\n",
-        " 36,\n",
-        " 78,\n",
-        " 116,\n",
-        " 58,\n",
-        " 113,\n",
-        " 36,\n",
-        " 196,\n",
-        " 73,\n",
-        " 72,\n",
-        " 136,\n",
-        " 88,\n",
-        " 226,\n",
-        " 17,\n",
-        " 17,\n",
-        " 241,\n",
-        " 65,\n",
-        " 128,\n",
-        " 73,\n",
-        " 56,\n",
-        " 3,\n",
-        " 92,\n",
-        " 192,\n",
-        " 116,\n",
+        " 4,\n",
+        " 14,\n",
+        " 5,\n",
+        " 8,\n",
+        " 14,\n",
+        " 17,\n",
+        " 19,\n",
         " 18,\n",
-        " 164,\n",
+        " 3,\n",
+        " 3,\n",
+        " 14,\n",
+        " 4,\n",
+        " 4,\n",
+        " 20,\n",
         " 12,\n",
-        " 68,\n",
-        " 70,\n",
-        " 172,\n",
-        " 149,\n",
-        " 4,\n",
-        " 128,\n",
-        " 54,\n",
-        " 182,\n",
-        " 103,\n",
-        " 105,\n",
-        " 17,\n",
-        " 50,\n",
-        " 33,\n",
         " 18,\n",
-        " 1,\n",
-        " 232,\n",
-        " 115,\n",
-        " 208,\n",
-        " 12,\n",
-        " 115,\n",
-        " 72,\n",
-        " 92,\n",
-        " 29,\n",
-        " 110,\n",
-        " 109,\n",
-        " 142,\n",
         " 2,\n",
-        " 16,\n",
-        " 132,\n",
-        " 116,\n",
-        " 154,\n",
-        " 66,\n",
-        " 96,\n",
-        " 13,\n",
-        " 34,\n",
-        " 36,\n",
-        " 73,\n",
-        " 184,\n",
-        " 216,\n",
-        " 68,\n",
-        " 201,\n",
-        " 21,\n",
-        " 160,\n",
-        " 243,\n",
-        " 19,\n",
-        " 16,\n",
-        " 228,\n",
-        " 68,\n",
         " 17,\n",
-        " 40,\n",
-        " 220,\n",
-        " 73,\n",
-        " 181,\n",
-        " 7,\n",
-        " 155,\n",
-        " 72,\n",
-        " 116,\n",
-        " 33,\n",
-        " 64,\n",
-        " 100,\n",
-        " 70,\n",
-        " 198,\n",
-        " 128,\n",
-        " 96,\n",
-        " 104,\n",
-        " 28,\n",
-        " 57,\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",
-        " 68,\n",
-        " 70,\n",
+        " 19,\n",
+        " 22,\n",
+        " 8,\n",
         " 4,\n",
-        " 185,\n",
-        " 32,\n",
         " 13,\n",
-        " 152,\n",
-        " 28,\n",
-        " 185,\n",
-        " 137,\n",
-        " 24,\n",
-        " 98,\n",
-        " 6,\n",
-        " 70,\n",
-        " 206,\n",
-        " 103,\n",
-        " 92,\n",
-        " 218,\n",
-        " 59,\n",
-        " 206,\n",
-        " 115,\n",
-        " 96,\n",
-        " 36,\n",
+        " 19,\n",
+        " 17,\n",
         " 21,\n",
-        " 144,\n",
-        " 4,\n",
-        " 36,\n",
-        " 214,\n",
-        " 137,\n",
-        " 34,\n",
-        " 51,\n",
-        " 180,\n",
-        " 233,\n",
-        " 23,\n",
-        " 148,\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",
-        " 92,\n",
-        " 200,\n",
+        " 4,\n",
+        " 11,\n",
         " 7,\n",
-        " 16,\n",
-        " 164,\n",
-        " 68,\n",
-        " 144,\n",
-        " 132,\n",
-        " 97,\n",
+        " 11,\n",
+        " 14,\n",
         " 18,\n",
-        " 66,\n",
-        " 171,\n",
-        " 59,\n",
-        " 34,\n",
-        " 79,\n",
-        " 136,\n",
-        " 100,\n",
-        " 134,\n",
-        " 145,\n",
-        " 111,\n",
-        " 60,\n",
-        " 88,\n",
-        " 227,\n",
-        " 160,\n",
-        " 6,\n",
-        " 106,\n",
-        " 228,\n",
-        " 186,\n",
-        " 162,\n",
-        " 110,\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",
-        " 33,\n",
-        " 189,\n",
-        " 184,\n",
-        " 24,\n",
-        " 196,\n",
-        " 0,\n",
-        " 58,\n",
-        " 96,\n",
-        " 56,\n",
-        " 136,\n",
-        " 121,\n",
-        " 208,\n",
-        " 136,\n",
-        " 140,\n",
-        " 72,\n",
-        " 48,\n",
-        " 16,\n",
-        " 83,\n",
-        " 116,\n",
-        " 155,\n",
-        " 19,\n",
-        " 213,\n",
-        " 160,\n",
-        " 112,\n",
-        " 220,\n",
-        " 133,\n",
-        " 56,\n",
-        " 147,\n",
+        " 7,\n",
+        " 14,\n",
+        " 7,\n",
+        " 7,\n",
+        " 19,\n",
         " 18,\n",
-        " 26,\n",
-        " 70,\n",
-        " 146,\n",
-        " 145,\n",
-        " 138,\n",
-        " 36,\n",
-        " 49,\n",
-        " 58,\n",
-        " 145,\n",
-        " 1,\n",
-        " 151,\n",
-        " 84,\n",
-        " 49,\n",
-        " 148,\n",
-        " 123,\n",
-        " 198,\n",
-        " 137,\n",
-        " 144,\n",
-        " 13,\n",
-        " 26,\n",
-        " 38,\n",
-        " 192,\n",
-        " 1,\n",
+        " 13,\n",
         " 0,\n",
-        " 65,\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",
-        " 71,\n",
-        " 53,\n",
-        " 177,\n",
-        " 33,\n",
+        " 19,\n",
+        " 0,\n",
+        " 13,\n",
+        " 4,\n",
+        " 18,\n",
+        " 17,\n",
+        " 21,\n",
+        " 14,\n",
         " 6,\n",
-        " 7,\n",
-        " 12,\n",
-        " 46,\n",
-        " 69,\n",
+        " 8,\n",
+        " 4,\n",
+        " 8,\n",
         " 24,\n",
-        " 69,\n",
-        " 197,\n",
-        " 211,\n",
-        " 108,\n",
-        " 231,\n",
-        " 51,\n",
-        " 34,\n",
-        " 109,\n",
-        " 138,\n",
-        " 226,\n",
-        " 130,\n",
-        " 53,\n",
-        " 168,\n",
-        " 82,\n",
-        " 241,\n",
-        " 39,\n",
-        " 26,\n",
-        " 83,\n",
-        " 18,\n",
-        " 11,\n",
-        " 135,\n",
-        " 161,\n",
-        " 245,\n",
-        " 64,\n",
-        " 235,\n",
-        " 41,\n",
-        " 49,\n",
-        " 162,\n",
-        " 34,\n",
-        " 1,\n",
-        " 36,\n",
-        " 34,\n",
-        " 114,\n",
-        " 107,\n",
-        " 72,\n",
-        " 9,\n",
-        " 162,\n",
-        " 110,\n",
-        " 100,\n",
-        " 78,\n",
         " 22,\n",
-        " 157,\n",
-        " 168,\n",
-        " 27,\n",
-        " 226,\n",
-        " 184,\n",
-        " 145,\n",
-        " 238,\n",
-        " 195,\n",
-        " 64,\n",
-        " 185,\n",
-        " 54,\n",
-        " 178,\n",
-        " 27,\n",
-        " 164,\n",
+        " 18,\n",
+        " 18,\n",
+        " 3,\n",
         " 6,\n",
-        " 146,\n",
-        " 72,\n",
-        " 153,\n",
-        " 64,\n",
-        " 70,\n",
-        " 174,\n",
-        " 102,\n",
-        " 112,\n",
-        " 193,\n",
-        " 57,\n",
-        " 144,\n",
-        " 128,\n",
-        " 68,\n",
-        " 144,\n",
-        " 40,\n",
-        " 185,\n",
-        " 211,\n",
-        " 100,\n",
-        " 152,\n",
-        " 83,\n",
-        " 130,\n",
-        " 132,\n",
-        " 106,\n",
-        " 35,\n",
-        " 35,\n",
-        " 31,\n",
-        " 13,\n",
-        " 177,\n",
-        " 16,\n",
-        " 217,\n",
-        " 144,\n",
-        " 206,\n",
-        " 26,\n",
-        " 16,\n",
-        " 178,\n",
-        " 16,\n",
-        " 115,\n",
-        " 4,\n",
-        " 90,\n",
-        " 233,\n",
-        " 68,\n",
-        " 64,\n",
-        " 1,\n",
-        " 26,\n",
-        " 57,\n",
-        " 138,\n",
-        " 147,\n",
-        " 153,\n",
-        " 71,\n",
-        " 16,\n",
-        " 144,\n",
-        " 243,\n",
-        " 97,\n",
-        " 81,\n",
-        " 55,\n",
-        " 58,\n",
-        " 35,\n",
-        " 141,\n",
-        " 16,\n",
-        " 7,\n",
-        " 96,\n",
-        " 0,\n",
-        " 107,\n",
-        " 136,\n",
-        " 69,\n",
-        " 141,\n",
-        " 200,\n",
-        " 105,\n",
-        " 233,\n",
-        " 35,\n",
-        " 34,\n",
-        " 100,\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",
-        " 162,\n",
-        " 130,\n",
-        " 8,\n",
-        " 149,\n",
-        " 35,\n",
-        " 27,\n",
-        " 56,\n",
-        " 130,\n",
-        " 108,\n",
-        " 153,\n",
-        " 94,\n",
-        " 74,\n",
-        " 10,\n",
-        " 147,\n",
-        " 1,\n",
-        " 192,\n",
-        " 201,\n",
-        " 180,\n",
-        " 150,\n",
-        " 115,\n",
-        " 80,\n",
-        " 33,\n",
-        " 144,\n",
-        " 140,\n",
-        " 139,\n",
-        " 192,\n",
-        " 229,\n",
-        " 162,\n",
-        " 110,\n",
-        " 1,\n",
-        " 73,\n",
-        " 39,\n",
-        " 58,\n",
-        " 82,\n",
-        " 121,\n",
-        " 90,\n",
-        " 182,\n",
-        " 144,\n",
-        " 142,\n",
-        " 116,\n",
-        " 192,\n",
-        " 35,\n",
-        " 173,\n",
-        " 104,\n",
-        " 140,\n",
-        " 165,\n",
-        " 121,\n",
-        " 56,\n",
-        " 175,\n",
-        " 25,\n",
-        " 102,\n",
-        " 88,\n",
-        " 181,\n",
-        " 241,\n",
-        " 1,\n",
+        " 17,\n",
+        " 13,\n",
         " 8,\n",
-        " 12,\n",
-        " 45,\n",
-        " 205,\n",
-        " 1,\n",
-        " 193,\n",
-        " 73,\n",
-        " 182,\n",
-        " 98,\n",
-        " 108,\n",
-        " 196,\n",
-        " 16,\n",
-        " 89,\n",
-        " 110,\n",
-        " 105,\n",
-        " 11,\n",
-        " 55,\n",
-        " 2,\n",
-        " 100,\n",
-        " 21,\n",
-        " 93,\n",
-        " 97,\n",
-        " 174,\n",
-        " 213,\n",
-        " 107,\n",
-        " 72,\n",
-        " 65,\n",
-        " 205,\n",
-        " 8,\n",
-        " 114,\n",
-        " 13,\n",
-        " 50,\n",
-        " 25,\n",
-        " 147,\n",
-        " 1,\n",
-        " 200,\n",
-        " 64,\n",
-        " 76,\n",
-        " 133,\n",
-        " 0,\n",
-        " 8,\n",
-        " 248,\n",
-        " 196,\n",
-        " 81,\n",
-        " 116,\n",
-        " 142,\n",
-        " 66,\n",
-        " 70,\n",
-        " 47,\n",
-        " 2,\n",
-        " 200,\n",
-        " 52,\n",
+        " 19,\n",
         " 17,\n",
-        " 166,\n",
-        " 64,\n",
-        " 227,\n",
+        " 13,\n",
+        " 23,\n",
+        " 4,\n",
+        " 8,\n",
+        " 6,\n",
+        " 17,\n",
+        " 15,\n",
         " 18,\n",
-        " 58,\n",
-        " 135,\n",
-        " 169,\n",
-        " 37,\n",
-        " 72,\n",
-        " 187,\n",
-        " 19,\n",
-        " 108,\n",
-        " 157,\n",
-        " 36,\n",
-        " 54,\n",
-        " 136,\n",
-        " 162,\n",
-        " 28,\n",
-        " 87,\n",
-        " 196,\n",
-        " 96]"
-       ]
-      }
-     ],
-     "prompt_number": 20
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "bytes([(int(c, 2)) for c in chunks(c8b, 8)])"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 18,
+        " 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": [
+        "<matplotlib.axes.AxesSubplot at 0x7f2de5006ba8>"
+       ]
+      },
+      {
+       "metadata": {},
+       "output_type": "display_data",
+       "png": "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\nfwNwK7U2g91uAAAAAElFTkSuQmCC\n",
+       "text": [
+        "<matplotlib.figure.Figure at 0x7f2de5006198>"
+       ]
+      }
+     ],
+     "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": [
+        "<matplotlib.axes.AxesSubplot at 0x7f2de80f8a90>"
+       ]
+      },
+      {
+       "metadata": {},
+       "output_type": "display_data",
+       "png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAD+CAYAAAAgT5JOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztnX2UHNV55n8DigSGEa3BRCCMGUK0BgLxrGUZ59jmNB8C\nxbH52BAQuwGNd9cnoMWYs9ks4N0sUjhRxtqTjSG7jrHBGhEbDAksCK8QEkjt4A8YkGksIwtJ2CKS\ngmRjISRsR4sW7R/vbbrU091Vdbu75nbX8zunT1Xfuk/d91bX9Nv1PtU9IIQQQgghhBBCCCGEEEII\nIYQQQgghhBBCCCFEV3IL8CKwHrgXmAIMAKuBTcAqoFDTfzOwEbgw0j7L7WMzcHukfQpwv2t/Gjg5\nsm2+G2MTcE27JiSEEKJ1BoEfY2/iYG/k84ElwH92bTcBI279DKAM/JrTbgH63LYx4ENufQUw160v\nAL7o1q8EvuHWB4CXseRTiKwLIYQIgAHgJWAaMAl4FJiDXR1Md32Od8/Brh5uiuhXAh8GTgB+FGmf\nB3wp0udstz4J+Jlbvwr4m4jmS04nhBAiAw6L2b4b+EvgH4F/AvZgpaXpwC7XZxfVZDED2B7RbwdO\nrNO+w7Xjltvc+gHgDeDYJvsSQgiRAXEJ4lTgRqxcNAM4GvjDmj4H3UMIIUQPMSlm+weB7wI/d88f\nAn4H2ImVlnZi5aOfuu07gJMi+vdgn/x3uPXa9ormvdgVyiTgGDfeDqAY0ZwErKkN8NRTTz348ssv\nx0xDCCFEDS8AQ806xF1BbMQ8hCMxs/kCYAPmRcx3feYDD7v15ZhPMBk4BZiJmdM7gb2Y19AHXA08\nEtFU9nU58KRbX4XdBVXAPJA5wOO1Ab788sscPHgw1ePWW28NUhNqXJpLmHFpLmHG1S1zAd4f8/4f\newXxAnAP8BzwNvB94MtAP/AA8O+ArcAVrv8G174B8xMWUC0/LQBGsWSzAjOnAe4G/ha7zfXnVI3o\n3cBtwLPu+SLMA2mZrVu3BqkJNS4fTahx+WhCjctHE2pcPppQ4/LRhBpXXIIAu6V1SU3bbuxqoh6L\n3aOWdcBZddr3U00wtSx1DyGEEBlz+EQH0AYWLly4MJWgUCgwODgYnCbUuHw0ocblowk1Lh9NqHH5\naEKNy0czEXEtWrQIrDLTkL5mG7uEg66eJoQQIiF9fX0QkwPiTOqepFQqBakJNS4fTahx+WhCjctH\nE2pcPppQ4/LRhBpXLhOEEEKIeFRiEkKIHKISkxBCCG9ymSBCrfeFGpePJtS4fDShxuWjCTUuH02o\ncfloQo0ryfcgRGBMnTrAvn2vj2vv75/G3r27JyAiIUQvIg+iC7HaYb0595G3YyGE8EMehBBCCG9y\nmSBCrff5jAHpNaHOJVRNqHH5aEKNy0cTalw+mlDjymWCEEIIEY88iC5EHoQQolXkQQghhPAmlwki\n1HqfPIgwNaHG5aMJNS4fTahx+WhCjSuXCUIIIUQ88iC6EHkQQohWkQchhBDCm1wmiFDrffIgwtSE\nGpePJtS4fDShxuWjCTWuJAnifcDzkccbwA3AALAa2ASsAgoRzS3AZmAjcGGkfRaw3m27PdI+Bbjf\ntT8NnBzZNt+NsQm4Jtm0hBBCtEpaD+IwYAfwIeAzwGvAEuAmYBpwM3AGcC8wGzgReAKYiRXNx4Dr\n3XIFcAewElgAnOmWVwKXAfOwJPQsllgA1rn1PZGY5EFUt8iDEEIkohMexAXAFmAbcDGwzLUvAy51\n65cA9wFvAVtd/7OBE4B+LDkA3BPRRPf1IHC+W78IuzrZ4x6rgbkpYxZCCOFB2gQxD3vzB5gO7HLr\nu9xzgBnA9ohmO3YlUdu+w7Xjltvc+gGsjHVsk321RKj1PnkQYWpCjctHE2pcPppQ4/LRhBpXmgQx\nGfgk8Hd1th2kfs1DCCFEl5LmHwb9LuYB/Mw93wUcD+zEykc/de07gJMiuvdgn/x3uPXa9ormvcA/\nuZiOAX7u2osRzUnAmtrAhoeHGRwcBKBQKDA0NESxaLJKxqx9XqHR9nY8LxaLHet/KCUqhymtvpPz\nT/s87fGKziHteGnnn7Z/qPNP2z/k+Yd8voT491IqlRgdHWV0dPSd98s40pjU3wAeo+oVLMHexD+P\nmdMFDjWpP0TVpP5N7ArjGewOqDHg/3CoSX0WcB1WxrqUqkn9HPABF+s6ty6TWia1EKIF2mlSH4UZ\n1A9F2kaAOdjtp+e55wAbgAfc8jHszb/yrrUAuAu7nXULlhwA7sY8h83AjViiAdgN3IbdyTQGLOLQ\n5OBF7aeCUDQ+Y8iD6Lwm1Lh8NKHG5aMJNS4fTahxJS0x/QJ4d03bbixp1GOxe9SyDrtSqGU/cEWD\nfS11DyGEEBmi32LqQlRiEkK0in6LSQghhDe5TBCh1vvkQYSpCTUuH02ocfloQo3LRxNqXLlMEEII\nIeKRB9GFyIMQQrSKPAghhBDe5DJBhFrvkwcRpibUuHw0ocblowk1Lh9NqHHlMkEIIYSIRx5EFyIP\nQgjRKvIghBBCeJPLBBFqvU8eRJiaUOPy0YQal48m1Lh8NKHGlcsEIYQQIh55EF2IPAghRKvIgxBC\nCOFNLhNEqPU+eRBhakKNy0cTalw+mlDj8tGEGlcuE4QQQoh45EF0IfIghBCtIg9CCCGEN7lMEKHW\n++RBhKkJNS4fTahx+WhCjctHE2pcSRNEAfh74EfABuBsYABYDWwCVrk+FW4BNgMbgQsj7bOA9W7b\n7ZH2KcD9rv1p4OTItvlujE3ANQnjFUII0SJJPYhlwLeArwKTgKOA/wK8BiwBbgKmATcDZwD3ArOB\nE4EngJlY0XwMuN4tVwB3ACuBBcCZbnklcBkwD0tCz2KJBWCdW98TiU0eRHWLPAghRCLa5UEcA3wM\nSw4AB4A3gIuxxIFbXurWLwHuA94CtgJbsCuOE4B+LDkA3BPRRPf1IHC+W78IuzrZ4x6rgbkJYhZC\nCNEiSRLEKcDPgKXA94GvYFcQ04Fdrs8u9xxgBrA9ot+OXUnUtu9w7bjlNrdeSUDHNtlXS4Ra75MH\nEaYm1Lh8NKHG5aMJNS4fTahxTUrY5wNYaehZ4AtYKSnKQerXPDJheHiYwcFBAAqFAkNDQxSLRaB6\nQKLPy+Vy0+31nldI2r/Tz6uU3TK5Pov5p+3v+7xcLqfWp51/yOdL2vlncbyynH+I54vP/NP293le\nKpUYGRlhdHT0nffLOJJ4EMcD38OuJAA+ipnQvwGcC+zEykdrgdOoJo8Rt1wJ3Aq84vqc7tqvAs4B\nrnN9FmIG9STgVeA4zIcoAtc6zZ3AGszQriAPorpFHoQQIhHt8iB2YuWff+GeXwC8CDyK3WGEWz7s\n1pdjb+yTsaQyE/MddgJ7MT+iD7gaeCSiqezrcuBJt74KuwuqgJngc4DHE8QshBCiRZLe5voZ4OvA\nC8BvA3+OXSHMwW4/PY/qFcMG4AG3fAy7M6nysXYBcBd2O+sW7MoB4G7Mc9gM3Ej1KmQ3cBtW2hoD\nFnHoHUxejC/ThKHxGUMeROc1ocblowk1Lh9NqHH5aEKNK4kHAZYYZtdpv6BB/8XuUcs64Kw67fuB\nKxrsa6l7CCGEyBD9FlMXIg9CCNEq+i0mIYQQ3uQyQYRa75MHEaYm1Lh8NKHG5aMJNS4fTahx5TJB\nCCGEiEceRBciD0II0SryIIQQQniTywQRar1PHkSYmlDj8tGEGldSzdSpA/T19dV9TJ06MGFxtaoJ\nNa5cJgghRHeyb9/rVH/6bW1k/aDbJtqJPIguRB6EyCuNz33Q+Z8OeRBCCCG8yWWCCLXeJw8iTE2o\ncfloQo3LT5PFGPl+XXKZIIQQQsQjD6ILkQch8oo8iPYhD0IIIYQ3uUwQodb75EGEqQk1Lh9NqHH5\nabIYI9+vSy4ThBBCiHjkQXQh8iBEXpEH0T7kQQghhPAmlwki1HqfPIgwNaHG5aMJNS4/TRZj5Pt1\nSZogtgI/AJ4HxlzbALAa2ASsAgqR/rcAm4GNwIWR9lnAerft9kj7FOB+1/40cHJk23w3xibgmoTx\nCiGEaJGkHsRPsDf33ZG2JcBrbnkTMA24GTgDuBeYDZwIPAHMxAqHY8D1brkCuANYCSwAznTLK4HL\ngHlYEnrWjQ2wzq3vicQhD6K6RTVY0dPIg2gf7fYgand0MbDMrS8DLnXrlwD3AW9hVx5bgLOBE4B+\nqlcg90Q00X09CJzv1i/Crk72uMdqYG6KmIUQQniSNEEcxK4EngM+7dqmA7vc+i73HGAGsD2i3Y5d\nSdS273DtuOU2t34AeAM4tsm+WiLUep88iDA1IcXVq/8PwU+TxRj5O8eiTErY7yPAq8Bx2Kf4jTXb\nKz/KPiEMDw8zODgIQKFQYGhoiGKxCFQPSPR5uVxuur3e8wpJ+3f6eZWyWybXZzH/tP19n5fL5dT6\ntPMP6Xyx/3mwlsrrDV8AhoAi+/b1BXG8Ojl/t9fI/CvjJdOHOv+0/X2el0olRkZGGB0dfef9Mg6f\n70HcCryJXUkUgZ1Y+WgtcBrmQwCMuOVKp3nF9TndtV8FnANc5/osxAzqSVST0Tw3xrVOcyewBjO0\nK8iDqG5RDbbHyXsNPu/zbyft8iDehXkHAEdhdyWtB5Zjdxjhlg+79eXYG/tk4BTMoB7DEslezI/o\nA64GHoloKvu6HHjSra9y4xUwE3wO8HiCmIUQQrRIkgQxHXgKq2U8A3wTe+Mewd6wNwHnUb1i2AA8\n4JaPYXcmVdL6AuAu7HbWLdiVA8DdmOewGbiR6lXIbuA27E6mMWARh97BlJhGtdskdVsItw4Zah02\nizGy0oQal1N1fIxwNVmMke9zLIkH8ROsyFnLbuCCBprF7lHLOuCsOu37gSsa7Gupe7RE9X/ZQrSG\nuW9fL/zaiBBCtJ9eeHdM5EH0Ut2+l+Yi0pH3Gnze599O9FtMQgghvMlpgiilVwRah+yluYSqCTUu\np+r4GOFqshgj3+dYThOEEEKIOORBdGHdspfmItKR9xp83uffTuRBCCGE8CanCaKUXhFoHbKX5hKq\nJtS4nKrjY4SryWKMfJ9jOU0QQggh4pAH0YV1y16ai0hH3mvweZ9/O5EHIYQQwpucJohSekWgdche\nmkuomlDjcqqOjxGuJosx8n2O5TRBCCGEiEMeRBfWLXtpLiIdea/B533+7UQehBBCCG9ymiBK6RWB\n1iF7aS6hakKNy6k6Pka4mizGyPc5ltMEIYQQIg55EF1Yt+yluYh05L0Gn/f5txN5ECJ4Wv1XsEKI\nzpHTBFFKrwi0Dtntc6n+K9iDwNp31q29/XH5aDo5RusJMl1soda6/TRZjNH951grmqQJ4nDgeeBR\n93wAWA1sAlYBhUjfW4DNwEbgwkj7LGC923Z7pH0KcL9rfxo4ObJtvhtjE3BNwljFBBF9szv33HN1\nNZCAVhOkEJ0kqQfxH7E3+H7gYmAJ8Jpb3gRMA24GzgDuBWYDJwJPADOxs34MuN4tVwB3ACuBBcCZ\nbnklcBkwD0tCz7pxAda59T01scmDqG6Z0Ln4xBXqXLIi7fzzXoPP+/zbSbs8iPcAHwfuiuzsYmCZ\nW18GXOrWLwHuA94CtgJbgLOBE7DkMub63RPRRPf1IHC+W78IuzrZ4x6rgbkJ4hVCCNEGkiSIvwL+\nBHg70jYd2OXWd7nnADOA7ZF+27Eridr2Ha4dt9zm1g8AbwDHNtlXGyilVwRahwx1Lj5xhTqXUL/T\n4KMJqdbdyH9JXpbsTFwToQk1rkkx2z8B/BTzH4oN+lQKqBPG8PAwg4ODABQKBYaGhigWi0C9A1IC\nykSnUyqVxvVvpG+0PevnVcpumVxfLpe9x4vrP/6Ptrm+2qe+Pm68crmcKP5W5t/Z41WZczGy3lg/\nvn+61z+L49Us/uhz81nWRuKvavftO7eu3u2V8ccrWXwhzb+V/j7PS6USIyMjjI6OvvN+GUecB7EY\nuBr7ZH8EMBV4CPMYisBOrHy0FjgN8yEARtxyJXAr8Irrc7prvwo4B7jO9VmIGdSTgFeB4zAfoghc\n6zR3AmswQzuKPIjqFnkQXUaePQifufTS/CeadngQnwNOAk7B3rDXYAljOXaHEW75sFtf7vpNdpqZ\nmO+wE9iL+RF9bh+PRDSVfV0OPOnWV2F3QRUwE3wO8HhMvEIIIdpE2u9BVNLzCPaGvQk4j+oVwwbg\nAbd8DLszqaJZgBndmzHzeqVrvxvzHDYDN1K9CtkN3IbdyTQGLGL8HUyelNIrAq1DhjoXeRDpNXnz\nIOqoOtw/3PmHGlecBxHlW+4B9uZ9QYN+i92jlnXAWXXa9wNXNNjXUvcQQgiRMfotpi6sW4Y6F3kQ\n6ZEHIQ9iotBvMQkhhPAmpwmilF4RaB0y1LnIg0ivkQeRVpN+jFDnH2pcaTwIIYRoyNSpA3V/Q6q/\nfxp79+6egIhEq8iD6MK6ZahzkQeRnl7yILKYS8jz7zbkQQghhPAmpwmilF4RaB0y1LnIg0iv6SUP\nIpvXP/0Yodb6Q40rpwlCCCFEHPIgurBuGepc5EGkRx6EPIiJQh6EEEIIb3KaIErpFYHWIUOdizyI\n9Bp5EGk16ccItdYfalw5TRBCCCHikAfRhXXLUOciDyI98iDkQUwU8iCEEEJ4k9MEUUqvCLQOGepc\n5EGk18iDSKtJP0aotf5Q48ppghBCCBGHPIgurFuGOhd5EOmRByEPYqKQByGEEMKbnCaIUnpFoHXI\nUOciDyK9Rh5EWk36MUKt9YcaV1yCOAJ4BigDG4C/cO0DwGpgE7AKKEQ0twCbgY3AhZH2WcB6t+32\nSPsU4H7X/jRwcmTbfDfGJuCahHMSQgjRBpJ4EO8Cfon9c6FvA/8JuBh4DVgC3ARMA24GzgDuBWYD\nJwJPADOxouEYcL1brgDuAFYCC4Az3fJK4DJgHpaEnsUSC8A6t76nJj55ENUtXVWD9tX0EvIg5EFM\nFO3yIH7plpOBw4HXsQSxzLUvAy5165cA9wFvAVuBLcDZwAlAP5YcAO6JaKL7ehA4361fhF2d7HGP\n1cDcBPEKIYRoA0kSxGFYiWkXsBZ4EZjunuOW0936DGB7RLsdu5Kobd/h2nHLbW79APAGcGyTfbWB\nUnpFoHXIUOciDyK9Rh5EWk36MUKt9YcaV5L/Sf02MAQcAzwOnFuz/SCNr/kyYXh4mMHBQQAKhQJD\nQ0MUi0Wg3gEpYfmuWG0plcb1b6RvtD3r51XKbplcXy6XvceL6z/+j7a5vtqnvj5uvHK5nCj+Vubf\n2eNVmXMxst5YP75/ute/08cr/etf2V5fn/x4JYsvi/OlWfwT+f5SKpUYGRlhdHT0nffLONJ+D+JP\ngV8B/x57RXZi5aO1wGmYDwEw4pYrgVuBV1yf0137VcA5wHWuz0LMoJ4EvAoch/kQReBap7kTWIMZ\n2lHkQVS3dFUN2lfTS8iDkAcxUbTDg3g31TuUjgTmAM8Dy7E7jHDLh936cuyNfTJwCmZQj2GJZC/m\nR/QBVwOPRDSVfV0OPOnWV2F3QRUwE3wOdgUjhBAiA+ISxAnYp/Yydrvro9gb+Aj2hr0JOI/qFcMG\n4AG3fAy7M6mS0hcAd2G3s27BrhwA7sY8h83AjVSvQnYDt2F3Mo0Bixh/B5MnpfSKQOuQoc5FHkR6\njTyItJr0Y2Q1/1DPsbSaOA9iPfCBOu27gQsaaBa7Ry3rgLPqtO8Hrmiwr6XuIYQQImP0W0xdWLcM\ndS7yINIjD0IexESh32ISQgjhTU4TRCm9ItA6ZKhzkQeRXiMPIq0m/Rih1vpDjSunCUIIIUQc8iAm\nuG45deoA+/a9Pq69v38ae/furqsJdS7yINIjD0IexESRxINI8k1q0UEsOYw/qfft64XcLYToZnJa\nYiqlV6hun1aReoxQ59JLdftemkuo54uPJtS4dAUhRB0alf6geflPiF6iF+oYXe1B9FLdPh9zgXbG\nJg9CHsREoe9BCCGE8CanCaKUXqG6fVpF6jF6aS6h1u3lQYSpCTWunCYIIYQQcciD6LK6ra8mC/Ix\nF5AH0WB0eRBdhTwIIYQQ3uQ0QZTSKwKtdWsuWWiyGMNvHHkQKRWB1vpDjSunCUIIIUQc8iC6rG7r\nq8mCfMwF5EE0GF0eRFchD0IIIYQ3OU0QpfSKQGvdmksWmizG8BtHHkRKRaC1/lDjSpIgTgLWAi8C\nPwRucO0DwGpgE7AKKEQ0twCbgY3AhZH2Wdj/ud4M3B5pnwLc79qfBk6ObJvvxtgEXJMgXiGEEG0g\niQdxvHuUgaOBdcClwKeA14AlwE3ANOBm4AzgXmA2cCLwBDATKxyOAde75QrgDmAlsAA40y2vBC4D\n5mFJ6FksseDGngXsicQnDyKBJgvyMReQB9FgdHkQXUW7PIidWHIAeBP4EfbGfzGwzLUvw5IGwCXA\nfcBbwFZgC3A2cALQjyUHgHsimui+HgTOd+sXYVcne9xjNTA3QcxCCCFaJK0HMQj8S+AZYDqwy7Xv\ncs8BZgDbI5rtWEKpbd/h2nHLbW79APAGcGyTfbVIKb0i0Fq35pKFJosx/MaRB5FSEWitP9S40vw/\niKOxT/efBfbVbDtI4+u+jjM8PMzg4CAAhUKBoaEhisUiUO+AlLALomK1pVQa17+RvtF23+fVmIqR\n9fjxqlQu7pKPXy6XU8cbF091PrXxNddX+9TXx41XLpcTxZ92/ofGFj1fksWXNP7qPpPtf3z/dK9/\np46X/+tf2V5fn/x4JYuv0/P3fb9I29/nealUYmRkhNHR0XfeL+NI+j2IXwO+CTwGfMG1bcRelZ1Y\n+WgtcBrmQwCMuOVK4FbgFdfndNd+FXAOcJ3rsxAzqCcBrwLHYT5EEbjWae4E1mCGdgV5EAk0WZCP\nuYA8iAajy4PoKtrlQfQBdwMbqCYHgOXYHUa45cOR9nnAZOAUzKAewxLJXsyP6AOuBh6ps6/LgSfd\n+irsLqgCZoLPAR5PELMQQogWSZIgPgL8IXAu8Lx7zMWuEOZgt5+eR/WKYQPwgFs+ht2ZVEnrC4C7\nsNtZt2BXDmAJ6FjXfiPVq5DdwG3YnUxjwCIOvYPJk1J6RaC1bs0lC00WY/iNIw8inqlTB+jr6xv3\nmDp1INko8iCa8m0aJ5ILGrQvdo9a1gFn1WnfD1zRYF9L3UMIIVJj/1u88hm1RMWv2LevF35pqLP0\nwhGSB5FAkwX5mAvIg2gweqAeRKjn2ESj32ISQgjhTU4TRCm9ItBat+aShSaLMfzGkQfR6THkQQgh\n2sDUqQOu3n0o/f3T2Lt39wREJERryIPosrqtryYL8jEXaGetWx6EPIiJQh6EEEIIb3KaIErpFYHW\nujWXLDTpxwhVIw8ivSbPHkROE4QQQog45EF0Wd3WV5MF+ZgLyINoMHqOPYhGNyhAuDcpJPEgdBeT\nEEK0yKHf1q7d1r2fw3NaYiqlV/RQrVtzSatJP0aoGnkQ6TVZzD9UD0JXEG2kGy8zhRDdQ9bftene\na58qwXgQodatsyIfcwF5EA1Gz7EHEepvd8XvS9+DELT+k8dCiPyR0wRRSq/IpA7buTGqJtpB7B/7\n2Xqjkti4UQKt28uDSKeRB5FeE6oHkcVccpoghBBCxCEPIicexMTOXx6EPAh5EJ0dRx6EEEKIDMlp\ngiilV3S5B5FW08jUTm5sdyaucQp5EOl6y4NIr5AH0ZSvAruA9ZG2AWA1sAlYBRQi224BNgMbgQsj\n7bPcPjYDt0fapwD3u/angZMj2+a7MTYB1ySIVbSJQ01tP2NbCNHdJPEgPga8CdwDnOXalgCvueVN\nwDTgZuAM4F5gNnAi8AQwE3tnGQOud8sVwB3ASmABcKZbXglcBszDktCzWGIBWOfW99TEJw+iA5qQ\n55IFoc5fHoQ8iNA8iKeA2o+MFwPL3Poy4FK3fglwH/AWsBXYApwNnAD0Y8kBLNlcWmdfDwLnu/WL\nsKuTPe6xGpibIF4hhBBtwNeDmI6VnXDL6W59BrA90m87diVR277DteOW29z6AeAN4Ngm+2oDpfSK\nnHkQrWuyGEMehDyITo+Rbw+iHb/FVClSTxjDw8MMDg4CUCgUGBoaolgsAvUOSAkoA8VqS6k0rn8j\nfaPtlefVF632eX19tU+y/uPnUz5kvPj+JZLM/9D+jZ83nn/S/pU+9fVxx7tcLjfdXu95uVxO/HqP\nP15x86mnb9a/0ifp/mv7x7/+H//4J/nVr96kHkceeTQrVjza8vHyn39le3198uPVPL4qyf5eWjtf\nGj9v/f2lss9iZD2ZvlQqMTIywujo6Dvvl3Ek/R7EIPAoVQ9io4twJ1Y+WguchvkQACNuuRK4FXjF\n9TndtV8FnANc5/osxAzqScCrwHGYD1EErnWaO4E1mKEdRR5EBzQhzyULQp1/VnV7H0KdS6h/++0d\nJ6zvQSzH7jDCLR+OtM8DJgOnYAb1GJZI9mJ+RB9wNfBInX1dDjzp1ldhd0EVMBN8DvC4Z7xe6PeL\nhBB5JkmCuA/4LvA+zCv4FHaFMAe7/fQ8qlcMG4AH3PIx7M6kSlpbANyF3c66BbtyALgb8xw2AzdS\nvQrZDdyG3ck0Bixi/B1MnpQS9Wr194tCranmvT6cZw8i1Bq8nyaLMeRBxHFVg/YLGrQvdo9a1lEt\nUUXZD1zRYF9L3UMIIUTG6LeYgq0Py4OQByEPorMaeRDot5iEEEL4kNMEUQpUk8UYWWmyGEMehDyI\nTo+Rbw8ipwlCCCFEHPIggq0Py4OQByEPorMaeRDIgxBCiHToO1BGThNEKVBNFmNkpcliDHkQ8iA6\nM0bW34GSByGEEKKrkAcRbH1YHkS76rZTpw40/OTX3z+NvXt3p4ircWzd97o0jy0toc4l1NfFh6w9\niHb8mqsQQVMtF9Tb1gufkYToDDktMZUC1WQxRlaaLMbIqnabxRhZadKPkUcPImuNPAghhBBdRS9c\nX8uD6IAm5LmkJe+17lDr43l/XXzQ9yCEEEIEQU4TRClQTRZjZKXJYgx5EPIgOj1GNhp5EEIIIboK\neRDB1oflQciDkAfRWY08CORBCCGE8KEbEsRcYCP2P6tvas8uS4FqshgjK00WY8iDkAfR6TGy0ciD\n8ONw4H/JpuiYAAAGk0lEQVRiSeIM7P9jn976bsuBakKNy0eTTVzlcu/MJdTXJZtj7KMJNa70mqyO\ncdpxQk8QHwK2AFuBt4BvAJe0vts9gWpCjctHk01ce/b0zlxCfV2yOcY+mlDjSq/J6hinHSf0BHEi\nsC3yfLtrEzkm+lv9ixYtyu1v9XcSHePO0+gYh3ScQ08Q7bH+x7E1UE0WY2Sl6dwYh/5W//x31pP/\nVn/a2NL2D1mTrH/2x9hHk8UYndM0OsbJj3OyuBoloiSEfpvrh4GFmAcBcAvwNvD5SJ8y8P5swxJC\niK7nBWBoooNohUnAy8AgMBlLBm0wqYUQQvQCvwu8hJnVt0xwLEIIIYQQQuSb0D2IdjIAzASmRNr+\noUn/I4EFwEcx5+gp4G+Af25DLH8cWT9I9XWomPL/o4n2MODfAKcAfwa8FzgeGGtDXLUx1sb2BrCO\n+jdgHwH8PlYOnBTR/Fmb4vkO8BHgTcbfvHAQ2A38d+B/1dHOwuKO8gngm22KDWA28DnGz/+3m2h8\nj9kQ8DGq5+ULTfr6nMf1Xvvoeu352Qe8h0PvOAyFW+u0tfO87GlCv4upXXwa+BawElgEPI6Z3824\nB/ty3h3Yl/V+C/jbBJppkecDwFfr9OsHjsbeuK4DZmC3714LfCBmjC8CvwP8a/f8TddWj0q8N8bs\nsx6zXDyV2P4IK/d9hfrfaH8EuBj7vsqb7vGLBvv+jlu+CeyreextoPmIWx6NHb/oY6qL94YG2q8A\nZ0WeXwX8tzr96sUTF1eFrwNLsTf8T7rHxTGaNMeswmeBrwHHAdPdeqN5g9953Oi8rBz7ejwWs896\nXIG9dgB/Cvxvmp//n0/YFuUXVI/t/8PO4cEYzR+T/nb6r2HvM6cl7H9GnbZijOYGDn1/ScIa4Pdq\n2r6cch89zw+xT1KVT76nYSdjMzYkbItS75N1s68uPsWhf3D9rq0Zz9csofEnyA3YH/kPsGRV+2jG\nU9gbQoWjsSuudwE/qtP/hzH7y4IZDdp/A/g+9rp/GpvbMW0e+zvxXcbhc8zWA0dFnh/l2hrhcx77\nnJfLsC+2pqES90ex3434BPBMk/7P12lrNvd6TME+LDZjIfAi8G3geiwRx3EedrWyGvgJ8CDNP5j9\nEPug1Yf9Tf018HTMGH+OebEPYHd2JqkA/QT7u41eSdU7jrnmObcsY5f1EP9H8jXsk3qFDxP/yesF\nDn3jHaD5CfxSJB7c+ksxYzyD/QRJ5UU+jsYv+A3Ym/l+7ESJPn4cM85G7M6xClMisdUb78s0L6dM\nNO/DjsVK7A+y3VwI3I1dnfy+e/yrGI3PMVuPfdipcCTNzzGf89jnvHwJ+4T+YxfPeuyDSTMqH55G\nsLIp1D+3rnP7+2Vk3+uxLwJ8PWaMWgawN9kkvB97U34JeDJB/0nY8f0c8I80P2ZHYVd0T2PJ4nMk\nq+gchiWHb2DzWAyc2qT/8y6uLwKPAgVSJIhJ8V16gm3YpdnDWIZ/ncbfMqn8sU3CPhVuw2qW7yX+\nj+Qvge9hGb4P+APsBGvEPZh38JDrfyn2SawZf41d/fw6dnJcDvzXBn3vcI8vYWWCNHwdS0YPu9g+\nCdyLndjR5Fo5XocDn8KSz37XFleD7zS1b5wD2B/YM7Q/tvlYEpqEfVenwkNNNB8j/TFbisUfPWfq\nlTErfJD65/H6JmP5nJcXxWyvxw4sSc7BksQR1H+TvBcrYY1Q/dQNVvr7ecwY0XPgMOzvJqn/8FNg\npxvjuJi+T2J/G9/Drjw+6PSNOAD8CkvwR2CJ9e0m/Su87WLahSXkacDfA08Af9JkrAXAMHYlmLhM\nlSeTukIRq3uuBP5vne2DTbQHgVdi9v9b2OXmQaz+F3elMouq4fgPJMvupwPnu/UnqV/yaQezsdr/\nQexN5rk6fQZj9rG1vSGlYjBm+9Y2jvUSVsJK8+3/wQbtW2N0szjUdG52zjQaI24sn/MyLUdhn4Z/\ngP1a8wmYV7SqjWMMRtYPYG+sb8VoFmD+yK8DfwfcT/zf8V9hSeGfge9iZazvYUmgHi8Ay7Fk9W7g\nTuxDwh80GeOzwDVYwroL+6D4Fpb4NlP/SuKP3L4rzAL+A/BvY+YjhGgjS7EPB6L7+Qv8v2HcD3wG\n+yC5v0m/2XXaronZ9yLg5Abb6pneLZPHKwghOsFG7BNcSCU2kR2fwa64ZmHnwFPusWYig2qVvHgQ\nQnSaufFdRA9zBOZBfp/4EpYQQgghhBBCCCGEEEIIIYQQQgghhBBCiET8fygVznwTf1OJAAAAAElF\nTkSuQmCC\n",
+       "text": [
+        "<matplotlib.figure.Figure at 0x7f2de4f43eb8>"
+       ]
+      }
+     ],
+     "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": [
-        "b'\\x01D\\x02Q\\xd3\\x98\\x053\\xc5\\x0eY&)\\x123<\\x8f8\\x80\\xea\\xc3\\xa2\\xf2\\xc4\\xc4p\\x06\\xf7\\xa5\\xa6\\\\\\xc9\\x16\\x90\\xa4qP\\xe8\\xceC\\x1b\\x88J2B\\x8d\\t\\x16\\x94\\x93X\\x00YN\\xc8#g\\x1a\\xb9\\xcd$O@\\x1e \\xa9\"BNU\\x92\\x08\\xb3\\xad\\xd2\\x98\\xdc\\x05\\xbb\\x00$\\x98\\xd6\\x8d\\x06kbw\\x1c\\xf3\\x93@\\xe4-\\xa2l\\xa4\\x81D\\x80kHD!\\x04\\x8d\\xa6\\x06\\x92Q\\xab\\x8c\\x82#\\x16\\x94\\x86g\\xd5\\xc8\\x02$\\x07\\x00\\x8e\\x01\\x07\\x16\\xa2qm\\xc8\\x83E\\xf2\\x91\\xc03\\x8enC\\xc0\\t\\x92\\xe4kI \\x1a.\\x0c\\xd6IE\\xb1r#\\x87\\x84\\xc4\\x18\\x96\\xb4X\\x0b\\x02\\xc8F\\xa0\\xd1\\x8bm\\x88\\xad\\x0c[\\xe57,\\x85\\x9cF\\xca\\x02(!\\x08\\x84\\x01\\xcbi- 8\\xf1\\x9a\\xe57\\x04\\x93l\\x97R\\xa2\\xa3uf\\xf7\\x00\\x84D\\x84\\x87\\x1d\\x0f\\x91*B\\x0ed\\xb1A\\x16\\x9c\\x81Y\\x00\\xe9\\xb8\\xf3\\x9c\\xc8\\xf6\\x89@sObM\\x95\\xc3\\xe3\\x129\\xad\\x04\\x8c2\\r\\xc4!\\x1c\\x002b@\\xa74\\x15\\xa0\\x1cI(\\xceD\\x8b\\xa4I\\xc4\\xe2@\\xa6\\xf9\\x00\\x04:\\xc6y\\x16\\xf2p\\x1d1L!\\x93\\x88\\x88\\xb6@\\x1a\\xf18\\xc6\\x8d\\x88\\x88\\xf9\\xcc\\xf1%\\x0e\\xd5L\\x02 \\x88E\\xc6\\xcdDHB\\x00\\x92!\\x08\\x81\\xa2N0\\x88\\xe663\"N\\x03\\x002#Q5\\xdaqhX\\x82.@\\x89&IE\\xa6\\x93N@\\xa1\\xd2\\x1a\\x08\\xd0\\x15dD\\x80w\\t\\x05%XPL\\r\\x04\\xe2\\xd4\\x00\\xcd8&\\xd6 -E\\nF\\xc6n\\x9c\\xe2\\xdc<\\x08\\x1e\\x10C\\r\\xac$Nt:q$\\xc4IH\\x88X\\xe2\\x11\\x11\\xf1A\\x80I8\\x03\\\\\\xc0t\\x12\\xa4\\x0cDF\\xac\\x95\\x04\\x806\\xb6gi\\x112!\\x12\\x01\\xe8s\\xd0\\x0csH\\\\\\x1dnm\\x8e\\x02\\x10\\x84t\\x9aB`\\r\"$I\\xb8\\xd8D\\xc9\\x15\\xa0\\xf3\\x13\\x10\\xe4D\\x11(\\xdcI\\xb5\\x07\\x9bHt!@dF\\xc6\\x80`h\\x1c9\\x12DF\\x04\\xb9 \\r\\x98\\x1c\\xb9\\x89\\x18b\\x06F\\xceg\\\\\\xda;\\xces`$\\x15\\x90\\x04$\\xd6\\x89\"3\\xb4\\xe9\\x17\\x94\\x08\\\\\\xc8\\x07\\x10\\xa4D\\x90\\x84a\\x12B\\xab;\"O\\x88d\\x86\\x91o<X\\xe3\\xa0\\x06j\\xe4\\xba\\xa2n\\x18\\x11!\\xbd\\xb8\\x18\\xc4\\x00:`8\\x88y\\xd0\\x88\\x8cH0\\x10St\\x9b\\x13\\xd5\\xa0p\\xdc\\x858\\x93\\x12\\x1aF\\x92\\x91\\x8a$1:\\x91\\x01\\x97T1\\x94{\\xc6\\x89\\x90\\r\\x1a&\\xc0\\x01\\x00A\\x16G5\\xb1!\\x06\\x07\\x0c.E\\x18E\\xc5\\xd3l\\xe73\"m\\x8a\\xe2\\x825\\xa8R\\xf1\\'\\x1aS\\x12\\x0b\\x87\\xa1\\xf5@\\xeb)1\\xa2\"\\x01$\"rkH\\t\\xa2ndN\\x16\\x9d\\xa8\\x1b\\xe2\\xb8\\x91\\xee\\xc3@\\xb96\\xb2\\x1b\\xa4\\x06\\x92H\\x99@F\\xaefp\\xc19\\x90\\x80D\\x90(\\xb9\\xd3d\\x98S\\x82\\x84j##\\x1f\\r\\xb1\\x10\\xd9\\x90\\xce\\x1a\\x10\\xb2\\x10s\\x04Z\\xe9D@\\x01\\x1a9\\x8a\\x93\\x99G\\x10\\x90\\xf3aQ7:#\\x8d\\x10\\x07`\\x00k\\x88E\\x8d\\xc8i\\xe9#\"d\\x03\\xa2\\x82\\x08\\x95#\\x1b8\\x82l\\x99^J\\n\\x93\\x01\\xc0\\xc9\\xb4\\x96sP!\\x90\\x8c\\x8b\\xc0\\xe5\\xa2n\\x01I\\':RyZ\\xb6\\x90\\x8et\\xc0#\\xadh\\x8c\\xa5y8\\xaf\\x19fX\\xb5\\xf1\\x01\\x08\\x0c-\\xcd\\x01\\xc1I\\xb6bl\\xc4\\x10Yni\\x0b7\\x02d\\x15]a\\xae\\xd5kHA\\xcd\\x08r\\r2\\x19\\x93\\x01\\xc8@L\\x85\\x00\\x08\\xf8\\xc4Qt\\x8eBF/\\x02\\xc84\\x11\\xa6@\\xe3\\x12:\\x87\\xa9%H\\xbb\\x13l\\x9d$6\\x88\\xa2\\x1cW\\xc4`'"
+        "['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']"
        ]
       }
      ],
      "cell_type": "code",
      "collapsed": false,
      "input": [
-      "bytes([(int(c, 2)) for c in chunks(c8b, 8)]).decode('utf-8', 'replace')"
+      "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": {},
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 25,
+       "prompt_number": 21,
        "text": [
-        "'\\x01D\\x02Q\u04d8\\x053\ufffd\\x0eY&)\\x123<\ufffd8\ufffd\ufffd\u00e2\ufffd\ufffd\ufffdp\\x06\ufffd\ufffd\ufffd\\\\\ufffd\\x16\ufffd\ufffdqP\ufffd\ufffdC\\x1b\ufffdJ2B\ufffd\\t\\x16\ufffd\ufffdX\\x00YN\ufffd#g\\x1a\ufffd\ufffd$O@\\x1e \ufffd\"BNU\ufffd\\x08\ufffd\ufffd\u0498\ufffd\\x05\ufffd\\x00$\ufffd\\u058d\\x06kbw\\x1c\ufffd@\ufffd-\ufffdl\ufffd\ufffdD\ufffdkHD!\\x04\ufffd\ufffd\\x06\ufffdQ\ufffd\ufffd\ufffd#\\x16\ufffd\ufffdg\ufffd\ufffd\\x02$\\x07\\x00\ufffd\\x01\\x07\\x16\ufffdqm\u0203E\ufffd\ufffd3\ufffdnC\ufffd\\t\ufffd\ufffdkI \\x1a.\\x0c\ufffdIE\ufffdr#\ufffd\ufffd\ufffd\\x18\ufffd\ufffdX\\x0b\\x02\ufffdF\ufffd\u044bm\ufffd\ufffd\\x0c[\ufffd7,\ufffd\ufffdF\ufffd\\x02(!\\x08\ufffd\\x01\ufffdi- 8\ufffd\ufffd7\\x04\ufffdl\ufffdR\ufffd\ufffduf\ufffd\\x00\ufffdD\ufffd\ufffd\\x1d\\x0f\ufffd*B\\x0ed\ufffdA\\x16\ufffd\ufffdY\\x00\ufffd\ufffd\ufffd\ufffd\ufffd@sObM\ufffd\ufffd\ufffd\\x129\ufffd\\x04\ufffd2\\r\ufffd!\\x1c\\x002b@\ufffd4\\x15\ufffd\\x1cI(\ufffdD\ufffd\ufffdI\ufffd\ufffd@\ufffd\ufffd\\x00\\x04:\ufffdy\\x16\ufffdp\\x1d1L!\ufffd\ufffd\ufffd\ufffd@\\x1a\ufffd8\u018d\ufffd\ufffd\ufffd\ufffd\ufffd%\\x0e\ufffdL\\x02 \ufffdE\ufffd\ufffdDHB\\x00\ufffd!\\x08\ufffd\ufffdN0\ufffd\ufffd63\"N\\x03\\x002#Q5\ufffdqhX\ufffd.@\ufffd&IE\ufffd\ufffdN@\ufffd\ufffd\\x1a\\x08\ufffd\\x15dD\ufffdw\\t\\x05%XPL\\r\\x04\ufffd\ufffd\\x00\ufffd8&\ufffd -E\\nF\ufffdn\ufffd\ufffd\ufffd<\\x08\\x1e\\x10C\\r\ufffd$Nt:q$\ufffdIH\ufffdX\ufffd\\x11\\x11\ufffdA\ufffdI8\\x03\\\\\ufffdt\\x12\ufffd\\x0cDF\ufffd\ufffd\\x04\ufffd6\ufffdgi\\x112!\\x12\\x01\ufffds\ufffd\\x0csH\\\\\\x1dnm\ufffd\\x02\\x10\ufffdt\ufffdB`\\r\"$I\ufffd\ufffdD\ufffd\\x15\ufffd\ufffd\\x13\\x10\ufffdD\\x11(\ufffdI\ufffd\\x07\ufffdHt!@dF\u0180`h\\x1c9\\x12DF\\x04\ufffd \\r\ufffd\\x1c\ufffd\ufffd\\x18b\\x06F\ufffdg\\\\\ufffd;\ufffds`$\\x15\ufffd\\x04$\u0589\"3\ufffd\ufffd\\x17\ufffd\\x08\\\\\ufffd\\x07\\x10\ufffdD\ufffd\ufffda\\x12B\ufffd;\"O\ufffdd\ufffd\ufffdo<X\ufffd\\x06j\u4ea2n\\x18\\x11!\ufffd\ufffd\\x18\ufffd\\x00:`8\ufffdy\u0408\ufffdH0\\x10St\ufffd\\x13\\u0560p\u07058\ufffd\\x12\\x1aF\ufffd\ufffd\ufffd$1:\ufffd\\x01\ufffdT1\ufffd{\u0189\ufffd\\r\\x1a&\ufffd\\x01\\x00A\\x16G5\ufffd!\\x06\\x07\\x0c.E\\x18E\ufffd\ufffdl\ufffd3\"m\ufffd\ufffd5\ufffdR\ufffd\\'\\x1aS\\x12\\x0b\ufffd\ufffd\ufffd@\ufffd)1\ufffd\"\\x01$\"rkH\\t\ufffdndN\\x16\ufffd\ufffd\\x1b\u2e11\ufffd\ufffd@\ufffd6\ufffd\\x1b\ufffd\\x06\ufffdH\ufffd@F\ufffdfp\ufffd9\ufffd\ufffdD\ufffd(\ufffd\ufffdd\ufffdS\ufffd\ufffdj##\\x1f\\r\ufffd\\x10\u0650\ufffd\\x1a\\x10\ufffd\\x10s\\x04Z\ufffdD@\\x01\\x1a9\ufffd\ufffd\ufffdG\\x10\ufffd\ufffdaQ7:#\ufffd\\x10\\x07`\\x00k\ufffdE\ufffd\ufffdi\ufffd#\"d\\x03\ufffd\ufffd\\x08\ufffd#\\x1b8\ufffdl\ufffd^J\\n\ufffd\\x01\ufffd\u0274\ufffdsP!\ufffd\ufffd\ufffd\ufffd\ufffdn\\x01I\\':RyZ\ufffd\ufffd\ufffdt\ufffd#\ufffdh\ufffd\ufffdy8\ufffd\\x19fX\ufffd\ufffd\\x01\\x08\\x0c-\ufffd\\x01\ufffdI\ufffdbl\ufffd\\x10Yni\\x0b7\\x02d\\x15]a\ufffd\ufffdkHA\ufffd\\x08r\\r2\\x19\ufffd\\x01\ufffd@L\ufffd\\x00\\x08\ufffd\ufffdQt\ufffdBF/\\x02\ufffd4\\x11\ufffd@\ufffd\\x12:\ufffd\ufffd%H\ufffd\\x13l\ufffd$6\ufffd\ufffd\\x1cW\ufffd`'"
+        "{'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": 25
+     "prompt_number": 21
     },
     {
      "cell_type": "code",
      "collapsed": false,
      "input": [
-      "bytes([(int(c, 2)) for c in chunks(c8b, 8)]).decode('utf_32', 'replace')"
+      "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": {},
       {
        "metadata": {},
        "output_type": "pyout",
-       "prompt_number": 29,
+       "prompt_number": 24,
        "text": [
-        "'\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\\U00072402\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd\ufffd'"
+        "17639131"
        ]
       }
      ],
-     "prompt_number": 29
+     "prompt_number": 24
     },
     {
      "cell_type": "code",
      "input": [],
      "language": "python",
      "metadata": {},
-     "outputs": []
+     "outputs": [],
+     "prompt_number": 22
     }
    ],
    "metadata": {}
diff --git a/cadenus-ciphers.ipynb b/cadenus-ciphers.ipynb
new file mode 100644 (file)
index 0000000..40b4dc4
--- /dev/null
@@ -0,0 +1,542 @@
+{
+ "metadata": {
+  "name": "",
+  "signature": "sha256:c52a83147f45ed889200fe19a5d4ec4422e884758e7d8a11536fbaafa6c627ee"
+ },
+ "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",
+      "import numpy as np\n",
+      "from numpy import matrix\n",
+      "from numpy import linalg\n",
+      "%matplotlib inline\n",
+      "\n",
+      "from cipher import *\n",
+      "from cipherbreak import *\n",
+      "\n",
+      "c8a = open('2014/8a.ciphertext').read().strip()\n",
+      "c8b = open('2014/8b.ciphertext').read().strip()"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 4
+    },
+    {
+     "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": 2
+    },
+    {
+     "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": 5,
+       "text": [
+        "'afcaeuottacthrioletcserthshtrahkzorpfrgeoadppjnglternefeofiortsddoeeumscruernfetlaafstxientrvoonerhuahravereetsvsielhlostdoalozaesmnndignnrhohhtsnaoilncnssicreanneeiiierxtanesrvogieizxssdgpvoiaisaoaeoaedrnitrnyeigrpsshadhdtoipaateyennesagrobtlesrnroirzpbgedcllixalaleenigrrnxzrlimlpstoleftrdmuarieeeiiaolnexsaohrtlstobetnslvfivdovtpoaeeisciohipseveedtexfarnhebleaotohtttepnckaonhxetmvzprreonnasgdedoeeeoaamtcicttifnadresrtserosetrhcictpsaaehldhsfysoaotctbbsoeirnsadlztrrunrceptthreuhnktaceceelrxnireeeaeseeeidisogceomnrtejhagabsenitlxtrnbmielsaretesrngsnhebiosdienafleisahocifevmfatanatrniagnhatnmibniufenrtottrnzpaidziegdnmerhhiotretcesseildrbceprigaesoadltahievebrcenlevasadnnthneiteiisahuhhuamonefzhlonxhaeeeeosneezaneisetogziterlihtcmioirarfdoetnihtnehiikamrdmnadanaodseseizclsiantaoltcizmidentthltndytttmasbleaeetlisirtxturpfailteaoefeisiiizisikvtxisprbsinelphrmohiagnlslvitodaisdpnzddcaaotahcehtueirredaectosnrhvnaodoikoetcineneurrisdcouraglvimmuppditeanditmaaiaieleonnreedaodboiumelrotntttgitnrlrienniklzsogstcifzpipvidvssmnceiasiitsnneatitomrhbnhnidprlrepoznalsnvsdosanesitfaenltgodatteeaisicrootmsmfhauenirsghznxeintegodiileedtarnosrcaaendtcuttfdrbehtmfitoordruiaozaanoeeldoinhusgiteaoriecevemntratmtfpeucutahamtnexonicdeemrpaolitoafesoosspfnlneeootachllirssysofpdftfrnpraeeazlonahautntcntcbaxloneftoatecvoxdlxvnneedtiioigtegmtaheeatefaaeprrcrosheerrpalediengidrreouhvesuroztnsosinuiuiofprda'"
+       ]
+      }
+     ],
+     "prompt_number": 5
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "c8bgrid = chunks(c8bl, int(len(c8bl) / 25))\n",
+      "c8bgrid"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 9,
+       "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": 9
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "len(c8bgrid[0])"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 11,
+       "text": [
+        "56"
+       ]
+      }
+     ],
+     "prompt_number": 11
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "def make_keycolumn(doubled_letters = 'vw', start='a', reverse=False):\n",
+      "    index_to_remove = string.ascii_lowercase.find(doubled_letters[0])\n",
+      "    short_alphabet = string.ascii_lowercase[:index_to_remove] + string.ascii_lowercase[index_to_remove+1:]\n",
+      "    if reverse:\n",
+      "        short_alphabet = ''.join(reversed(short_alphabet))\n",
+      "    start_pos = short_alphabet.find(start)\n",
+      "    rotated_alphabet = short_alphabet[start_pos:] + short_alphabet[:start_pos]\n",
+      "    keycolumn = {l: i for i, l in enumerate(rotated_alphabet)}\n",
+      "    keycolumn[doubled_letters[0]] = keycolumn[doubled_letters[1]]\n",
+      "    return keycolumn"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 75
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "pt = sanitise(\"Whoever has made a voyage up the Hudson must remember the Kaatskill mountains. They are a dismembered branch of the great\")\n",
+      "keyword = 'wink'"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 36
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "keycolumn = make_keycolumn(reverse=True)\n",
+      "[(k, keycolumn[k]) for k in sorted(keycolumn)]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 103,
+       "text": [
+        "[('a', 0),\n",
+        " ('b', 24),\n",
+        " ('c', 23),\n",
+        " ('d', 22),\n",
+        " ('e', 21),\n",
+        " ('f', 20),\n",
+        " ('g', 19),\n",
+        " ('h', 18),\n",
+        " ('i', 17),\n",
+        " ('j', 16),\n",
+        " ('k', 15),\n",
+        " ('l', 14),\n",
+        " ('m', 13),\n",
+        " ('n', 12),\n",
+        " ('o', 11),\n",
+        " ('p', 10),\n",
+        " ('q', 9),\n",
+        " ('r', 8),\n",
+        " ('s', 7),\n",
+        " ('t', 6),\n",
+        " ('u', 5),\n",
+        " ('v', 4),\n",
+        " ('w', 4),\n",
+        " ('x', 3),\n",
+        " ('y', 2),\n",
+        " ('z', 1)]"
+       ]
+      }
+     ],
+     "prompt_number": 103
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "keycolumn = make_keycolumn(doubled_letters='ij', start='b', reverse=True)\n",
+      "[(k, keycolumn[k]) for k in sorted(keycolumn)]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 101,
+       "text": [
+        "[('a', 1),\n",
+        " ('b', 0),\n",
+        " ('c', 24),\n",
+        " ('d', 23),\n",
+        " ('e', 22),\n",
+        " ('f', 21),\n",
+        " ('g', 20),\n",
+        " ('h', 19),\n",
+        " ('i', 18),\n",
+        " ('j', 18),\n",
+        " ('k', 17),\n",
+        " ('l', 16),\n",
+        " ('m', 15),\n",
+        " ('n', 14),\n",
+        " ('o', 13),\n",
+        " ('p', 12),\n",
+        " ('q', 11),\n",
+        " ('r', 10),\n",
+        " ('s', 9),\n",
+        " ('t', 8),\n",
+        " ('u', 7),\n",
+        " ('v', 6),\n",
+        " ('w', 5),\n",
+        " ('x', 4),\n",
+        " ('y', 3),\n",
+        " ('z', 2)]"
+       ]
+      }
+     ],
+     "prompt_number": 101
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "pt_rows = chunks(pt, len(pt) // 25, fillvalue='a')\n",
+      "pt_rows"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 15,
+       "text": [
+        "['whoe',\n",
+        " 'verh',\n",
+        " 'asma',\n",
+        " 'deav',\n",
+        " 'oyag',\n",
+        " 'eupt',\n",
+        " 'hehu',\n",
+        " 'dson',\n",
+        " 'must',\n",
+        " 'reme',\n",
+        " 'mber',\n",
+        " 'thek',\n",
+        " 'aats',\n",
+        " 'kill',\n",
+        " 'moun',\n",
+        " 'tain',\n",
+        " 'sthe',\n",
+        " 'yare',\n",
+        " 'adis',\n",
+        " 'memb',\n",
+        " 'ered',\n",
+        " 'bran',\n",
+        " 'chof',\n",
+        " 'theg',\n",
+        " 'reat']"
+       ]
+      }
+     ],
+     "prompt_number": 15
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "[keycolumn[l] for l in keyword]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 38,
+       "text": [
+        "[21, 8, 13, 10]"
+       ]
+      }
+     ],
+     "prompt_number": 38
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "pt_columns = [''.join(c) for c in zip(*pt_rows)]\n",
+      "pt_columns"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 47,
+       "text": [
+        "['wvadoehdmrmtakmtsyamebctr',\n",
+        " 'heseyuesuebhaioataderrhhe',\n",
+        " 'ormaaphosmeetluihrimeaoea',\n",
+        " 'ehavgtunterkslnneesbdnfgt']"
+       ]
+      }
+     ],
+     "prompt_number": 47
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "rotated_pt_columns = [''.join(col[start:] + col[:start]) for start, col in zip([keycolumn[l] for l in keyword], pt_columns)]    \n",
+      "rotated_pt_rows = zip(*rotated_pt_columns)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 78
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "transpositions = transpositions_of(keyword)\n",
+      "transposed = [transpose(r, transpositions) for r in rotated_pt_rows]\n",
+      "transposed"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 79,
+       "text": [
+        "[['a', 'n', 't', 'o'],\n",
+        " ['d', 'e', 'l', 'e'],\n",
+        " ['e', 'e', 'u', 'h'],\n",
+        " ['r', 's', 'i', 'd'],\n",
+        " ['r', 'b', 'h', 'm'],\n",
+        " ['h', 'd', 'r', 'r'],\n",
+        " ['h', 'n', 'i', 'm'],\n",
+        " ['e', 'f', 'm', 't'],\n",
+        " ['h', 'g', 'e', 'a'],\n",
+        " ['e', 't', 'a', 'k'],\n",
+        " ['s', 'e', 'o', 'm'],\n",
+        " ['e', 'h', 'e', 't'],\n",
+        " ['y', 'a', 'a', 's'],\n",
+        " ['u', 'v', 'o', 'y'],\n",
+        " ['e', 'g', 'r', 'a'],\n",
+        " ['s', 't', 'm', 'm'],\n",
+        " ['u', 'u', 'a', 'e'],\n",
+        " ['e', 'n', 'a', 'b'],\n",
+        " ['b', 't', 'p', 'c'],\n",
+        " ['h', 'e', 'h', 't'],\n",
+        " ['a', 'r', 'o', 'r'],\n",
+        " ['i', 'k', 's', 'w'],\n",
+        " ['o', 's', 'm', 'v'],\n",
+        " ['a', 'l', 'e', 'a'],\n",
+        " ['t', 'n', 'e', 'd']]"
+       ]
+      }
+     ],
+     "prompt_number": 79
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "def cadenus_encipher(message, keyword, keycolumn, fillvalue='a'):\n",
+      "    rows = chunks(message, len(message) // 25, fillvalue=fillvalue)\n",
+      "    columns = zip(*rows)\n",
+      "    rotated_columns = [col[start:] + col[:start] for start, col in zip([keycolumn[l] for l in keyword], columns)]    \n",
+      "    rotated_rows = zip(*rotated_columns)\n",
+      "    transpositions = transpositions_of(keyword)\n",
+      "    transposed = [transpose(r, transpositions) for r in rotated_rows]\n",
+      "    return ''.join(chain(*transposed))"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 82
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "cadenus_encipher(pt, 'wink', make_keycolumn(reverse=True))"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 104,
+       "text": [
+        "'antodeleeeuhrsidrbhmhdrrhnimefmthgeaetakseomehetyaasuvoyegrastmmuuaeenabbtpchehtarorikswosmvaleatned'"
+       ]
+      }
+     ],
+     "prompt_number": 104
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "cadenus_encipher(sanitise('a severe limitation on the usefulness of the cadenus ' \n",
+      "                          'is that every message must be a multiple of twenty-five '\n",
+      "                          'letters long'), 'easy', make_keycolumn(reverse=True))"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 105,
+       "text": [
+        "'systretomtattlusoatleeesfiyheasdfnmschbhneuvsnpmtofarenuseieeieltarlmentieetogevesitfaisltngeeuvowul'"
+       ]
+      }
+     ],
+     "prompt_number": 105
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "def cadenus_decipher(message, keyword, keycolumn, fillvalue='a'):\n",
+      "    rows = chunks(message, len(message) // 25, fillvalue=fillvalue)\n",
+      "    transpositions = transpositions_of(keyword)\n",
+      "    untransposed_rows = [untranspose(r, transpositions) for r in rows]\n",
+      "    columns = zip(*untransposed_rows)\n",
+      "    rotated_columns = [col[-start:] + col[:-start] for start, col in zip([keycolumn[l] for l in keyword], columns)]    \n",
+      "    rotated_rows = zip(*rotated_columns)\n",
+      "    # return rotated_columns\n",
+      "    return ''.join(chain(*rotated_rows))"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 93
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "    cadenus_decipher('antodeleeeuhrsidrbhmhdrrhnimefmthgeaetakseomehetyaasuvoyegrastmmuuaeenabbtpchehtarorikswosmvaleatned',\n",
+      "                 'wink',\n",
+      "                 make_keycolumn(reverse=True))"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 106,
+       "text": [
+        "'whoeverhasmadeavoyageupthehudsonmustrememberthekaatskillmountainstheyareadismemberedbranchofthegreat'"
+       ]
+      }
+     ],
+     "prompt_number": 106
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "    cadenus_decipher('systretomtattlusoatleeesfiyheasdfnmschbhneuvsnpmtofarenuseieeieltarlmentieetogevesitfaisltngeeuvowul',\n",
+      "                 'easy',\n",
+      "                 make_keycolumn(reverse=True))"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 107,
+       "text": [
+        "'aseverelimitationontheusefulnessofthecadenusisthateverymessagemustbeamultipleoftwentyfiveletterslong'"
+       ]
+      }
+     ],
+     "prompt_number": 107
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [],
+     "language": "python",
+     "metadata": {},
+     "outputs": []
+    }
+   ],
+   "metadata": {}
+  }
+ ]
+}
\ No newline at end of file
index f7e3ece485cf1800a1e1d703959b10f05b217cf2..83700a538cec2cd55f01b390967565e21e7afbd3 100644 (file)
--- a/cipher.py
+++ b/cipher.py
@@ -632,6 +632,93 @@ def railfence_decipher(message, height, fillvalue=''):
     up_rows.reverse()
     return ''.join(c for r in zip_longest(*(down_rows + up_rows), fillvalue='') for c in r)
 
+def make_cadenus_keycolumn(doubled_letters = 'vw', start='a', reverse=False):
+    """Makes the key column for a Cadenus cipher (the column down between the
+        rows of letters)
+
+    >>> make_cadenus_keycolumn()['a']
+    0
+    >>> make_cadenus_keycolumn()['b']
+    1
+    >>> make_cadenus_keycolumn()['c']
+    2
+    >>> make_cadenus_keycolumn()['v']
+    21
+    >>> make_cadenus_keycolumn()['w']
+    21
+    >>> make_cadenus_keycolumn()['z']
+    24
+    >>> make_cadenus_keycolumn(doubled_letters='ij', start='b', reverse=True)['a']
+    1
+    >>> make_cadenus_keycolumn(doubled_letters='ij', start='b', reverse=True)['b']
+    0
+    >>> make_cadenus_keycolumn(doubled_letters='ij', start='b', reverse=True)['c']
+    24
+    >>> make_cadenus_keycolumn(doubled_letters='ij', start='b', reverse=True)['i']
+    18
+    >>> make_cadenus_keycolumn(doubled_letters='ij', start='b', reverse=True)['j']
+    18
+    >>> make_cadenus_keycolumn(doubled_letters='ij', start='b', reverse=True)['v']
+    6
+    >>> make_cadenus_keycolumn(doubled_letters='ij', start='b', reverse=True)['z']
+    2
+    """
+    index_to_remove = string.ascii_lowercase.find(doubled_letters[0])
+    short_alphabet = string.ascii_lowercase[:index_to_remove] + string.ascii_lowercase[index_to_remove+1:]
+    if reverse:
+        short_alphabet = ''.join(reversed(short_alphabet))
+    start_pos = short_alphabet.find(start)
+    rotated_alphabet = short_alphabet[start_pos:] + short_alphabet[:start_pos]
+    keycolumn = {l: i for i, l in enumerate(rotated_alphabet)}
+    keycolumn[doubled_letters[0]] = keycolumn[doubled_letters[1]]
+    return keycolumn
+
+def cadenus_encipher(message, keyword, keycolumn, fillvalue='a'):
+    """Encipher with the Cadenus cipher
+
+    >>> cadenus_encipher(sanitise('Whoever has made a voyage up the Hudson ' \
+                                  'must remember the Kaatskill mountains. ' \
+                                  'They are a dismembered branch of the great'), \
+                'wink', \
+                make_cadenus_keycolumn(doubled_letters='vw', start='a', reverse=True))
+    'antodeleeeuhrsidrbhmhdrrhnimefmthgeaetakseomehetyaasuvoyegrastmmuuaeenabbtpchehtarorikswosmvaleatned'
+    >>> cadenus_encipher(sanitise('a severe limitation on the usefulness of ' \
+                                  'the cadenus is that every message must be ' \
+                                  'a multiple of twenty-five letters long'), \
+                'easy', \
+                make_cadenus_keycolumn(doubled_letters='vw', start='a', reverse=True))
+    'systretomtattlusoatleeesfiyheasdfnmschbhneuvsnpmtofarenuseieeieltarlmentieetogevesitfaisltngeeuvowul'
+    """
+    rows = chunks(message, len(message) // 25, fillvalue=fillvalue)
+    columns = zip(*rows)
+    rotated_columns = [col[start:] + col[:start] for start, col in zip([keycolumn[l] for l in keyword], columns)]    
+    rotated_rows = zip(*rotated_columns)
+    transpositions = transpositions_of(keyword)
+    transposed = [transpose(r, transpositions) for r in rotated_rows]
+    return ''.join(chain(*transposed))
+
+def cadenus_decipher(message, keyword, keycolumn, fillvalue='a'):
+    """
+    >>> cadenus_decipher('antodeleeeuhrsidrbhmhdrrhnimefmthgeaetakseomehetyaa' \
+                         'suvoyegrastmmuuaeenabbtpchehtarorikswosmvaleatned', \
+                 'wink', \
+                 make_cadenus_keycolumn(reverse=True))
+    'whoeverhasmadeavoyageupthehudsonmustrememberthekaatskillmountainstheyareadismemberedbranchofthegreat'
+    >>> cadenus_decipher('systretomtattlusoatleeesfiyheasdfnmschbhneuvsnpmtof' \
+                        'arenuseieeieltarlmentieetogevesitfaisltngeeuvowul', \
+                 'easy', \
+                 make_cadenus_keycolumn(reverse=True))
+    'aseverelimitationontheusefulnessofthecadenusisthateverymessagemustbeamultipleoftwentyfiveletterslong'
+    """
+    rows = chunks(message, len(message) // 25, fillvalue=fillvalue)
+    transpositions = transpositions_of(keyword)
+    untransposed_rows = [untranspose(r, transpositions) for r in rows]
+    columns = zip(*untransposed_rows)
+    rotated_columns = [col[-start:] + col[:-start] for start, col in zip([keycolumn[l] for l in keyword], columns)]    
+    rotated_rows = zip(*rotated_columns)
+    # return rotated_columns
+    return ''.join(chain(*rotated_rows))
+
 
 def hill_encipher(matrix, message_letters, fillvalue='a'):
     """Hill cipher