Beispiel #1
0
 def test_ops(self):
     a = set([1, 2, 4])
     b = set([1, 5, 6])
     A = IntSet(a)
     B = IntSet(b)
     C = IntSet([2, 4])
     self.assertEqual(tuple(sorted(a | b)), tuple(sorted(A | B)))
     self.assertEqual(tuple(sorted(a & b)), tuple(sorted(A & B)))
     self.assertEqual(tuple(sorted(a - b)), tuple(sorted(A - B)))
     self.assertEqual(tuple(sorted(a ^ b)), tuple(sorted(A ^ B)))
     self.assertTrue(C < A)
     self.assertTrue(C <= A)
     self.assertTrue(A > C)
     self.assertTrue(A | B == B | A)
     self.assertTrue(C.isdisjoint(B))
     self.assertFalse(A | B != B | A)
 def __init__(self, V: "Iterable<T>"=[], E: "Iterable<(T,T)>"=[], directed: "bool"=True):
     capacity = max(V)+1
     super().__init__(V, E, directed,
           createMap=lambda V: IntKeyMap(capacity=capacity),
           createSet=lambda V: IntSet(capacity=capacity),
           redimMap=lambda map, v: map.set_capacity(v+1),
           redimSet=lambda set, v: set.set_capacity(v+1))
 def setUp(self):
     self.edges = [(0,1), (1,2), (2,3), (3,4), (4,5),(5,0), (0,3), (3,0), (0,2), (0,4), (0,7)]
     self.g = AdjacencyDigraph(V=range(8), E=self.edges, directed=True, 
                             createMap=lambda V: IntKeyMap(capacity=max(V)+1), 
                             createSet=lambda V: IntSet(capacity=max(V)+1),
                             redimMap=lambda map, maxkey: map.set_capacity(max(map.capacity, maxkey+1)),
                             redimSet=lambda set, maxkey: set.set_capacity(max(set.capacity, maxkey+1)))
 def test_topsort(self):
     G = Digraph(E=[(0,1), (1,2), (2,3), (3,4), (4,5)])
     topsorter = Topsorter()
     self.assertEqual(tuple(topsorter.topsorted(G)), tuple(range(6)))
     int_topsorter = Topsorter(createDepthFirstTraverser=
                               lambda G: DepthFirstTraverser(createSet=lambda V: IntSet(capacity=max(V)+1)))
     self.assertEqual(tuple(int_topsorter.topsorted(G)), tuple(range(6)))
     G = Digraph(E={'C': ['C++', 'Objective C', 'Java', 'C#'],
                    'C++': ['C#', 'Java'],
                    'Java': ['C#']})
     ts = tuple(topsorter.topsorted(G))
     for (u,v) in G.E:
         self.assertTrue(ts.index(u) < ts.index(v))
 def setUp(self):
     self.edges = [(0,1), (1,2), (2,3), (3,4), (4,5),(5,0), (0,3), (3,0), (0,2), (0,4), (0,7)]
     self.undirected_edges = set()
     for (u,v) in self.edges: 
         self.undirected_edges.add((u,v))
         self.undirected_edges.add((v,u))
     self.g1 = UndirectedGraph(V=range(8), E=self.edges)
     self.g1bis = UndirectedGraph(E=self.edges)
     self.g1bis.V.add(6)
     self.g2 = AdjacencyDigraph(V=range(8), E=self.edges, directed=False, 
                              createMap=lambda V: IntKeyMap(capacity=max(V)+1), 
                              createSet=lambda V: IntSet(capacity=max(V)+1))
     self.g3 = LinkedListSetAdjacencyDigraph(V=range(8), E=self.edges, directed=False, 
                              createMap=lambda V: IntKeyMap(capacity=max(V)+1))
     self.g4 = ListSetAdjacencyDigraph(V=range(8), E=self.edges, directed=False, 
                              createMap=lambda V: IntKeyMap(capacity=max(V)+1))
     self.g5 = SetAdjacencyDigraph(V=range(8), E=self.edges, directed=False, 
                              createMap=lambda V: IntKeyMap(capacity=max(V)+1))
     self.g6 = AdjacencyMatrixDigraph(V=range(8), E=self.edges, directed=False)
     self.g7 = InvAdjacencyDigraph(V=range(8), E=self.edges, directed=False, 
                              createMap=lambda V: IntKeyMap(capacity=max(V)+1), 
                              createSet=lambda V: IntSet(capacity=max(V)+1))
 def setUp(self):
     self.edges = [(0,1), (1,2), (2,3), (3,4), (4,5), (5,0), (0,3), (3,0), (0,2), (0,4), (0,7)]
     self.g1 = Digraph(V=range(8), E=self.edges)
     self.g1bis = Digraph(E=self.edges)
     self.g1bis.V.add(6)
     self.g2 = AdjacencyDigraph(V=range(8), E=self.edges, directed=True, 
                              createMap=lambda V: IntKeyMap(capacity=max(V)+1), 
                              createSet=lambda V: IntSet(capacity=max(V)+1))
     self.g3 = LinkedListSetAdjacencyDigraph(V=range(8), E=self.edges, directed=True, 
                              createMap=lambda V: IntKeyMap(capacity=max(V)+1))
     self.g4 = ListSetAdjacencyDigraph(V=range(8), E=self.edges, directed=True, 
                              createMap=lambda V: IntKeyMap(capacity=max(V)+1))
     self.g5 = SetAdjacencyDigraph(V=range(8), E=self.edges, directed=True, 
                              createMap=lambda V: IntKeyMap(capacity=max(V)+1))
     self.g6 = AdjacencyMatrixDigraph(V=range(8), E=self.edges, directed=True)
     self.g7 = InvAdjacencyDigraph(V=range(8), E=self.edges, directed=True, 
                              createMap=lambda V: IntKeyMap(capacity=max(V)+1), 
                              createSet=lambda V: IntSet(capacity=max(V)+1))
     edges = self.edges + [(1,1)]
     self.g8 = InvAdjacencyDigraph(V=range(8), E=edges, directed=True, 
                              createMap=lambda V: IntKeyMap(capacity=max(V)+1), 
                              createSet=lambda V: IntSet(capacity=max(V)+1))
