{ "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 }