"cells": [
{
"cell_type": "code",
- "execution_count": 797,
+ "execution_count": 1,
"metadata": {
"collapsed": true
},
},
{
"cell_type": "code",
- "execution_count": 798,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "# wheel_i_spec = 'ekmflgdqvzntowyhxuspaibrcj'\n",
- "# wheel_ii_spec = 'ajdksiruxblhwtmcqgznpyfvoe'\n",
- "# wheel_iii_spec = 'bdfhjlcprtxvznyeiwgakmusqo'\n",
- "# wheel_iv_spec = 'esovpzjayquirhxlnftgkdcmwb'\n",
- "# wheel_v_spec = 'vzbrgityupsdnhlxawmjqofeck'\n",
- "# wheel_vi_spec = 'jpgvoumfyqbenhzrdkasxlictw'\n",
- "# wheel_vii_spec = 'nzjhgrcxmyswboufaivlpekqdt'\n",
- "# wheel_viii_spec = 'fkqhtlxocbjspdzramewniuygv'\n",
- "# beta_wheel_spec = 'leyjvcnixwpbqmdrtakzgfuhos'\n",
- "# gamma_wheel_spec = 'fsokanuerhmbtiycwlqpzxvgjd'\n",
- "\n",
- "# wheel_i_pegs = ['q']\n",
- "# wheel_ii_pegs = ['e']\n",
- "# wheel_iii_pegs = ['v']\n",
- "# wheel_iv_pegs = ['j']\n",
- "# wheel_v_pegs = ['z']\n",
- "# wheel_vi_pegs = ['z', 'm']\n",
- "# wheel_vii_pegs = ['z', 'm']\n",
- "# wheel_viii_pegs = ['z', 'm']\n",
- "\n",
- "# reflector_b_spec = 'ay br cu dh eq fs gl ip jx kn mo tz vw'\n",
- "# reflector_c_spec = 'af bv cp dj ei go hy kr lz mx nw tq su'"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 799,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "class Bank(object):\n",
- " def __init__(self):\n",
- " self.signals = dict(zip(string.ascii_lowercase, [False]*len(string.ascii_lowercase)))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 800,
- "metadata": {
- "collapsed": false
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "{'a': False,\n",
- " 'b': False,\n",
- " 'c': False,\n",
- " 'd': False,\n",
- " 'e': False,\n",
- " 'f': False,\n",
- " 'g': False,\n",
- " 'h': False,\n",
- " 'i': False,\n",
- " 'j': False,\n",
- " 'k': False,\n",
- " 'l': False,\n",
- " 'm': False,\n",
- " 'n': False,\n",
- " 'o': False,\n",
- " 'p': False,\n",
- " 'q': False,\n",
- " 'r': False,\n",
- " 's': False,\n",
- " 't': False,\n",
- " 'u': False,\n",
- " 'v': False,\n",
- " 'w': False,\n",
- " 'x': False,\n",
- " 'y': False,\n",
- " 'z': False}"
- ]
- },
- "execution_count": 800,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "c1 = Bank()\n",
- "c1.signals"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 801,
+ "execution_count": 2,
"metadata": {
"collapsed": true
},
},
{
"cell_type": "code",
- "execution_count": 802,
+ "execution_count": 3,
"metadata": {
"collapsed": true
},
},
{
"cell_type": "code",
- "execution_count": 803,
+ "execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"class Bombe(object):\n",
+ " \n",
" def __init__(self, wheel1_spec, wheel2_spec, wheel3_spec, reflector_spec,\n",
- " menu=None, start_signal=None, use_diagonal_board=True, verify_plugboard=True):\n",
+ " menu=None, start_signal=None, use_diagonal_board=True, \n",
+ " verify_plugboard=True):\n",
" self.connections = []\n",
" self.wheel1_spec = wheel1_spec\n",
" self.wheel2_spec = wheel2_spec\n",
" return object.__getattribute__(self, name)\n",
" \n",
" def __call__(self, start_positions):\n",
- " return start_positions, self.test(start_positions=start_positions, \n",
- " use_diagonal_board=self.use_diagonal_board,\n",
- " verify_plugboard=self.verify_plugboard)\n",
+ " return start_positions, self.test(initial_signal=self.test_start,\n",
+ " start_positions=start_positions, \n",
+ " use_diagonal_board=self.use_diagonal_board,\n",
+ " verify_plugboard=self.verify_plugboard)\n",
" \n",
" def add_connection(self, bank_before, bank_after, scrambler):\n",
" self.connections += [Connection([bank_before, bank_after], scrambler)]\n",
" possibles = possibles.union({frozenset((b, active[0]))})\n",
" if len(inactive) == 1:\n",
" possibles = possibles.union({frozenset((b, inactive[0]))})\n",
- " return possibles"
+ " return possibles\n"
]
},
{
"cell_type": "code",
- "execution_count": 804,
+ "execution_count": 5,
"metadata": {
"collapsed": false
},
},
{
"cell_type": "code",
- "execution_count": 805,
+ "execution_count": 6,
"metadata": {
"collapsed": true
},
},
{
"cell_type": "code",
- "execution_count": 806,
+ "execution_count": 7,
"metadata": {
"collapsed": false
},
"'opgndxcrwomnlnecjz'"
]
},
- "execution_count": 806,
+ "execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 807,
+ "execution_count": 8,
"metadata": {
"collapsed": false
},
"'aas'"
]
},
- "execution_count": 807,
+ "execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 808,
+ "execution_count": 9,
"metadata": {
"collapsed": false
},
" MenuIem(before='e', after='z', number=18)]"
]
},
- "execution_count": 808,
+ "execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 809,
+ "execution_count": 10,
"metadata": {
"collapsed": true
},
},
{
"cell_type": "code",
- "execution_count": 810,
+ "execution_count": 11,
"metadata": {
"collapsed": false
},
" MenuIem(before='e', after='z', number=18)]"
]
},
- "execution_count": 810,
+ "execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 811,
+ "execution_count": 12,
"metadata": {
"collapsed": false
},
"'s'"
]
},
- "execution_count": 811,
+ "execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 812,
+ "execution_count": 13,
"metadata": {
"collapsed": false
},
},
{
"cell_type": "code",
- "execution_count": 813,
+ "execution_count": 14,
"metadata": {
"collapsed": false
},
"18"
]
},
- "execution_count": 813,
+ "execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 814,
+ "execution_count": 15,
"metadata": {
"collapsed": false
},
},
{
"cell_type": "code",
- "execution_count": 815,
+ "execution_count": 16,
"metadata": {
"collapsed": false
},
"False"
]
},
- "execution_count": 815,
+ "execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 816,
+ "execution_count": 17,
"metadata": {
"collapsed": false
},
" 'z': True}"
]
},
- "execution_count": 816,
+ "execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 817,
+ "execution_count": 18,
"metadata": {
"collapsed": false
},
},
{
"cell_type": "code",
- "execution_count": 818,
+ "execution_count": 19,
"metadata": {
"collapsed": false
},
"('a', 'a', 'a')"
]
},
- "execution_count": 818,
+ "execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 819,
+ "execution_count": 20,
"metadata": {
"collapsed": false
},
},
{
"cell_type": "code",
- "execution_count": 820,
+ "execution_count": 21,
"metadata": {
"collapsed": false
},
},
{
"cell_type": "code",
- "execution_count": 821,
+ "execution_count": 22,
"metadata": {
"collapsed": false
},
},
{
"cell_type": "code",
- "execution_count": 822,
+ "execution_count": 23,
"metadata": {
"collapsed": false
},
},
{
"cell_type": "code",
- "execution_count": 823,
+ "execution_count": 24,
"metadata": {
"collapsed": false
},
"1"
]
},
- "execution_count": 823,
+ "execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 824,
+ "execution_count": 25,
"metadata": {
"collapsed": false
},
},
{
"cell_type": "code",
- "execution_count": 825,
+ "execution_count": 26,
"metadata": {
"collapsed": false
},
},
{
"cell_type": "code",
- "execution_count": 826,
+ "execution_count": 27,
"metadata": {
"collapsed": false
},
"('a', 'a', 'b')"
]
},
- "execution_count": 826,
+ "execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 827,
+ "execution_count": 28,
"metadata": {
"collapsed": false
},
"False"
]
},
- "execution_count": 827,
+ "execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 828,
+ "execution_count": 29,
"metadata": {
"collapsed": false
},
"('p', 'p', 'p')"
]
},
- "execution_count": 828,
+ "execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 829,
+ "execution_count": 30,
"metadata": {
"collapsed": false
},
},
{
"cell_type": "code",
- "execution_count": 830,
+ "execution_count": 31,
"metadata": {
"collapsed": false
},
"17576"
]
},
- "execution_count": 830,
+ "execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 831,
+ "execution_count": 32,
"metadata": {
"collapsed": false
},
"(('a', 'a', 'b'), True)"
]
},
- "execution_count": 831,
+ "execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 832,
+ "execution_count": 33,
"metadata": {
"collapsed": false
},
},
{
"cell_type": "code",
- "execution_count": 833,
+ "execution_count": 34,
"metadata": {
"collapsed": false
},
"[('a', 'a', 'b')]"
]
},
- "execution_count": 833,
+ "execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 857,
+ "execution_count": 35,
"metadata": {
"collapsed": true
},
},
{
"cell_type": "code",
- "execution_count": 835,
+ "execution_count": 36,
"metadata": {
"collapsed": false
},
"[('a', 'a', 'b')]"
]
},
- "execution_count": 835,
+ "execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 836,
+ "execution_count": 37,
"metadata": {
"collapsed": false
},
},
{
"cell_type": "code",
- "execution_count": 837,
+ "execution_count": 38,
"metadata": {
"collapsed": false
},
"('e', 'l', 'e')"
]
},
- "execution_count": 837,
+ "execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 838,
+ "execution_count": 39,
"metadata": {
"collapsed": false
},
"'dhnpforeeimgg'"
]
},
- "execution_count": 838,
+ "execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 839,
+ "execution_count": 40,
"metadata": {
"collapsed": false
},
"('j', 'e', 'o')"
]
},
- "execution_count": 839,
+ "execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 840,
+ "execution_count": 41,
"metadata": {
"collapsed": false
},
" MenuIem(before='t', after='g', number=13)]"
]
},
- "execution_count": 840,
+ "execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 841,
+ "execution_count": 42,
"metadata": {
"collapsed": false,
"scrolled": true
" ('z', 'z', 'k')]"
]
},
- "execution_count": 841,
+ "execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 842,
+ "execution_count": 43,
"metadata": {
"collapsed": false
},
"62"
]
},
- "execution_count": 842,
+ "execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 843,
+ "execution_count": 44,
"metadata": {
"collapsed": false,
"scrolled": true
" ('y', 'n', 'c')]"
]
},
- "execution_count": 843,
+ "execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 858,
+ "execution_count": 45,
"metadata": {
"collapsed": false
},
" ('y', 'n', 'c')]"
]
},
- "execution_count": 858,
+ "execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 844,
+ "execution_count": 46,
"metadata": {
"collapsed": false
},
},
{
"cell_type": "code",
- "execution_count": 845,
+ "execution_count": 47,
"metadata": {
"collapsed": false
},
"13"
]
},
- "execution_count": 845,
+ "execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 846,
+ "execution_count": 48,
"metadata": {
"collapsed": false
},
},
{
"cell_type": "code",
- "execution_count": 847,
+ "execution_count": 49,
"metadata": {
"collapsed": false
},
"Signal(bank='e', wire='e')"
]
},
- "execution_count": 847,
+ "execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 848,
+ "execution_count": 50,
"metadata": {
"collapsed": false
},
"True"
]
},
- "execution_count": 848,
+ "execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 849,
+ "execution_count": 51,
"metadata": {
"collapsed": false
},
"True"
]
},
- "execution_count": 849,
+ "execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 850,
+ "execution_count": 52,
"metadata": {
"collapsed": false
},
},
{
"cell_type": "code",
- "execution_count": 851,
+ "execution_count": 53,
"metadata": {
"collapsed": false
},
},
{
"cell_type": "code",
- "execution_count": 852,
+ "execution_count": 54,
"metadata": {
"collapsed": false
},
{
"data": {
"text/plain": [
- "{frozenset({'e', 'y'}),\n",
- " frozenset({'t', 'x'}),\n",
+ "{frozenset({'m'}),\n",
" frozenset({'i', 'n'}),\n",
- " frozenset({'m'}),\n",
- " frozenset({'b', 'g'}),\n",
- " frozenset({'f', 'p'})}"
+ " frozenset({'f', 'p'}),\n",
+ " frozenset({'t', 'x'}),\n",
+ " frozenset({'e', 'y'}),\n",
+ " frozenset({'b', 'g'})}"
]
},
- "execution_count": 852,
+ "execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 853,
+ "execution_count": 55,
"metadata": {
"collapsed": false
},
"True"
]
},
- "execution_count": 853,
+ "execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 854,
+ "execution_count": 56,
"metadata": {
"collapsed": false
},
{
"data": {
"text/plain": [
- "({frozenset({1, 2}), frozenset({2, 3}), frozenset({3, 4})},\n",
+ "({frozenset({1, 2}), frozenset({3, 4}), frozenset({2, 3})},\n",
" frozenset({1, 2}),\n",
" frozenset({3, 4}),\n",
" frozenset({2, 3}))"
]
},
- "execution_count": 854,
+ "execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 855,
+ "execution_count": 57,
"metadata": {
"collapsed": false
},
"False"
]
},
- "execution_count": 855,
+ "execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 856,
+ "execution_count": 58,
"metadata": {
"collapsed": false
},
"False"
]
},
- "execution_count": 856,
+ "execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.5.1+"
+ "version": "3.4.3+"
}
},
"nbformat": 4,