Converted Enigma notebook to Python file, included tests as doctest
[cipher-tools.git] / enigma.ipynb
index 7c9906cbc618ee32b8dd1a5b035545263001dae8..086aa468ce72215d66d3cde54eb25b97f82caf5b 100644 (file)
@@ -14,7 +14,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 733,
+   "execution_count": 1,
    "metadata": {
     "collapsed": true
    },
@@ -40,7 +40,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 734,
+   "execution_count": 2,
    "metadata": {
     "collapsed": true
    },
@@ -72,7 +72,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 735,
+   "execution_count": 3,
    "metadata": {
     "collapsed": false
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 736,
+   "execution_count": 4,
    "metadata": {
     "collapsed": false
    },
        " ('y', 'z')]"
       ]
      },
-     "execution_count": 736,
+     "execution_count": 4,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 737,
+   "execution_count": 5,
    "metadata": {
     "collapsed": false
    },
        "'zyxwcabdefghijklmnopqrstuv'"
       ]
      },
-     "execution_count": 737,
+     "execution_count": 5,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 738,
+   "execution_count": 6,
    "metadata": {
     "collapsed": false,
     "scrolled": true
   },
   {
    "cell_type": "code",
-   "execution_count": 739,
+   "execution_count": 7,
    "metadata": {
     "collapsed": false,
     "scrolled": true
        "  24])"
       ]
      },
-     "execution_count": 739,
+     "execution_count": 7,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 740,
+   "execution_count": 8,
    "metadata": {
     "collapsed": false,
     "scrolled": true
        "  0])"
       ]
      },
-     "execution_count": 740,
+     "execution_count": 8,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 741,
+   "execution_count": 9,
    "metadata": {
     "collapsed": false
    },
        "'zyxwcabdefghijklmnopqrstuv'"
       ]
      },
-     "execution_count": 741,
+     "execution_count": 9,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 742,
+   "execution_count": 10,
    "metadata": {
     "collapsed": false
    },
        "'fgehijklmnopqrstuvwxyzdcba'"
       ]
      },
-     "execution_count": 742,
+     "execution_count": 10,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 743,
+   "execution_count": 11,
    "metadata": {
     "collapsed": true
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 744,
+   "execution_count": 12,
    "metadata": {
     "collapsed": false
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 745,
+   "execution_count": 13,
    "metadata": {
     "collapsed": false
    },
        "'zycdefghijklmnopqrstuvwxba'"
       ]
      },
-     "execution_count": 745,
+     "execution_count": 13,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 746,
+   "execution_count": 14,
    "metadata": {
     "collapsed": false
    },
        "'zycdefghijklmnopqrstuvwxba'"
       ]
      },
-     "execution_count": 746,
+     "execution_count": 14,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 747,
+   "execution_count": 15,
    "metadata": {
     "collapsed": false
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 748,
+   "execution_count": 16,
    "metadata": {
     "collapsed": false
    },
        "('zycdefghijklmnopqrstuvwxba', 'zycdefghijklmnopqrstuvwxba')"
       ]
      },
-     "execution_count": 748,
+     "execution_count": 16,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 749,
+   "execution_count": 17,
    "metadata": {
     "collapsed": false
    },
        "('ugcdypblnzkhmisfrqoxavwtej', 'ugcdypblnzkhmisfrqoxavwtej')"
       ]
      },
-     "execution_count": 749,
+     "execution_count": 17,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 750,
+   "execution_count": 18,
    "metadata": {
     "collapsed": true
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 751,
+   "execution_count": 19,
    "metadata": {
     "collapsed": false
    },
        " ('v', 'w')]"
       ]
      },
-     "execution_count": 751,
+     "execution_count": 19,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 752,
+   "execution_count": 20,
    "metadata": {
     "collapsed": false
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 753,
+   "execution_count": 21,
    "metadata": {
     "collapsed": false
    },
        "'yruhqsldpxngokmiebfzcwvjat'"
       ]
      },
-     "execution_count": 753,
+     "execution_count": 21,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 754,
+   "execution_count": 22,
    "metadata": {
     "collapsed": false
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 755,
+   "execution_count": 23,
    "metadata": {
     "collapsed": false
    },
        "'fvpjiaoyedrzxwgctkuqsbnmhl'"
       ]
      },
-     "execution_count": 755,
+     "execution_count": 23,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 756,
+   "execution_count": 24,
    "metadata": {
     "collapsed": true
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 757,
+   "execution_count": 25,
    "metadata": {
     "collapsed": false,
     "scrolled": true
        " ('z', 'j')]"
       ]
      },
-     "execution_count": 757,
+     "execution_count": 25,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 758,
+   "execution_count": 26,
    "metadata": {
     "collapsed": false
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 759,
+   "execution_count": 27,
    "metadata": {
     "collapsed": false
    },
        "('ekmflgdqvzntowyhxuspaibrcj', 'uwygadfpvzbeckmthxslrinqoj')"
       ]
      },
-     "execution_count": 759,
+     "execution_count": 27,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 760,
+   "execution_count": 28,
    "metadata": {
     "collapsed": false
    },
        "'a'"
       ]
      },
