X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=bombe.ipynb;h=93e0ccbfcd5ac4996251c5eb08db7e6deadd969b;hb=e138c645bb02427a76798b1ea7f4c5ad579f204f;hp=ab1b457c441d51cb55d4e6a5d2385a37379fc6c2;hpb=628c83045960e5d94ea55fe90437b465a860d4c7;p=cipher-tools.git diff --git a/bombe.ipynb b/bombe.ipynb index ab1b457..93e0ccb 100644 --- a/bombe.ipynb +++ b/bombe.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 797, + "execution_count": 1, "metadata": { "collapsed": true }, @@ -17,100 +17,7 @@ }, { "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 }, @@ -123,7 +30,7 @@ }, { "cell_type": "code", - "execution_count": 802, + "execution_count": 3, "metadata": { "collapsed": true }, @@ -168,15 +75,17 @@ }, { "cell_type": "code", - "execution_count": 803, + "execution_count": 31, "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", @@ -198,14 +107,16 @@ " 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", " \n", " def read_menu(self, menu):\n", + " self.connections = []\n", " for item in menu:\n", " scrambler = Scrambler(self.wheel1_spec, self.wheel2_spec, self.wheel3_spec,\n", " self.reflector_spec,\n", @@ -284,12 +195,12 @@ " 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": 32, "metadata": { "collapsed": false }, @@ -301,7 +212,7 @@ }, { "cell_type": "code", - "execution_count": 805, + "execution_count": 33, "metadata": { "collapsed": true }, @@ -317,7 +228,7 @@ }, { "cell_type": "code", - "execution_count": 806, + "execution_count": 34, "metadata": { "collapsed": false }, @@ -328,7 +239,7 @@ "'opgndxcrwomnlnecjz'" ] }, - "execution_count": 806, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -342,7 +253,7 @@ }, { "cell_type": "code", - "execution_count": 807, + "execution_count": 35, "metadata": { "collapsed": false }, @@ -353,7 +264,7 @@ "'aas'" ] }, - "execution_count": 807, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -364,7 +275,7 @@ }, { "cell_type": "code", - "execution_count": 808, + "execution_count": 36, "metadata": { "collapsed": false }, @@ -392,7 +303,7 @@ " MenuIem(before='e', after='z', number=18)]" ] }, - "execution_count": 808, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -404,7 +315,7 @@ }, { "cell_type": "code", - "execution_count": 809, + "execution_count": 37, "metadata": { "collapsed": true }, @@ -417,7 +328,7 @@ }, { "cell_type": "code", - "execution_count": 810, + "execution_count": 38, "metadata": { "collapsed": false }, @@ -445,7 +356,7 @@ " MenuIem(before='e', after='z', number=18)]" ] }, - "execution_count": 810, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -456,7 +367,7 @@ }, { "cell_type": "code", - "execution_count": 811, + "execution_count": 39, "metadata": { "collapsed": false }, @@ -467,7 +378,7 @@ "'s'" ] }, - "execution_count": 811, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -478,7 +389,7 @@ }, { "cell_type": "code", - "execution_count": 812, + "execution_count": 42, "metadata": { "collapsed": false }, @@ -489,7 +400,7 @@ }, { "cell_type": "code", - "execution_count": 813, + "execution_count": 43, "metadata": { "collapsed": false }, @@ -500,7 +411,7 @@ "18" ] }, - "execution_count": 813, + "execution_count": 43, "metadata": {}, "output_type": "execute_result" } @@ -511,7 +422,7 @@ }, { "cell_type": "code", - "execution_count": 814, + "execution_count": 27, "metadata": { "collapsed": false }, @@ -520,6 +431,24 @@ "name": "stdout", "output_type": "stream", "text": [ + "['t', 'o'] aaa\n", + "['h', 'p'] aab\n", + "['i', 'g'] aac\n", + "['s', 'n'] aad\n", + "['i', 'd'] aae\n", + "['s', 'x'] aaf\n", + "['a', 'c'] aag\n", + "['t', 'r'] aah\n", + "['e', 'w'] aai\n", + "['s', 'o'] aaj\n", + "['t', 'm'] aak\n", + "['m', 'n'] aal\n", + "['e', 'l'] aam\n", + "['s', 'n'] aan\n", + "['s', 'e'] aao\n", + "['a', 'c'] aap\n", + "['g', 'j'] aaq\n", + "['e', 'z'] aar\n", "['t', 'o'] aaa\n", "['h', 'p'] aab\n", "['i', 'g'] aac\n", @@ -548,7 +477,7 @@ }, { "cell_type": "code", - "execution_count": 815, + "execution_count": 44, "metadata": { "collapsed": false }, @@ -556,10 +485,54 @@ { "data": { "text/plain": [ - "False" + "'ot:hp:gi:ns:di:sx:ac:rt:ew:os:mt:mn:el:ns:es:ac:gj:ez'" ] }, - "execution_count": 815, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "':'.join(cat(sorted(c.banks)) for c in bombe.connections)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'aaa:aab:aac:aad:aae:aaf:aag:aah:aai:aaj:aak:aal:aam:aan:aao:aap:aaq:aar'" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "':'.join(cat(c.scrambler.wheel_positions_l) for c in bombe.connections)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 56, "metadata": {}, "output_type": "execute_result" } @@ -570,7 +543,7 @@ }, { "cell_type": "code", - "execution_count": 816, + "execution_count": 57, "metadata": { "collapsed": false }, @@ -578,35 +551,35 @@ { "data": { "text/plain": [ - "{'a': True,\n", - " 'b': True,\n", - " 'c': True,\n", - " 'd': True,\n", - " 'e': True,\n", - " 'f': True,\n", - " 'g': True,\n", - " 'h': True,\n", - " 'i': True,\n", - " 'j': True,\n", - " 'k': True,\n", - " 'l': True,\n", - " 'm': True,\n", - " 'n': True,\n", - " 'o': True,\n", - " 'p': True,\n", - " 'q': True,\n", - " 'r': True,\n", - " 's': True,\n", + "{'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': True,\n", - " 'u': True,\n", - " 'v': True,\n", - " 'w': True,\n", - " 'x': True,\n", - " 'y': True,\n", - " 'z': True}" + " 'u': False,\n", + " 'v': False,\n", + " 'w': False,\n", + " 'x': False,\n", + " 'y': False,\n", + " 'z': False}" ] }, - "execution_count": 816, + "execution_count": 57, "metadata": {}, "output_type": "execute_result" } @@ -617,7 +590,7 @@ }, { "cell_type": "code", - "execution_count": 817, + "execution_count": 48, "metadata": { "collapsed": false }, @@ -668,7 +641,58 @@ }, { "cell_type": "code", - "execution_count": 818, + "execution_count": 49, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a : abcdefghijklmnopqrstuvwxyz\n", + "b : a.cde.ghij.lmnop.rst..wx.z\n", + "c : abcdefghijklmnopqrstuvwxyz\n", + "d : abcdefghijklmnopqrstuvwx.z\n", + "e : abcdefghijklmnopqrstuvwxyz\n", + "f : a.cde.ghij.lmnop.rst..wx.z\n", + "g : abcdefghijklmnopqrst.vwxyz\n", + "h : abcdefghijklmnopqrstuvwxyz\n", + "i : abcdefghijklmnopqrstu.wxyz\n", + "j : abcdefghi.klmnopqrstuvwxyz\n", + "k : a.cde.ghij.lmnop.rst..wx.z\n", + "l : abcdefghijklmnopqrstuvwxyz\n", + "m : abcdefghijklmnopqrstuvwxyz\n", + "n : abcdefghijklmnopqrstuvwxyz\n", + "o : abcdefghijklmnopqrstuvwxyz\n", + "p : abcdefghijklmnopqrstuvwxyz\n", + "q : a.cde.ghij.lmnop.rst..wx.z\n", + "r : abcdefghijklmnopqrstuvwxyz\n", + "s : abcdefghijklmnopqrstuvwxyz\n", + "t : abcdefghijklmnopqrstuvwxyz\n", + "u : a.cde..hij.lmnop.rst..wx.z\n", + "v : a.cde.gh.j.lmnop.rst..wx.z\n", + "w : abcdefghijklmnopqrstuvwxyz\n", + "x : abcdefghijklmnopqrstuvwxyz\n", + "y : a.c.e.ghij.lmnop.rst..wx.z\n", + "z : abcdefghijklmnopqrstuvwxyz\n" + ] + } + ], + "source": [ + "for b in sorted(bombe.banks):\n", + " print(b, ': ', end='')\n", + " for w in sorted(bombe.banks[b]):\n", + " if bombe.banks[b][w]:\n", + " print(w, end='')\n", + " else:\n", + " print('.', end='')\n", + " print('')" + ] + }, + { + "cell_type": "code", + "execution_count": 50, "metadata": { "collapsed": false }, @@ -679,7 +703,7 @@ "('a', 'a', 'a')" ] }, - "execution_count": 818, + "execution_count": 50, "metadata": {}, "output_type": "execute_result" } @@ -690,7 +714,7 @@ }, { "cell_type": "code", - "execution_count": 819, + "execution_count": 51, "metadata": { "collapsed": false }, @@ -728,7 +752,7 @@ }, { "cell_type": "code", - "execution_count": 820, + "execution_count": 52, "metadata": { "collapsed": false }, @@ -740,7 +764,7 @@ }, { "cell_type": "code", - "execution_count": 821, + "execution_count": 53, "metadata": { "collapsed": false }, @@ -794,7 +818,7 @@ }, { "cell_type": "code", - "execution_count": 822, + "execution_count": 54, "metadata": { "collapsed": false }, @@ -848,7 +872,7 @@ }, { "cell_type": "code", - "execution_count": 823, + "execution_count": 55, "metadata": { "collapsed": false }, @@ -859,7 +883,7 @@ "1" ] }, - "execution_count": 823, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -870,7 +894,7 @@ }, { "cell_type": "code", - "execution_count": 824, + "execution_count": 25, "metadata": { "collapsed": false }, @@ -883,7 +907,7 @@ }, { "cell_type": "code", - "execution_count": 825, + "execution_count": 26, "metadata": { "collapsed": false }, @@ -896,7 +920,7 @@ }, { "cell_type": "code", - "execution_count": 826, + "execution_count": 27, "metadata": { "collapsed": false }, @@ -907,7 +931,7 @@ "('a', 'a', 'b')" ] }, - "execution_count": 826, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -918,7 +942,7 @@ }, { "cell_type": "code", - "execution_count": 827, + "execution_count": 28, "metadata": { "collapsed": false }, @@ -929,7 +953,7 @@ "False" ] }, - "execution_count": 827, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -940,7 +964,7 @@ }, { "cell_type": "code", - "execution_count": 828, + "execution_count": 29, "metadata": { "collapsed": false }, @@ -951,7 +975,7 @@ "('p', 'p', 'p')" ] }, - "execution_count": 828, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -962,7 +986,7 @@ }, { "cell_type": "code", - "execution_count": 829, + "execution_count": 30, "metadata": { "collapsed": false }, @@ -1013,7 +1037,7 @@ }, { "cell_type": "code", - "execution_count": 830, + "execution_count": 31, "metadata": { "collapsed": false }, @@ -1024,7 +1048,7 @@ "17576" ] }, - "execution_count": 830, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -1036,7 +1060,7 @@ }, { "cell_type": "code", - "execution_count": 831, + "execution_count": 32, "metadata": { "collapsed": false }, @@ -1047,7 +1071,7 @@ "(('a', 'a', 'b'), True)" ] }, - "execution_count": 831, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -1059,7 +1083,7 @@ }, { "cell_type": "code", - "execution_count": 832, + "execution_count": 33, "metadata": { "collapsed": false }, @@ -1070,7 +1094,7 @@ }, { "cell_type": "code", - "execution_count": 833, + "execution_count": 34, "metadata": { "collapsed": false }, @@ -1081,7 +1105,7 @@ "[('a', 'a', 'b')]" ] }, - "execution_count": 833, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -1097,7 +1121,7 @@ }, { "cell_type": "code", - "execution_count": 857, + "execution_count": 35, "metadata": { "collapsed": true }, @@ -1119,7 +1143,7 @@ }, { "cell_type": "code", - "execution_count": 835, + "execution_count": 36, "metadata": { "collapsed": false }, @@ -1130,7 +1154,7 @@ "[('a', 'a', 'b')]" ] }, - "execution_count": 835, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -1141,7 +1165,7 @@ }, { "cell_type": "code", - "execution_count": 836, + "execution_count": 58, "metadata": { "collapsed": false }, @@ -1160,7 +1184,7 @@ }, { "cell_type": "code", - "execution_count": 837, + "execution_count": 59, "metadata": { "collapsed": false }, @@ -1171,7 +1195,7 @@ "('e', 'l', 'e')" ] }, - "execution_count": 837, + "execution_count": 59, "metadata": {}, "output_type": "execute_result" } @@ -1183,7 +1207,7 @@ }, { "cell_type": "code", - "execution_count": 838, + "execution_count": 39, "metadata": { "collapsed": false }, @@ -1194,7 +1218,7 @@ "'dhnpforeeimgg'" ] }, - "execution_count": 838, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -1208,7 +1232,7 @@ }, { "cell_type": "code", - "execution_count": 839, + "execution_count": 40, "metadata": { "collapsed": false }, @@ -1219,7 +1243,7 @@ "('j', 'e', 'o')" ] }, - "execution_count": 839, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -1230,7 +1254,7 @@ }, { "cell_type": "code", - "execution_count": 840, + "execution_count": 41, "metadata": { "collapsed": false }, @@ -1253,7 +1277,7 @@ " MenuIem(before='t', after='g', number=13)]" ] }, - "execution_count": 840, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -1265,7 +1289,7 @@ }, { "cell_type": "code", - "execution_count": 841, + "execution_count": 42, "metadata": { "collapsed": false, "scrolled": true @@ -1338,7 +1362,7 @@ " ('z', 'z', 'k')]" ] }, - "execution_count": 841, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -1355,7 +1379,7 @@ }, { "cell_type": "code", - "execution_count": 842, + "execution_count": 43, "metadata": { "collapsed": false }, @@ -1366,7 +1390,7 @@ "62" ] }, - "execution_count": 842, + "execution_count": 43, "metadata": {}, "output_type": "execute_result" } @@ -1377,7 +1401,7 @@ }, { "cell_type": "code", - "execution_count": 843, + "execution_count": 44, "metadata": { "collapsed": false, "scrolled": true @@ -1401,7 +1425,7 @@ " ('y', 'n', 'c')]" ] }, - "execution_count": 843, + "execution_count": 44, "metadata": {}, "output_type": "execute_result" } @@ -1418,7 +1442,7 @@ }, { "cell_type": "code", - "execution_count": 858, + "execution_count": 45, "metadata": { "collapsed": false }, @@ -1441,7 +1465,7 @@ " ('y', 'n', 'c')]" ] }, - "execution_count": 858, + "execution_count": 45, "metadata": {}, "output_type": "execute_result" } @@ -1452,7 +1476,7 @@ }, { "cell_type": "code", - "execution_count": 844, + "execution_count": 46, "metadata": { "collapsed": false }, @@ -1469,7 +1493,7 @@ }, { "cell_type": "code", - "execution_count": 845, + "execution_count": 47, "metadata": { "collapsed": false }, @@ -1480,7 +1504,7 @@ "13" ] }, - "execution_count": 845, + "execution_count": 47, "metadata": {}, "output_type": "execute_result" } @@ -1491,7 +1515,7 @@ }, { "cell_type": "code", - "execution_count": 846, + "execution_count": 48, "metadata": { "collapsed": false }, @@ -1503,7 +1527,7 @@ }, { "cell_type": "code", - "execution_count": 847, + "execution_count": 49, "metadata": { "collapsed": false }, @@ -1514,7 +1538,7 @@ "Signal(bank='e', wire='e')" ] }, - "execution_count": 847, + "execution_count": 49, "metadata": {}, "output_type": "execute_result" } @@ -1525,7 +1549,7 @@ }, { "cell_type": "code", - "execution_count": 848, + "execution_count": 50, "metadata": { "collapsed": false }, @@ -1536,7 +1560,7 @@ "True" ] }, - "execution_count": 848, + "execution_count": 50, "metadata": {}, "output_type": "execute_result" } @@ -1547,7 +1571,7 @@ }, { "cell_type": "code", - "execution_count": 849, + "execution_count": 51, "metadata": { "collapsed": false }, @@ -1558,7 +1582,7 @@ "True" ] }, - "execution_count": 849, + "execution_count": 51, "metadata": {}, "output_type": "execute_result" } @@ -1569,7 +1593,7 @@ }, { "cell_type": "code", - "execution_count": 850, + "execution_count": 52, "metadata": { "collapsed": false }, @@ -1623,7 +1647,7 @@ }, { "cell_type": "code", - "execution_count": 851, + "execution_count": 53, "metadata": { "collapsed": false }, @@ -1677,7 +1701,7 @@ }, { "cell_type": "code", - "execution_count": 852, + "execution_count": 54, "metadata": { "collapsed": false }, @@ -1685,15 +1709,15 @@ { "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" } @@ -1705,7 +1729,7 @@ }, { "cell_type": "code", - "execution_count": 853, + "execution_count": 55, "metadata": { "collapsed": false }, @@ -1716,7 +1740,7 @@ "True" ] }, - "execution_count": 853, + "execution_count": 55, "metadata": {}, "output_type": "execute_result" } @@ -1727,7 +1751,7 @@ }, { "cell_type": "code", - "execution_count": 854, + "execution_count": 56, "metadata": { "collapsed": false }, @@ -1735,13 +1759,13 @@ { "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" } @@ -1760,7 +1784,7 @@ }, { "cell_type": "code", - "execution_count": 855, + "execution_count": 57, "metadata": { "collapsed": false }, @@ -1771,7 +1795,7 @@ "False" ] }, - "execution_count": 855, + "execution_count": 57, "metadata": {}, "output_type": "execute_result" } @@ -1782,7 +1806,7 @@ }, { "cell_type": "code", - "execution_count": 856, + "execution_count": 58, "metadata": { "collapsed": false }, @@ -1793,7 +1817,7 @@ "False" ] }, - "execution_count": 856, + "execution_count": 58, "metadata": {}, "output_type": "execute_result" }