--- /dev/null
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "from enigma import *"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "e31 = Enigma(reflector_b_spec, \n",
+ " wheel_i_spec, wheel_i_pegs,\n",
+ " wheel_v_spec, wheel_v_pegs,\n",
+ " wheel_iii_spec, wheel_iii_pegs,\n",
+ " 6, 20, 24, \n",
+ " 'ua pf rq so ni ey bg hl tx zj')\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "def advance(e, n):\n",
+ " def print_state(e):\n",
+ " print(' self.assertEqual(self.enigma31.wheel_positions, {})'.format(e.wheel_positions))\n",
+ " print(\" self.assertEqual(cat(self.enigma31.wheel_positions_l), '{}')\".format(cat(e.wheel_positions_l)))\n",
+ " print(' self.assertEqual(self.enigma31.peg_positions, {})'.format(e.peg_positions))\n",
+ " print()\n",
+ " \n",
+ " \n",
+ " \n",
+ " print_state(e)\n",
+ " for i in range(n):\n",
+ " print(' self.engima31.advance()')\n",
+ " e.advance()\n",
+ " print_state(e)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " self.assertEqual(self.enigma31.wheel_positions, (21, 5, 22))\n",
+ " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'ayt')\n",
+ " self.assertEqual(self.enigma31.peg_positions, ([16], [1], [2]))\n",
+ "\n",
+ " self.engima31.advance()\n",
+ " self.assertEqual(self.enigma31.wheel_positions, (21, 5, 23))\n",
+ " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'ayu')\n",
+ " self.assertEqual(self.enigma31.peg_positions, ([16], [1], [1]))\n",
+ "\n",
+ " self.engima31.advance()\n",
+ " self.assertEqual(self.enigma31.wheel_positions, (21, 5, 24))\n",
+ " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'ayv')\n",
+ " self.assertEqual(self.enigma31.peg_positions, ([16], [1], [0]))\n",
+ "\n",
+ " self.engima31.advance()\n",
+ " self.assertEqual(self.enigma31.wheel_positions, (21, 6, 25))\n",
+ " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'azw')\n",
+ " self.assertEqual(self.enigma31.peg_positions, ([16], [0], [25]))\n",
+ "\n",
+ " self.engima31.advance()\n",
+ " self.assertEqual(self.enigma31.wheel_positions, (22, 7, 0))\n",
+ " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'bax')\n",
+ " self.assertEqual(self.enigma31.peg_positions, ([15], [25], [24]))\n",
+ "\n",
+ " self.engima31.advance()\n",
+ " self.assertEqual(self.enigma31.wheel_positions, (22, 7, 1))\n",
+ " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'bay')\n",
+ " self.assertEqual(self.enigma31.peg_positions, ([15], [25], [23]))\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "e31.set_wheels('a', 'y', 't')\n",
+ "advance(e31, 5)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "collapsed": false
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " self.assertEqual(self.enigma31.wheel_positions, (21, 6, 21))\n",
+ " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'azs')\n",
+ " self.assertEqual(self.enigma31.peg_positions, ([16], [0], [3]))\n",
+ "\n",
+ " self.engima31.advance()\n",
+ " self.assertEqual(self.enigma31.wheel_positions, (22, 7, 22))\n",
+ " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'bat')\n",
+ " self.assertEqual(self.enigma31.peg_positions, ([15], [25], [2]))\n",
+ "\n",
+ " self.engima31.advance()\n",
+ " self.assertEqual(self.enigma31.wheel_positions, (22, 7, 23))\n",
+ " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'bau')\n",
+ " self.assertEqual(self.enigma31.peg_positions, ([15], [25], [1]))\n",
+ "\n",
+ " self.engima31.advance()\n",
+ " self.assertEqual(self.enigma31.wheel_positions, (22, 7, 24))\n",
+ " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'bav')\n",
+ " self.assertEqual(self.enigma31.peg_positions, ([15], [25], [0]))\n",
+ "\n",
+ " self.engima31.advance()\n",
+ " self.assertEqual(self.enigma31.wheel_positions, (22, 8, 25))\n",
+ " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'bbw')\n",
+ " self.assertEqual(self.enigma31.peg_positions, ([15], [24], [25]))\n",
+ "\n",
+ " self.engima31.advance()\n",
+ " self.assertEqual(self.enigma31.wheel_positions, (22, 8, 0))\n",
+ " self.assertEqual(cat(self.enigma31.wheel_positions_l), 'bbx')\n",
+ " self.assertEqual(self.enigma31.peg_positions, ([15], [24], [24]))\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "e31.set_wheels('a', 'z', 's')\n",
+ "advance(e31, 5)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.5.1+"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}