Beispiel #7
0
 def setUp(self):
     self.data = [10, 60, 20, 30, 30, 40, 50]
     self.set0 = set(self.data)
     self.set1 = IntSet(self.data)
Beispiel #8
0
class Test_IntSet(unittest.TestCase):
    def setUp(self):
        self.data = [10, 60, 20, 30, 30, 40, 50]
        self.set0 = set(self.data)
        self.set1 = IntSet(self.data)

    def test_init(self):
        self.assertEqual(self.set1, self.set0)

    def test_len(self):
        self.assertEqual(len(self.set1), len(self.set0))

    def test_remove(self):
        self.set0.remove(10)
        self.set1.remove(10)
        self.assertEqual(self.set1, self.set0)
        self.assertRaises(KeyError, self.set0.remove, 1000)

    def test_discard(self):
        self.set0.discard(10)
        self.set1.discard(10)
        self.assertEqual(self.set1, self.set0)
        n = len(self.set0)
        self.set0.discard(10000)
        self.assertEqual(n, len(self.set0))

    def test_contains(self):
        self.assertEqual(10 in self.set1, 10 in self.set0)
        self.assertEqual(1 in self.set1, 1 in self.set0)

    def test_clear(self):
        self.set1.clear()
        self.assertEqual(len(self.set1), 0)

    def test_iter(self):
        self.assertEqual(sorted(self.set1), sorted(self.set0))

    def test_add(self):
        n = len(self.set1)
        self.set1.add(5)
        self.assertEqual(len(self.set1), n + 1)
        self.assertTrue(5 in self.set1)
        self.set1.add(10)
        self.assertEqual(len(self.set1), n + 1)

    def test_ops(self):
        a = set([1, 2, 4])
        b = set([1, 5, 6])
        A = IntSet(a)
        B = IntSet(b)
        C = IntSet([2, 4])
        self.assertEqual(tuple(sorted(a | b)), tuple(sorted(A | B)))
        self.assertEqual(tuple(sorted(a & b)), tuple(sorted(A & B)))
        self.assertEqual(tuple(sorted(a - b)), tuple(sorted(A - B)))
        self.assertEqual(tuple(sorted(a ^ b)), tuple(sorted(A ^ B)))
        self.assertTrue(C < A)
        self.assertTrue(C <= A)
        self.assertTrue(A > C)
        self.assertTrue(A | B == B | A)
        self.assertTrue(C.isdisjoint(B))
        self.assertFalse(A | B != B | A)

    def test_capacity(self):
        self.assertEqual(self.set1.capacity, 61)
        self.set1.capacity = 100
        self.set1.add(99)
        self.assertEqual(self.set1.capacity, 100)
        self.assertTrue(99 in self.set1)
        self.set1.capacity = 10
        self.set1.add(9)
        self.assertEqual(self.set1.capacity, 10)
        self.assertTrue(9 in self.set1)

    def test_repr(self):
        self.assertEqual(list(sorted(set(self.data))),
                         list(sorted(eval(repr(self.set1)))))
Beispiel #9
0
from algoritmia.datastructures.digraphs import AdjacencyDigraph #[full
from algoritmia.datastructures.sets import IntSet
from algoritmia.datastructures.maps import IntKeyMap
from algoritmia.problems.traversals.breadthfirst import BreadthFirstTraverser

G = AdjacencyDigraph(E=[(0,1), (0,3), (1,4), (2,5), (3,1), (4,3)],
                     createMap=lambda V: IntKeyMap(capacity=max(V)+1),
                     createSet=lambda V: IntSet(capacity=max(V)+1))
bft = BreadthFirstTraverser(createSet=lambda V: IntSet(capacity=max(V)+1))
print(list(bft.traverse(G, 0)))#]full