-     "execution_count": 760,
+     "execution_count": 28,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 761,
+   "execution_count": 29,
    "metadata": {
     "collapsed": false
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 762,
+   "execution_count": 30,
    "metadata": {
     "collapsed": false
    },
        "('ajdksiruxblhwtmcqgznpyfvoe', 'ajpczwrlfbdkotyuqgenhxmivs')"
       ]
      },
-     "execution_count": 762,
+     "execution_count": 30,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 763,
+   "execution_count": 31,
    "metadata": {
     "collapsed": false
    },
        "('bdfhjlcprtxvznyeiwgakmusqo', 'tagbpcsdqeufvnzhyixjwlrkom')"
       ]
      },
-     "execution_count": 763,
+     "execution_count": 31,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 764,
+   "execution_count": 32,
    "metadata": {
     "collapsed": false
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 765,
+   "execution_count": 33,
    "metadata": {
     "collapsed": false
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 766,
+   "execution_count": 34,
    "metadata": {
     "collapsed": false
    },
        "(1, [20])"
       ]
      },
-     "execution_count": 766,
+     "execution_count": 34,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 767,
+   "execution_count": 35,
    "metadata": {
     "collapsed": false
    },
        "(25, [24, 11])"
       ]
      },
-     "execution_count": 767,
+     "execution_count": 35,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 768,
+   "execution_count": 36,
    "metadata": {
     "collapsed": false,
     "scrolled": true
   },
   {
    "cell_type": "code",
-   "execution_count": 769,
+   "execution_count": 37,
    "metadata": {
     "collapsed": false
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 770,
+   "execution_count": 38,
    "metadata": {
     "collapsed": false
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 771,
+   "execution_count": 39,
    "metadata": {
     "collapsed": false
    },
        "(0, 'c', [23, 10])"
       ]
      },
-     "execution_count": 771,
+     "execution_count": 39,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 772,
+   "execution_count": 40,
    "metadata": {
     "collapsed": true
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 773,
+   "execution_count": 41,
    "metadata": {
     "collapsed": false
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 774,
+   "execution_count": 42,
    "metadata": {
     "collapsed": false
    },
        "'u'"
       ]
      },
-     "execution_count": 774,
+     "execution_count": 42,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 775,
+   "execution_count": 43,
    "metadata": {
     "collapsed": false
    },
        "'a'"
       ]
      },
-     "execution_count": 775,
+     "execution_count": 43,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 776,
+   "execution_count": 44,
    "metadata": {
     "collapsed": false
    },
        "'uejobtpzwcnsrkdgvmlfaqiyxh'"
       ]
      },
-     "execution_count": 776,
+     "execution_count": 44,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 777,
+   "execution_count": 45,
    "metadata": {
     "collapsed": false,
     "scrolled": true
   },
   {
    "cell_type": "code",
-   "execution_count": 778,
+   "execution_count": 46,
    "metadata": {
     "collapsed": false,
     "scrolled": true
   },
   {
    "cell_type": "code",
-   "execution_count": 779,
+   "execution_count": 47,
    "metadata": {
     "collapsed": false,
     "scrolled": true
   },
   {
    "cell_type": "code",
-   "execution_count": 780,
+   "execution_count": 48,
    "metadata": {
     "collapsed": false
    },
        "'olpfhnvflyn'"
       ]
      },
-     "execution_count": 780,
+     "execution_count": 48,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 781,
+   "execution_count": 49,
    "metadata": {
     "collapsed": false
    },
        "'lawnjgpwjik'"
       ]
      },
-     "execution_count": 781,
+     "execution_count": 49,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 782,
+   "execution_count": 50,
    "metadata": {
     "collapsed": false
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 783,
+   "execution_count": 51,
    "metadata": {
     "collapsed": false
    },
        "'bahxvfrpdc'"
       ]
      },
-     "execution_count": 783,
+     "execution_count": 51,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 784,
+   "execution_count": 52,
    "metadata": {
     "collapsed": false
    },
        "'kvmmwrlqlqsqpeugjrcxzwpfyiyybwloewrouvkpoztceuwtfjzqwpbqldttsr'"
       ]
      },
-     "execution_count": 784,
+     "execution_count": 52,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 785,
+   "execution_count": 53,
    "metadata": {
     "collapsed": false
    },
        "'c'"
       ]
      },
-     "execution_count": 785,
+     "execution_count": 53,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 786,
+   "execution_count": 54,
    "metadata": {
     "collapsed": true
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 787,
+   "execution_count": 55,
    "metadata": {
     "collapsed": true
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 788,
+   "execution_count": 56,
    "metadata": {
     "collapsed": true
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 789,
+   "execution_count": 57,
    "metadata": {
     "collapsed": true
    },
   },
   {
    "cell_type": "code",
-   "execution_count": 790,
+   "execution_count": 58,
    "metadata": {
     "collapsed": false
    },
        " 'urygzpdmxtwshqvfnbljaokice')"
       ]
      },
-     "execution_count": 790,
+     "execution_count": 58,
      "metadata": {},
      "output_type": "execute_result"
     }
   },
   {
    "cell_type": "code",
-   "execution_count": 791,
+   "execution_count": 59,
    "metadata": {
     "collapsed": false
    },