More work on challenge 8
authorNeil Smith <neil.git@njae.me.uk>
Tue, 12 Sep 2017 15:17:53 +0000 (16:17 +0100)
committerNeil Smith <neil.git@njae.me.uk>
Tue, 12 Sep 2017 15:17:53 +0000 (16:17 +0100)
2016/2016-challenge8.ipynb

index 7a96e70e300a4e743d926d83ffdfce757f327a60..d77a75868d8a312a5cba2f2f3ea46007776ac36e 100644 (file)
     "c8b = open('8b.ciphertext').read()\n",
     "\n",
     "c8as = sanitise(c8a)\n",
-    "c8bs = sanitise(c8b)"
+    "c8bs = cat(c8b.split())"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 9,
+   "execution_count": 2,
    "metadata": {
     "collapsed": false
    },
    "outputs": [
     {
-     "data": {
-      "text/plain": [
-       "(matrix([[ 7,  8],\n",
-       "         [11, 11]]), -5760.41300554484)"
-      ]
-     },
-     "execution_count": 9,
-     "metadata": {},
-     "output_type": "execute_result"
+     "ename": "KeyboardInterrupt",
+     "evalue": "",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[1;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
+      "\u001b[1;32m<ipython-input-2-6852e9196bab>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mkey_a\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mscore\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mhill_break\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msanitise\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mc8a\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[0mkey_a\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mscore\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+      "\u001b[1;32m/home/neil/Documents/programming/cipher-training/cipherbreak.py\u001b[0m in \u001b[0;36mhill_break\u001b[1;34m(message, matrix_size, fitness, number_of_solutions, chunksize)\u001b[0m\n\u001b[0;32m    547\u001b[0m         repeat=matrix_size)]\n\u001b[0;32m    548\u001b[0m     valid_matrices = [m for m, d in \n\u001b[1;32m--> 549\u001b[1;33m         \u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mall_matrices\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mround\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlinalg\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdet\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mm\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mm\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mall_matrices\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    550\u001b[0m                   \u001b[1;32mif\u001b[0m \u001b[0md\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    551\u001b[0m                   \u001b[1;32mif\u001b[0m \u001b[0md\u001b[0m \u001b[1;33m%\u001b[0m \u001b[1;36m2\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+      "\u001b[1;32m/home/neil/Documents/programming/cipher-training/cipherbreak.py\u001b[0m in \u001b[0;36m<listcomp>\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m    546\u001b[0m             for r in itertools.product(range(26), repeat=matrix_size)], \n\u001b[0;32m    547\u001b[0m         repeat=matrix_size)]\n\u001b[1;32m--> 548\u001b[1;33m     valid_matrices = [m for m, d in \n\u001b[0m\u001b[0;32m    549\u001b[0m         \u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mall_matrices\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mround\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlinalg\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdet\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mm\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mm\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mall_matrices\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    550\u001b[0m                   \u001b[1;32mif\u001b[0m \u001b[0md\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+      "\u001b[1;32m/home/neil/Documents/programming/cipher-training/cipherbreak.py\u001b[0m in \u001b[0;36m<genexpr>\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m    547\u001b[0m         repeat=matrix_size)]\n\u001b[0;32m    548\u001b[0m     valid_matrices = [m for m, d in \n\u001b[1;32m--> 549\u001b[1;33m         \u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mall_matrices\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mround\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlinalg\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdet\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mm\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mm\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mall_matrices\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    550\u001b[0m                   \u001b[1;32mif\u001b[0m \u001b[0md\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    551\u001b[0m                   \u001b[1;32mif\u001b[0m \u001b[0md\u001b[0m \u001b[1;33m%\u001b[0m \u001b[1;36m2\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+      "\u001b[1;32m/usr/lib/python3/dist-packages/numpy/linalg/linalg.py\u001b[0m in \u001b[0;36mdet\u001b[1;34m(a)\u001b[0m\n\u001b[0;32m   1774\u001b[0m     \u001b[0mt\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mresult_t\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_commonType\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1775\u001b[0m     \u001b[0msignature\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m'D->D'\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0misComplexType\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mt\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32melse\u001b[0m \u001b[1;34m'd->d'\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1776\u001b[1;33m     \u001b[0mr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_umath_linalg\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdet\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ma\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msignature\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msignature\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   1777\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[0misscalar\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   1778\u001b[0m         \u001b[0mr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult_t\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
+      "\u001b[1;31mKeyboardInterrupt\u001b[0m: "
+     ]
     }
    ],
    "source": [
@@ -51,7 +55,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 3,
+   "execution_count": 9,
    "metadata": {
     "collapsed": false,
     "scrolled": true
@@ -88,7 +92,7 @@
        " ('t', 90)]"
       ]
      },
-     "execution_count": 3,
+     "execution_count": 9,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 19,
+   "execution_count": 3,
    "metadata": {
     "collapsed": false
    },
        "[('0', 15368), ('1', 11257), (' ', 6508), ('2', 5920), ('\\n', 1)]"
       ]
      },
-     "execution_count": 19,
+     "execution_count": 3,
      "metadata": {},
      "output_type": "execute_result"
     }
     "collections.Counter(c8b).most_common()"
    ]
   },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "'1020020020120021112000210020102101210021102011201120002001011121010011211000112110000020000001201112'"
+      ]
+     },
+     "execution_count": 7,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "c8bs[:100]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "['10',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '00',\n",
+       " '111',\n",
+       " '000',\n",
+       " '100',\n",
+       " '010',\n",
+       " '101',\n",
+       " '100',\n",
+       " '110',\n",
+       " '011',\n",
+       " '011',\n",
+       " '000',\n",
+       " '0010111',\n",
+       " '1010011',\n",
+       " '1100011',\n",
+       " '1100000',\n",
+       " '0000001',\n",
+       " '0111',\n",
+       " '0001',\n",
+       " '0001',\n",
+       " '0101',\n",
+       " '1100',\n",
+       " '0101',\n",
+       " '0001',\n",
+       " '0011',\n",
+       " '0110',\n",
+       " '1100',\n",
+       " '1',\n",
+       " '0',\n",
+       " '0',\n",
+       " '0',\n",
+       " '0',\n",
+       " '011',\n",
+       " '110',\n",
+       " '101',\n",
+       " '000',\n",
+       " '001',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '11',\n",
+       " '10',\n",
+       " '0010',\n",
+       " '0010',\n",
+       " '0100',\n",
+       " '0100',\n",
+       " '0000',\n",
+       " '11111',\n",
+       " '11101',\n",
+       " '01001',\n",
+       " '00000',\n",
+       " '01000',\n",
+       " '011100',\n",
+       " '000000',\n",
+       " '101110',\n",
+       " '000010',\n",
+       " '000000',\n",
+       " '01110',\n",
+       " '01000',\n",
+       " '00011',\n",
+       " '00011',\n",
+       " '11000',\n",
+       " '111',\n",
+       " '101',\n",
+       " '100',\n",
+       " '010',\n",
+       " '001',\n",
+       " '01',\n",
+       " '00',\n",
+       " '01',\n",
+       " '10',\n",
+       " '11',\n",
+       " '010',\n",
+       " '000',\n",
+       " '001',\n",
+       " '011',\n",
+       " '110',\n",
+       " '0110',\n",
+       " '1010',\n",
+       " '0010',\n",
+       " '1110',\n",
+       " '0001',\n",
+       " '0111011',\n",
+       " '0010010',\n",
+       " '0010001',\n",
+       " '0000000',\n",
+       " '0010100',\n",
+       " '110001111110',\n",
+       " '101100001100',\n",
+       " '101010110111',\n",
+       " '101010000011',\n",
+       " '010100000000',\n",
+       " '111011100',\n",
+       " '101000100',\n",
+       " '111001001',\n",
+       " '100001001',\n",
+       " '010000010',\n",
+       " '10',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '00',\n",
+       " '1',\n",
+       " '0',\n",
+       " '0',\n",
+       " '0',\n",
+       " '0',\n",
+       " '10',\n",
+       " '11',\n",
+       " '01',\n",
+       " '00',\n",
+       " '00',\n",
+       " '10111',\n",
+       " '10000',\n",
+       " '10011',\n",
+       " '10000',\n",
+       " '01000',\n",
+       " '11100',\n",
+       " '10010',\n",
+       " '01001',\n",
+       " '00001',\n",
+       " '00010',\n",
+       " '0101',\n",
+       " '0001',\n",
+       " '0011',\n",
+       " '0110',\n",
+       " '1100',\n",
+       " '111',\n",
+       " '000',\n",
+       " '100',\n",
+       " '010',\n",
+       " '101',\n",
+       " '011',\n",
+       " '110',\n",
+       " '101',\n",
+       " '000',\n",
+       " '001',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '11',\n",
+       " '10',\n",
+       " '01',\n",
+       " '10',\n",
+       " '11',\n",
+       " '00',\n",
+       " '01',\n",
+       " '1111',\n",
+       " '0100',\n",
+       " '0111',\n",
+       " '1000',\n",
+       " '0001',\n",
+       " '1100',\n",
+       " '0010',\n",
+       " '0001',\n",
+       " '1111',\n",
+       " '1000',\n",
+       " '10',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '00',\n",
+       " '0101',\n",
+       " '0000',\n",
+       " '0011',\n",
+       " '0110',\n",
+       " '1101',\n",
+       " '1100',\n",
+       " '0110',\n",
+       " '0001',\n",
+       " '1001',\n",
+       " '1010',\n",
+       " '011100',\n",
+       " '000000',\n",
+       " '101110',\n",
+       " '000010',\n",
+       " '000000',\n",
+       " '00',\n",
+       " '10',\n",
+       " '11',\n",
+       " '01',\n",
+       " '00',\n",
+       " '0101',\n",
+       " '0001',\n",
+       " '0011',\n",
+       " '0110',\n",
+       " '1100',\n",
+       " '0111',\n",
+       " '0001',\n",
+       " '0001',\n",
+       " '0101',\n",
+       " '1100',\n",
+       " '100000',\n",
+       " '000001',\n",
+       " '110011',\n",
+       " '010011',\n",
+       " '001100',\n",
+       " '1111',\n",
+       " '1000',\n",
+       " '0011',\n",
+       " '0000',\n",
+       " '1000',\n",
+       " '1100',\n",
+       " '0110',\n",
+       " '0001',\n",
+       " '1001',\n",
+       " '1010',\n",
+       " '0001',\n",
+       " '0001',\n",
+       " '0111',\n",
+       " '1110',\n",
+       " '1000',\n",
+       " '01100101000',\n",
+       " '00101000000',\n",
+       " '00101000010',\n",
+       " '00101010010',\n",
+       " '00010011100',\n",
+       " '11',\n",
+       " '01',\n",
+       " '01',\n",
+       " '00',\n",
+       " '00',\n",
+       " '11011010000',\n",
+       " '01010101000',\n",
+       " '01111110010',\n",
+       " '00101101010',\n",
+       " '10000010100',\n",
+       " '0100',\n",
+       " '0011',\n",
+       " '0011',\n",
+       " '1110',\n",
+       " '0000',\n",
+       " '01',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '10',\n",
+       " '111',\n",
+       " '100',\n",
+       " '011',\n",
+       " '000',\n",
+       " '000',\n",
+       " '010',\n",
+       " '000',\n",
+       " '001',\n",
+       " '011',\n",
+       " '110',\n",
+       " '111111',\n",
+       " '100010',\n",
+       " '101001',\n",
+       " '111000',\n",
+       " '000000',\n",
+       " '00011',\n",
+       " '10001',\n",
+       " '11000',\n",
+       " '01000',\n",
+       " '00000',\n",
+       " '11001',\n",
+       " '10001',\n",
+       " '10011',\n",
+       " '10011',\n",
+       " '00100',\n",
+       " '110',\n",
+       " '110',\n",
+       " '010',\n",
+       " '000',\n",
+       " '000',\n",
+       " '111',\n",
+       " '100',\n",
+       " '011',\n",
+       " '000',\n",
+       " '000',\n",
+       " '010',\n",
+       " '000',\n",
+       " '001',\n",
+       " '011',\n",
+       " '110',\n",
+       " '1011',\n",
+       " '1011',\n",
+       " '1101',\n",
+       " '0101',\n",
+       " '0010',\n",
+       " '11011101',\n",
+       " '11010001',\n",
+       " '01111011',\n",
+       " '00101011',\n",
+       " '01000000',\n",
+       " '11',\n",
+       " '01',\n",
+       " '01',\n",
+       " '00',\n",
+       " '00',\n",
+       " '010',\n",
+       " '000',\n",
+       " '001',\n",
+       " '011',\n",
+       " '110',\n",
+       " '11010',\n",
+       " '10100',\n",
+       " '00110',\n",
+       " '01100',\n",
+       " '10000',\n",
+       " '01010',\n",
+       " '00001',\n",
+       " '00101',\n",
+       " '01101',\n",
+       " '11000',\n",
+       " '1100',\n",
+       " '1110',\n",
+       " '1011',\n",
+       " '0001',\n",
+       " '0000',\n",
+       " '1111',\n",
+       " '1000',\n",
+       " '0011',\n",
+       " '0000',\n",
+       " '1000',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '11',\n",
+       " '10',\n",
+       " '01111',\n",
+       " '01011',\n",
+       " '11001',\n",
+       " '00100',\n",
+       " '00010',\n",
+       " '01',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '10',\n",
+       " '00001110',\n",
+       " '01010010',\n",
+       " '10111011',\n",
+       " '10110101',\n",
+       " '01001000',\n",
+       " '110',\n",
+       " '110',\n",
+       " '010',\n",
+       " '000',\n",
+       " '000',\n",
+       " '010',\n",
+       " '000',\n",
+       " '001',\n",
+       " '011',\n",
+       " '110',\n",
+       " '10101',\n",
+       " '10010',\n",
+       " '10011',\n",
+       " '10110',\n",
+       " '01001',\n",
+       " '10',\n",
+       " '00',\n",
+       " '00',\n",
+       " '11',\n",
+       " '00',\n",
+       " '1110',\n",
+       " '1010',\n",
+       " '0000',\n",
+       " '0100',\n",
+       " '1101',\n",
+       " '0101',\n",
+       " '0000',\n",
+       " '0011',\n",
+       " '0110',\n",
+       " '1101',\n",
+       " '00100',\n",
+       " '01000',\n",
+       " '01010',\n",
+       " '01010',\n",
+       " '10000',\n",
+       " '01',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '10',\n",
+       " '01',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '00',\n",
+       " '1111',\n",
+       " '1000',\n",
+       " '0011',\n",
+       " '0000',\n",
+       " '1000',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '11',\n",
+       " '10',\n",
+       " '10101110',\n",
+       " '00100010',\n",
+       " '01001011',\n",
+       " '11000001',\n",
+       " '10000000',\n",
+       " '1011',\n",
+       " '1011',\n",
+       " '1101',\n",
+       " '0101',\n",
+       " '0010',\n",
+       " '10',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '00',\n",
+       " '110',\n",
+       " '100',\n",
+       " '100',\n",
+       " '010',\n",
+       " '001',\n",
+       " '0101',\n",
+       " '0001',\n",
+       " '0011',\n",
+       " '0110',\n",
+       " '1100',\n",
+       " '01',\n",
+       " '10',\n",
+       " '11',\n",
+       " '00',\n",
+       " '01',\n",
+       " '1100',\n",
+       " '0010',\n",
+       " '0001',\n",
+       " '1111',\n",
+       " '1000',\n",
+       " '11',\n",
+       " '01',\n",
+       " '01',\n",
+       " '01',\n",
+       " '00',\n",
+       " '0110',\n",
+       " '0010',\n",
+       " '0000',\n",
+       " '0100',\n",
+       " '1101',\n",
+       " '111',\n",
+       " '000',\n",
+       " '100',\n",
+       " '010',\n",
+       " '101',\n",
+       " '1111',\n",
+       " '1000',\n",
+       " '0011',\n",
+       " '0000',\n",
+       " '1000',\n",
+       " '0000',\n",
+       " '0001',\n",
+       " '1110',\n",
+       " '0111',\n",
+       " '0000',\n",
+       " '0111',\n",
+       " '0001',\n",
+       " '0001',\n",
+       " '0101',\n",
+       " '1100',\n",
+       " '11100',\n",
+       " '10000',\n",
+       " '00010',\n",
+       " '10010',\n",
+       " '01001',\n",
+       " '010',\n",
+       " '001',\n",
+       " '001',\n",
+       " '111',\n",
+       " '000',\n",
+       " '111',\n",
+       " '101',\n",
+       " '100',\n",
+       " '010',\n",
+       " '001',\n",
+       " '010',\n",
+       " '001',\n",
+       " '001',\n",
+       " '111',\n",
+       " '000',\n",
+       " '1110',\n",
+       " '0001',\n",
+       " '1001',\n",
+       " '0101',\n",
+       " '1010',\n",
+       " '1100',\n",
+       " '1100',\n",
+       " '1011',\n",
+       " '1001',\n",
+       " '0000',\n",
+       " '11',\n",
+       " '11',\n",
+       " '01',\n",
+       " '01',\n",
+       " '00',\n",
+       " '1011',\n",
+       " '1000',\n",
+       " '0111',\n",
+       " '0100',\n",
+       " '1000',\n",
+       " '11',\n",
+       " '11',\n",
+       " '01',\n",
+       " '01',\n",
+       " '00',\n",
+       " '010',\n",
+       " '001',\n",
+       " '001',\n",
+       " '111',\n",
+       " '000',\n",
+       " '0110',\n",
+       " '1010',\n",
+       " '1011',\n",
+       " '0001',\n",
+       " '0000',\n",
+       " '01',\n",
+       " '10',\n",
+       " '11',\n",
+       " '00',\n",
+       " '01',\n",
+       " '1100',\n",
+       " '1110',\n",
+       " '1011',\n",
+       " '0001',\n",
+       " '0000',\n",
+       " '11',\n",
+       " '01',\n",
+       " '01',\n",
+       " '01',\n",
+       " '00',\n",
+       " '0100111',\n",
+       " '1110001',\n",
+       " '0011100',\n",
+       " '0001000',\n",
+       " '0000000',\n",
+       " '011010',\n",
+       " '010111',\n",
+       " '001101',\n",
+       " '000001',\n",
+       " '000000',\n",
+       " '110',\n",
+       " '110',\n",
+       " '010',\n",
+       " '000',\n",
+       " '000',\n",
+       " '1',\n",
+       " '0',\n",
+       " '0',\n",
+       " '0',\n",
+       " '0',\n",
+       " '10',\n",
+       " '11',\n",
+       " '01',\n",
+       " '00',\n",
+       " '00',\n",
+       " '010011',\n",
+       " '111000',\n",
+       " '001011',\n",
+       " '101000',\n",
+       " '000101',\n",
+       " '00101111010',\n",
+       " '10110110000',\n",
+       " '11100110011',\n",
+       " '11111010101',\n",
+       " '00000000100',\n",
+       " '010',\n",
+       " '001',\n",
+       " '001',\n",
+       " '111',\n",
+       " '000',\n",
+       " '0111',\n",
+       " '0001',\n",
+       " '0001',\n",
+       " '0101',\n",
+       " '1100',\n",
+       " '0011',\n",
+       " '1011',\n",
+       " '1111',\n",
+       " '0111',\n",
+       " '0000',\n",
+       " '0111',\n",
+       " '0001',\n",
+       " '0001',\n",
+       " '0101',\n",
+       " '1100',\n",
+       " '100000',\n",
+       " '000001',\n",
+       " '110011',\n",
+       " '010011',\n",
+       " '001100',\n",
+       " '11',\n",
+       " '01',\n",
+       " '01',\n",
+       " '01',\n",
+       " '00',\n",
+       " '01',\n",
+       " '10',\n",
+       " '11',\n",
+       " '00',\n",
+       " '01',\n",
+       " '1000000',\n",
+       " '1000110',\n",
+       " '0001100',\n",
+       " '0001010',\n",
+       " '0110001',\n",
+       " '01',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '10',\n",
+       " '0001111',\n",
+       " '0010101',\n",
+       " '1101001',\n",
+       " '1010000',\n",
+       " '0100000',\n",
+       " '01',\n",
+       " '10',\n",
+       " '11',\n",
+       " '00',\n",
+       " '01',\n",
+       " '0110',\n",
+       " '1000',\n",
+       " '1011',\n",
+       " '1101',\n",
+       " '0000',\n",
+       " '11',\n",
+       " '01',\n",
+       " '01',\n",
+       " '00',\n",
+       " '00',\n",
+       " '1110',\n",
+       " '1010',\n",
+       " '0000',\n",
+       " '0100',\n",
+       " '1101',\n",
+       " '11000100',\n",
+       " '01110100',\n",
+       " '00001110',\n",
+       " '10111010',\n",
+       " '10000000',\n",
+       " '11',\n",
+       " '01',\n",
+       " '01',\n",
+       " '00',\n",
+       " '00',\n",
+       " '010',\n",
+       " '000',\n",
+       " '001',\n",
+       " '011',\n",
+       " '110',\n",
+       " '1100',\n",
+       " '0010',\n",
+       " '0001',\n",
+       " '1111',\n",
+       " '1000',\n",
+       " '0110',\n",
+       " '0010',\n",
+       " '0000',\n",
+       " '0100',\n",
+       " '1101',\n",
+       " '1101111',\n",
+       " '1000011',\n",
+       " '1000011',\n",
+       " '0101000',\n",
+       " '0011001',\n",
+       " '1100',\n",
+       " '0000',\n",
+       " '1011',\n",
+       " '0001',\n",
+       " '0000',\n",
+       " '10',\n",
+       " '00',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '1111',\n",
+       " '1000',\n",
+       " '0011',\n",
+       " '0000',\n",
+       " '1000',\n",
+       " '0000',\n",
+       " '0101',\n",
+       " '1011',\n",
+       " '1011',\n",
+       " '0100',\n",
+       " '110001',\n",
+       " '011101',\n",
+       " '000011',\n",
+       " '101110',\n",
+       " '100000',\n",
+       " '11111',\n",
+       " '11101',\n",
+       " '01001',\n",
+       " '00000',\n",
+       " '01000',\n",
+       " '010',\n",
+       " '000',\n",
+       " '001',\n",
+       " '011',\n",
+       " '110',\n",
+       " '111011100',\n",
+       " '101000100',\n",
+       " '111001001',\n",
+       " '100001001',\n",
+       " '010000010',\n",
+       " '111',\n",
+       " '111',\n",
+       " '001',\n",
+       " '001',\n",
+       " '100',\n",
+       " '1',\n",
+       " '1',\n",
+       " '0',\n",
+       " '0',\n",
+       " '0',\n",
+       " '1100010010',\n",
+       " '1010111010',\n",
+       " '1001111110',\n",
+       " '0101100100',\n",
+       " '1010000001',\n",
+       " '1110110100',\n",
+       " '0100010010',\n",
+       " '0100000001',\n",
+       " '0000000001',\n",
+       " '0001001010',\n",
+       " '01',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '10',\n",
+       " '0000100',\n",
+       " '1101110',\n",
+       " '0110011',\n",
+       " '1111011',\n",
+       " '0000000',\n",
+       " '010',\n",
+       " '001',\n",
+       " '001',\n",
+       " '111',\n",
+       " '000',\n",
+       " '1',\n",
+       " '1',\n",
+       " '0',\n",
+       " '0',\n",
+       " '0',\n",
+       " '11010',\n",
+       " '10100',\n",
+       " '00110',\n",
+       " '01100',\n",
+       " '10000',\n",
+       " '11',\n",
+       " '01',\n",
+       " '01',\n",
+       " '00',\n",
+       " '00',\n",
+       " '11111',\n",
+       " '10000',\n",
+       " '00010',\n",
+       " '01011',\n",
+       " '11001',\n",
+       " '0110100111',\n",
+       " '0101010001',\n",
+       " '1111100001',\n",
+       " '1011010010',\n",
+       " '0000101000',\n",
+       " '1111',\n",
+       " '1000',\n",
+       " '0011',\n",
+       " '0000',\n",
+       " '1000',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '11',\n",
+       " '10',\n",
+       " '11',\n",
+       " '10',\n",
+       " '10',\n",
+       " '11',\n",
+       " '00',\n",
+       " '101100',\n",
+       " '100010',\n",
+       " '111011',\n",
+       " '111011',\n",
+       " '000100',\n",
+       " '0110',\n",
+       " '0010',\n",
+       " '0000',\n",
+       " '0100',\n",
+       " '1101',\n",
+       " '11',\n",
+       " '10',\n",
+       " '10',\n",
+       " '01',\n",
+       " '00',\n",
+       " '110',\n",
+       " '010',\n",
+       " '011',\n",
+       " '101',\n",
+       " '000',\n",
+       " '111',\n",
+       " '011',\n",
+       " '101',\n",
+       " '100',\n",
+       " '000',\n",
+       " '10110',\n",
+       " '01100',\n",
+       " '11011',\n",
+       " '11010',\n",
+       " '00000',\n",
+       " '10',\n",
+       " '00',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '0110',\n",
+       " '0010',\n",
+       " '0000',\n",
+       " '0100',\n",
+       " '1101',\n",
+       " '11010',\n",
+       " '10100',\n",
+       " '00110',\n",
+       " '01100',\n",
+       " '10000',\n",
+       " '11',\n",
+       " '01',\n",
+       " '01',\n",
+       " '01',\n",
+       " '00',\n",
+       " '110110',\n",
+       " '101010',\n",
+       " '011010',\n",
+       " '000110',\n",
+       " '000001',\n",
+       " '1000',\n",
+       " '0010',\n",
+       " '0111',\n",
+       " '1111',\n",
+       " '1000',\n",
+       " '110',\n",
+       " '110',\n",
+       " '010',\n",
+       " '000',\n",
+       " '000',\n",
+       " '010',\n",
+       " '000',\n",
+       " '001',\n",
+       " '011',\n",
+       " '110',\n",
+       " '1111010',\n",
+       " '1011001',\n",
+       " '0001001',\n",
+       " '1000000',\n",
+       " '0100110',\n",
+       " '0011111111',\n",
+       " '0000100010',\n",
+       " '0110101011',\n",
+       " '0111010100',\n",
+       " '1001000011',\n",
+       " '0001110111',\n",
+       " '1010000001',\n",
+       " '1100100001',\n",
+       " '1101000010',\n",
+       " '0010011000',\n",
+       " '11',\n",
+       " '01',\n",
+       " '01',\n",
+       " '01',\n",
+       " '00',\n",
+       " '110011',\n",
+       " '000000',\n",
+       " '101111',\n",
+       " '000100',\n",
+       " '000001',\n",
+       " '01',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '10',\n",
+       " '1100',\n",
+       " '1010',\n",
+       " '1001',\n",
+       " '0001',\n",
+       " '1010',\n",
+       " '01001',\n",
+       " '00100',\n",
+       " '00100',\n",
+       " '10101',\n",
+       " '10011',\n",
+       " '01',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '10',\n",
+       " '10',\n",
+       " '00',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '1111',\n",
+       " '1001',\n",
+       " '1001',\n",
+       " '1110',\n",
+       " '0000',\n",
+       " '10',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '00',\n",
+       " '1101111',\n",
+       " '1000011',\n",
+       " '1000011',\n",
+       " '0101000',\n",
+       " '0011001',\n",
+       " '1111101',\n",
+       " '0011101',\n",
+       " '1001111',\n",
+       " '1100011',\n",
+       " '0100100',\n",
+       " '0010111',\n",
+       " '1101100',\n",
+       " '0100011',\n",
+       " '1100010',\n",
+       " '0001001',\n",
+       " '1111',\n",
+       " '1000',\n",
+       " '0011',\n",
+       " '0000',\n",
+       " '1000',\n",
+       " '00',\n",
+       " '00',\n",
+       " '01',\n",
+       " '11',\n",
+       " '10',\n",
+       " '10111100',\n",
+       " '10100000',\n",
+       " '00101001',\n",
+       " '01110001',\n",
+       " '01000110',\n",
+       " '110',\n",
+       " '110',\n",
+       " '010',\n",
+       " '000',\n",
+       " '000',\n",
+       " '11',\n",
+       " '10',\n",
+       " '10',\n",
+       " '11',\n",
+       " '00',\n",
+       " '1111',\n",
+       " '1000',\n",
+       " '0011',\n",
+       " '0000',\n",
+       " '1000',\n",
+       " '1010011',\n",
+       " '1001000',\n",
+       " '1111111',\n",
+       " '1111110',\n",
+       " '0000001',\n",
+       " '111',\n",
+       " '001',\n",
+       " '000',\n",
+       " '110',\n",
+       " '101',\n",
+       " '111',\n",
+       " '000',\n",
+       " '100',\n",
+       " '010',\n",
+       " '101',\n",
+       " '0001',\n",
+       " '0000',\n",
+       " '0111',\n",
+       " '1110',\n",
+       " '0000',\n",
+       " '10110',\n",
+       " '10000',\n",
+       " '00000',\n",
+       " '01100',\n",
+       " '01011',\n",
+       " '0110',\n",
+       " '0010',\n",
+       " '0000',\n",
+       " '0100',\n",
+       " '1101',\n",
+       " '0000101',\n",
+       " '0010101',\n",
+       " '0101101',\n",
+       " '0111001',\n",
+       " '0000000',\n",
+       " '1',\n",
+       " '1',\n",
+       " '0',\n",
+       " '0',\n",
+       " '0',\n",
+       " '110',\n",
+       " '000',\n",
+       " '100',\n",
+       " '010',\n",
+       " '001',\n",
+       " ...]"
+      ]
+     },
+     "execution_count": 3,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "c8b2 = [i for i in c8bs.split('2') if i]\n",
+    "c8b2"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 29,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "'bi vjr dom omdabhx qzbp qzmh b gdv ym amda dxdbh ebffma qtbnm hjt yv qzm kjpq abxbqdf prosmbffdhnm pvhabndqm bi b dg pqbff dfbsm qzmh vjr gdv ym gv jhfv zjkm bi qzmv zdsm ebffma gm qzmh qzbp fmqqmo tbff zdsm ymmh abpqobyrqma bh rhmhnovkqma ijog qj dff qzm pjnbdf gmabd pbqmp dha dff qzm hmtp dxmhnbmp bh qzm tjofa qzmbo hdgm tbff ym ehjth qj msmovjhm dha qzm pqjov ji tzdq qzmv qobma qj aj tbff ym zmdafbhm hmtp bi hjq qzmh gv zjkm bp qzdq vjr tbff emmk qzbp lrbmq ijo hjt ijo vjro pdem dp tmff dp ijo gbhm gv hdgm bp cdgmfbd adfgdo dha b dg kdoqfv ompkjhpbyfm ijo qzbp gmpp qzbp fmqqmo bp gv dqqmgkq qj mukfdbh gv ojfm bh tzdq zdkkmhma bh qzm zjkm qzdq hjqzbhx fbem bq tbff msmo zdkkmh dxdbh qzm pvhabndqm tdp d xjsmohgmhq bhbqbdqbsm qj komkdom ijo d tjofa bh tzbnz mhnovkqbjh tbff ym pj pmnrom qzdq hj jhm ndh nodne bq qzdq tjofa bp dfgjpq zmom dha qzm lrdhqrg qmnzhjfjxv omsjfrqbjh bp fbemfv qj xbsm yboqz qj bq pjjh bi hjqzbhx nzdhxmp kobsdnv tbff ym dypjfrqm dha pj tbff pmnomnv zjt vjr immf dyjrq qzdq amkmhap d fjq jh tzj vjr dom dha tzj vjr qzbhe zdp gjpq qj xdbh b tdp hmrqodf yrq tzmh gv iobmha gdoqbh prxxmpqma qzdq tm njrfa dadkq pjgm ji qzm qmnzhjfjxv tm amsmfjkma ijo qzm fbxj kojcmnq b tdp munbqma dq qzm kjppbybfbqbmp jro kfdh tdp qj yrbfa ymzdsbjrodf qmgkfdqm ibfqmop qj qodne xojrk dnqbsbqbmp jh qzm tmy jobxbhdffv tm zjkma qj gjamf qzm pkomda ji bamdp gdoqbh tdp bhqmompqma bh qzm gdoemqbhx dhxfm dha pdt bq dp d tdv ji pmffbhx kojarnqp yv rhamopqdhabhx zjt gmgmp kojkdxdqm b tdp gjom bhqmompqma bh rhamopqdhabhx zjt kjfbqbndf bamdp pkomda qzojrxz d kjkrfdqbjh bq tdp d gbffbjh gbfmp iojg jro omdf domdp ji mukmoqbpm dha b pzjrfa zdsm omdfbpma qzm adhxmop grnz mdofbmo qzm tdo xdgmp amkdoqgmhq dq avhdgbu pdt qzm kjqmhqbdf ijo qzbp qjjf qj ym rpma dp d qtmhqv ibopq nmhqrov smopbjh ji pbxbhq dffjtbhx bhqmffbxmhnm dxmhnbmp dha xjsmohgmhqp qj qodne pgdff xojrk dnqbsbqbmp yv gdqnzbhx jhfbhm ymzdsbjro qj ehjth qmgkfdqmp pgdff xojrkp bhnfrabhx qmoojobpq nmffp qzm kap pvhabndqm zda dxmhqp dq crpq dyjrq msmov dogp gdhridnqromo bh qzm tmpq bhnfrabhx avhdgbu tzmh qzmv ymndgm dtdom ji jro tjoe qzmv doodhxma ijo avhdgbu qj omnorbq rp jh qzmbo bhqmoh pnzmgm bq tdp dh dgdwbhx qbgm tm zda msmov ompjronm tm njrfa tdhq dha dq ibopq qzm iommajg qj aj tzdq tm tdhqma xmhqfv qzmv yojrxzq rp ojrha qj tjoebhx jh pgdff xojrk avhdgbn qodnebhx dha ijffjtbhx pjgm ji qzm omnmhq qodxmabmp b tjoema jrq ijo gvpmfi qzm kjqmhqbdf ji jro pjiqtdom qj amqmnq dha komsmhq qmoojobpg yrq tm hmmama adqd tm ndffma bq qzm qmgk ydhe d adqdydpm ji ymzdsbjrodf qmgkfdqmp tzbnz tm tjrfa rpm qj gdqnz dxdbhpq fbsm jhfbhm qodiibn qj zbxzfbxzq domdp ji bhqmompq hj jhm zda msmo tjoema jh qzbp pjoq ji kdqqmoh ydpma qodnebhx ymijom pj tm zda hj adqd jh tzbnz qj ydpm qzm qmgkfdqmp gjamffbhx njggrhbndqbjh kdqqmohp ymqtmmh gmgymop ji d qmoojobpq xojrk tbqzjrq qzm qmgkfdqmp bq tdp bgkjppbyfm qj ndoov jrq omdf qbgm gjhbqjobhx dp qzm adqd odqm tdp ido qjj zbxz ijo fbsm dhdfvpbp b odbpma gv njhnmohp tbqz qzm zmda ji ompmdonz dq avhdgbu dha qzdq tdp tzmh b tdp bhqojarnma qj pjgmjhm iojg qzm pvhabndqm qzmv kojgbpma rp adqd ydpma jh gdqzmgdqbndf gjamfp amsmfjkma yv qzm amkdoqgmhq ji amimhnm dha qzm kojcmnq njhqbhrma bq tdp gjom prnnmppirf qzdh tm zda adoma qj zjkm d pqomdg ji zbxz lrdfbqv adqd ibffma qzm qmgk ydhe dha qzm dfxjobqzg ymxdh qj pkjq omdf tjofa mudgkfmp qzdq nfjpmfv gdqnzma qzm qmgkfdqmp ji njropm d fjq ji qzdq tdp crpq nzdqqmo qzmom bp d tjofa ji abiimomhnm ymqtmmh abpnrppbhx dha ndoovbhx jrq dh dqqdne dha hj pmnrobqv pmosbnm ndh bhsmpqbxdqm msmov amframa idhqdpv jhfbhm bh joamo qj ibha qzm jhm omdf kfjq avhdgbu tmom munbqma yv tzdq tm zda dnzbmsma yrq dp qzm omprfqp ojffma bh qzmv amgdhama gjom dnnrodnv dha ijo qzdq tm hmmama grnz ymqqmo adqd qzm pvhabndqm tmom zdkkv qj jyfbxm dha qzdq bp tzmh b omdfbpma qzm zjt ido qzmv tmom komkdoma qj xj b qobma qj njhsbhnm gvpmfi qzdq qzm pvhabndqm zda dnnmpp qj d fdoxm adqdydpm ji mubpqbhx njggrhbndqbjhp qzdq qzmv tmom rpbhx qj muqodnq ymzdsbjrodf qmgkfdqmp yrq qzm gjom b qzjrxzq dyjrq bq qzm gjom rhfbemfv bq pmmgma jro pjiqtdom tdp pmmbhx omdf tjofa dqqdne kdqqmohp qzdq tmom prpkbnbjrpfv pbgbfdo dfgjpq nzjomjxodkzma dha b ymxdh qj tjhamo bi qzm kap pvhabndqm tmom hjq crpq qodnebhx qmoojobpq dnqbsbqv yrq tmom mhnjrodxbhx bq dgjhx xojrkp qzdq qzmv zda kmhmqodqma bh joamo qj yrbfa dh mhnvnfjkdmabd ji ymzdsbjrodf qmgkfdqmp qzdq njrfa ym rpma qj pkjq irqrom dqqdnep ymijom qzmv zdkkmhma qzm pvhabndqm zda dh dnzbffmp zmmf bq tdp hjq kjppbyfm qj njjoabhdqm qzmbo ompmdonz kojxodggm tbqzjrq fmdsbhx qzmbo jth abxbqdf ijjqkobhq gdoqbh dha b omijnrpma jro miijoqp jh qodnebhx qzmg ajth dha ijrha dff qzm msbamhnm tm hmmama yrq qzmv tmom qzm mukmoqp hjq rp dha tm grpq zdsm qobxxmoma dh dfdog pjgmtzmom qzmv xdsm rp jhm nzjbnm gv amdqz tdp hjt bhmsbqdyfm qzm jhfv lrmpqbjh tdp tzmqzmo jo hjq bq tjrfa ym idema jhnm b tdp jiibnbdffv amda b tjrfa zdsm hj kojqmnqbjh yrq tm tmom sdfrdyfm qj qzmg dha qzdq tdp qzm emv qj jro prosbsdf b hmsmo ehmt qzm hdgm ji qzm xbof qzmv rpma qj idem gv prbnbam yrq qzmv aba dpprom gm qzdq pzm zda abma ji hdqrodf ndrpmp b zjkm qzdq grnz tdp qorm qzm pvhabndqm tmom qzm omdf mukmoqp bh mpkbjhdxm yrq gdoqbh dha b zda qzm maxm bh njabhx qzmv tdqnzma rp ndomirffv yrq tm gdhdxma qj kfdhq d sborp bh qzm adqdydpm mhxbhm dha bq tbff zdsm ymmh qobxxmoma fjhx ymijom vjr omda qzbp bq bp ampbxhma qj bhimnq msmov njkv ji jro dfxjobqzg dha qj mhnovkq nornbdf mfmgmhqp ji qzm njam omhamobhx bq rhrpdyfm tm fmdohma d fjq iojg pqravbhx pqruhmq dha qzm qmgk ydhe tbff priimo qzm pdgm idqm dp qzm bodhbdh nmhqobirxmp hjt qzm sborp bp omfmdpma tm njhsbhnma qzm pvhabndqm qj irha d zdnemo njffmnqbsm bh hjotdv dha qj dffjt gdoqbh qj tjoe qzmom rhamonjsmo dp ido dp qzmv tmom njhnmohma zm tbff ym zdosmpqbhx ydpmfbhm adqd ijo hjbpm ibfqmobhx bh pjnbdf gmabd qodiibn yrq zm tbff ym abpqobyrqbhx qzbp ibfm dha qzm sborp qj dp gdhv pmosmop dp zm ndh tbqzjrq dfmoqbhx qzmg gdoqbh bp xjja dq qzbp zm zdp dfomdav zdnema d hrgymo ji ydne rk njgkdhv dha dkk pmosmop dha rpma qzmg dp d abpqobyrqbjh gmnzdhbpg tm zdsm dfpj ymmh fmdsbhx d qodbf ijo qzm bhqmffbxmhnm pmosbnmp tm zdsm hj omdpjh qj ymfbmsm qzm xjsmohgmhqp dom njhhmnqma tbqz qzbp dha msmov omdpjh qj ymfbmsm qzmv gdv ym jro ympq zjkm ji pqjkkbhx qzmg dom tm pdim kojydyfv hjq jo qzbp bhprodhnm kjfbnv tjrfa zdsm omgdbhma crpq qzdq tm gbxzq ym jh qzm orh qzjrxz rhdyfm qj qobxxmo qzm amda gdh ptbqnz qzdq tdp emmkbhx qzmpm ibfmp pdim tm aj hjq kfdh jh xbsbhx rk dha tm roxm vjr hjq qj'"
+      ]
+     },
+     "execution_count": 29,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "a = [c8b2[i-5:i] for i in range(5, len(c8b2), 5)]\n",
+    "b = [list(zip(*[list(r) for r in w])) for w in a]\n",
+    "c = [[cat(reversed(list(t))) for t in w] for w in b]\n",
+    "d = [[int(l, 2) for l in w] for w in c]\n",
+    "e = [cat(chr(ord('a') + i) for i in w) for w in d]\n",
+    "f = wcat(e)\n",
+    "f"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 30,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "(21, -7841.728641887026)"
+      ]
+     },
+     "execution_count": 30,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "caesar_break(f)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 32,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "'hf xnt aqe qeadhmg szhr szem h lax be dead agahm jhkked svhce mnv bx sze onrs dhghsak rtquehkkamce rxmdhcase hf h al rshkk akhue szem xnt lax be lx nmkx znoe hf szex zaue jhkked le szem szhr kesseq vhkk zaue beem dhrsqhbtsed hm tmemcqxosed fnql sn akk sze rnchak ledha rhser amd akk sze mevr agemcher hm sze vnqkd szehq male vhkk be jmnvm sn eueqxnme amd sze rsnqx nf vzas szex sqhed sn dn vhkk be zeadkhme mevr hf mns szem lx znoe hr szas xnt vhkk jeeo szhr pthes fnq mnv fnq xntq raje ar vekk ar fnq lhme lx male hr ialekha daklaq amd h al oaqskx qeronmrhbke fnq szhr lerr szhr kesseq hr lx asselos sn ewokahm lx qnke hm vzas zaooemed hm sze znoe szas mnszhmg khje hs vhkk eueq zaooem agahm sze rxmdhcase var a gnueqmlems hmhshashue sn oqeoaqe fnq a vnqkd hm vzhcz emcqxoshnm vhkk be rn rectqe szas mn nme cam cqacj hs szas vnqkd hr aklnrs zeqe amd sze ptamstl seczmnkngx qeunktshnm hr khjekx sn ghue bhqsz sn hs rnnm hf mnszhmg czamger oqhuacx vhkk be abrnktse amd rn vhkk recqecx znv xnt feek abnts szas deoemdr a kns nm vzn xnt aqe amd vzn xnt szhmj zar lnrs sn gahm h var metsqak bts vzem lx fqhemd laqshm rtggersed szas ve cntkd adaos rnle nf sze seczmnkngx ve deueknoed fnq sze khgn oqniecs h var ewchsed as sze onrrhbhkhsher ntq okam var sn bthkd bezauhntqak selokase fhkseqr sn sqacj gqnto acshuhsher nm sze veb nqhghmakkx ve znoed sn lndek sze roqead nf hdear laqshm var hmseqersed hm sze laqjeshmg amgke amd rav hs ar a vax nf rekkhmg oqndtcsr bx tmdeqrsamdhmg znv leler oqnoagase h var lnqe hmseqersed hm tmdeqrsamdhmg znv onkhshcak hdear roqead szqntgz a onotkashnm hs var a lhkkhnm lhker fqnl ntq qeak aqear nf ewoeqshre amd h rzntkd zaue qeakhred sze damgeqr ltcz eaqkheq sze vaq galer deoaqslems as dxmalhw rav sze onsemshak fnq szhr snnk sn be tred ar a svemsx fhqrs cemstqx ueqrhnm nf rhghms akknvhmg hmsekkhgemce agemcher amd gnueqmlemsr sn sqacj rlakk gqnto acshuhsher bx lasczhmg nmkhme bezauhntq sn jmnvm selokaser rlakk gqntor hmcktdhmg seqqnqhrs cekkr sze odr rxmdhcase zad agemsr as itrs abnts eueqx aqlr lamtfacstqeq hm sze vers hmcktdhmg dxmalhw vzem szex becale avaqe nf ntq vnqj szex aqqamged fnq dxmalhw sn qecqths tr nm szehq hmseqm rczele hs var am alayhmg shle ve zad eueqx qerntqce ve cntkd vams amd as fhqrs sze fqeednl sn dn vzas ve vamsed gemskx szex bqntgzs tr qntmd sn vnqjhmg nm rlakk gqnto dxmalhc sqacjhmg amd fnkknvhmg rnle nf sze qecems sqagedher h vnqjed nts fnq lxrekf sze onsemshak nf ntq rnfsvaqe sn desecs amd oqeuems seqqnqhrl bts ve meeded dasa ve cakked hs sze selo bamj a dasabare nf bezauhntqak selokaser vzhcz ve vntkd tre sn lascz agahmrs khue nmkhme sqaffhc sn zhgzkhgzs aqear nf hmseqers mn nme zad eueq vnqjed nm szhr rnqs nf oasseqm bared sqacjhmg befnqe rn ve zad mn dasa nm vzhcz sn bare sze selokaser lndekkhmg cnlltmhcashnm oasseqmr besveem lelbeqr nf a seqqnqhrs gqnto vhsznts sze selokaser hs var hlonrrhbke sn caqqx nts qeak shle lnmhsnqhmg ar sze dasa qase var faq snn zhgz fnq khue amakxrhr h qahred lx cnmceqmr vhsz sze zead nf qereaqcz as dxmalhw amd szas var vzem h var hmsqndtced sn rnlenme fqnl sze rxmdhcase szex oqnlhred tr dasa bared nm laszelashcak lndekr deueknoed bx sze deoaqslems nf defemce amd sze oqniecs cnmshmted hs var lnqe rtccerrftk szam ve zad daqed sn znoe a rsqeal nf zhgz ptakhsx dasa fhkked sze selo bamj amd sze akgnqhszl begam sn rons qeak vnqkd ewaloker szas cknrekx lasczed sze selokaser nf cntqre a kns nf szas var itrs czasseq szeqe hr a vnqkd nf dhffeqemce besveem dhrctrrhmg amd caqqxhmg nts am assacj amd mn rectqhsx requhce cam hmuershgase eueqx dektded famsarx nmkhme hm nqdeq sn fhmd sze nme qeak okns dxmalhw veqe ewchsed bx vzas ve zad aczheued bts ar sze qertksr qnkked hm szex delamded lnqe acctqacx amd fnq szas ve meeded ltcz besseq dasa sze rxmdhcase veqe zaoox sn nbkhge amd szas hr vzem h qeakhred sze znv faq szex veqe oqeoaqed sn gn h sqhed sn cnmuhmce lxrekf szas sze rxmdhcase zad accerr sn a kaqge dasabare nf ewhrshmg cnlltmhcashnmr szas szex veqe trhmg sn ewsqacs bezauhntqak selokaser bts sze lnqe h szntgzs abnts hs sze lnqe tmkhjekx hs reeled ntq rnfsvaqe var reehmg qeak vnqkd assacj oasseqmr szas veqe rtrohchntrkx rhlhkaq aklnrs cznqengqaozed amd h begam sn vnmdeq hf sze odr rxmdhcase veqe mns itrs sqacjhmg seqqnqhrs acshuhsx bts veqe emcntqaghmg hs alnmg gqntor szas szex zad oemesqased hm nqdeq sn bthkd am emcxcknoaedha nf bezauhntqak selokaser szas cntkd be tred sn rons ftstqe assacjr befnqe szex zaooemed sze rxmdhcase zad am aczhkker zeek hs var mns onrrhbke sn cnnqdhmase szehq qereaqcz oqngqalle vhsznts keauhmg szehq nvm dhghsak fnnsoqhms laqshm amd h qefnctred ntq effnqsr nm sqacjhmg szel dnvm amd fntmd akk sze euhdemce ve meeded bts szex veqe sze ewoeqsr mns tr amd ve ltrs zaue sqhggeqed am akaql rnlevzeqe szex gaue tr nme cznhce lx deasz var mnv hmeuhsabke sze nmkx ptershnm var vzeszeq nq mns hs vntkd be fajed nmce h var nffhchakkx dead h vntkd zaue mn oqnsecshnm bts ve veqe uaktabke sn szel amd szas var sze jex sn ntq rtquhuak h meueq jmev sze male nf sze ghqk szex tred sn faje lx rthchde bts szex dhd arrtqe le szas rze zad dhed nf mastqak catrer h znoe szas ltcz var sqte sze rxmdhcase veqe sze qeak ewoeqsr hm erohnmage bts laqshm amd h zad sze edge hm cndhmg szex vasczed tr caqeftkkx bts ve lamaged sn okams a uhqtr hm sze dasabare emghme amd hs vhkk zaue beem sqhggeqed knmg befnqe xnt qead szhr hs hr derhgmed sn hmfecs eueqx cnox nf ntq akgnqhszl amd sn emcqxos cqtchak ekelemsr nf sze cnde qemdeqhmg hs tmtrabke ve keaqmed a kns fqnl rstdxhmg rstwmes amd sze selo bamj vhkk rtffeq sze rale fase ar sze hqamham cemsqhftger mnv sze uhqtr hr qekeared ve cnmuhmced sze rxmdhcase sn ftmd a zacjeq cnkkecshue hm mnqvax amd sn akknv laqshm sn vnqj szeqe tmdeqcnueq ar faq ar szex veqe cnmceqmed ze vhkk be zaquershmg barekhme dasa fnq mnhre fhkseqhmg hm rnchak ledha sqaffhc bts ze vhkk be dhrsqhbtshmg szhr fhke amd sze uhqtr sn ar lamx requeqr ar ze cam vhsznts akeqshmg szel laqshm hr gnnd as szhr ze zar akqeadx zacjed a mtlbeq nf bacj to cnloamx amd aoo requeqr amd tred szel ar a dhrsqhbtshnm leczamhrl ve zaue akrn beem keauhmg a sqahk fnq sze hmsekkhgemce requhcer ve zaue mn qearnm sn bekheue sze gnueqmlemsr aqe cnmmecsed vhsz szhr amd eueqx qearnm sn bekheue szex lax be ntq bers znoe nf rsnoohmg szel aqe ve rafe oqnbabkx mns nq szhr hmrtqamce onkhcx vntkd zaue qelahmed itrs szas ve lhgzs be nm sze qtm szntgz tmabke sn sqhggeq sze dead lam rvhscz szas var jeeohmg szere fhker rafe ve dn mns okam nm ghuhmg to amd ve tqge xnt mns sn'"
+      ]
+     },
+     "execution_count": 32,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "keyword_decipher(f, 'dynamix')"
+   ]
+  },
   {
    "cell_type": "code",
    "execution_count": null,
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.5.2"
+   "version": "3.5.2+"
   }
  },
  "nbformat": 4,