diff --git a/README.md b/README.md index 2b34ac9df1be976e5dbf99ebbf4672a3f58eae4a..7d304b3a2c505090fb852ec20bf337017d351814 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ Loïc Scoth ## TODO ajout commande execution/tests +Ce qui ne vas pas ## Description du projet diff --git a/src/ArbreB/Graph.gv b/src/ArbreB/Graph.gv new file mode 100644 index 0000000000000000000000000000000000000000..73753f34eed46ee27d25db0fe551f1f1d6965c40 --- /dev/null +++ b/src/ArbreB/Graph.gv @@ -0,0 +1,3 @@ +graph { + "[5, 25]" +} diff --git a/src/ArbreB/Graph.gv.jpg b/src/ArbreB/Graph.gv.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1d38b922210293ceaf86157a0639b6846bbdffc9 Binary files /dev/null and b/src/ArbreB/Graph.gv.jpg differ diff --git a/src/BTree.py b/src/BTree.py index d10d42e18f1e8569b088801c617cf19e38d6dd6f..12f8f793231dd8fb3091d9725f7fb4b3bd1cb072 100644 --- a/src/BTree.py +++ b/src/BTree.py @@ -1,6 +1,6 @@ #import Node as Bnode -from Node import * -from Visualization import * +from Node import Node +#from Visualization import Visualization class Btree() : @@ -23,24 +23,28 @@ class Btree() : def insertion(self, value): """ Exemple(s): - >>> a =Btree(2, Node([12, 42], [Node([2, 3]), Node([25]), Node([50])])) - >>> a.insertion(1) - True - >>> a.search(1) - (Node([1]), 0) - >>> b= Btree(3, Node([12,25,50], [Node([1,11]), Node([20]), Node([100])])) - >>> b.insertion(10) - True - >>> b.search(10) - (Node([1, 10, 11]), 1) - >>> Btree(2, Node([4, 10], [Node([1, 3]), Node([25]), Node([50])])).insertion(4) - True - +# >>> a =Btree(2, Node([12, 42], [Node([2, 3]), Node([25]), Node([50])])) +# >>> a.insertion(1) +# True +# >>> a.search(1) +# (Node([1]), 0) +# >>> b= Btree(3, Node([12,25,50], [Node([1,11]), Node([20]), Node([100])])) +# >>> b.insertion(10) +# True +# >>> b.search(10) +# (Node([1, 10, 11]), 1) +# >>> Btree(2, Node([4, 10], [Node([1, 3]), Node([25]), Node([50])])).insertion(4) +# True + >>> c = Btree(2,Node([1, 10])) + >>> print(c.insertion(15)) + """ + print(self.root) fini, milieu, g, d = self.root.insert(value, self.k) if (not fini): new_root = Node([milieu], [g, d]) self.root = new_root + print(self.root) return True @@ -62,6 +66,11 @@ class Btree() : """ (ok, _, _, _) = self.root.is_ArbreB(self.k, True) return ok + + def equals(self, otherObject): + if not isinstance(otherObject, Btree): + return False + return (self.root.keys == otherObject.root.keys and self.k == otherObject.k) def __repr__(self) : return f"Btree({self.root})" diff --git a/src/Node.py b/src/Node.py index 6c5fe0a2d9035a7f9a94356d9b064a892d8f0172..c7e91c2f99aa7ae868f733a5ec22b066750b72b7 100644 --- a/src/Node.py +++ b/src/Node.py @@ -1,6 +1,6 @@ from util import recherche_dichotomique -from Visualization import * -from BTree import * +#from Visualization import * +#from BTree import * class Node() : @@ -80,7 +80,10 @@ class Node() : """ Return : (node, index) or Nothing Exemple(s): - >>> node = Node([5]) + + >>> node = Node([]) + >>> node.insert(5,1) + (True, None, None, None) >>> node.insert(20, 2) (True, None, None, None) >>> node.search(20) @@ -107,6 +110,7 @@ class Node() : >>> node.insert(1, 3) (True, None, None, None) + """ (found, index) = recherche_dichotomique(value, self.keys) if (not found) : diff --git a/src/Visualization.py b/src/Visualization.py index 6493999b2b4049406954fa54c90fee49e794884c..c07b06270e2abc5f6ad6c7f470f22944a8ed0d1a 100644 --- a/src/Visualization.py +++ b/src/Visualization.py @@ -1,6 +1,6 @@ import graphviz -from Node import * -from BTree import * +from Node import Node +from BTree import Btree class Visualization() : @@ -11,6 +11,8 @@ class Visualization() : self.add_node_to_graph(self.btree.root) def add_node_to_graph(self, node): +# nodeKeys = repr(node.keys) + print(repr(node.keys)) nodeKeys = repr(node.keys) self.g.node(nodeKeys) for child in node.childs: diff --git a/src/experimentation.py b/src/experimentation.py index faaa4c071b2206076a9e47c401bbb7ffed36c709..d8ab56b8aed4857d5ba8070399afcade5a0f56ad 100644 --- a/src/experimentation.py +++ b/src/experimentation.py @@ -1,9 +1,41 @@ -import unittest -from Node import * +#import unittest +from Node import Node +from util import * +from Visualization import Visualization +from BTree import Btree + class experimentation: - def setUp(self): - self.node = Node([12, 42], ) + def __init__(self): + self.btree = Btree(2, Node([])) + self.experimentationInsert1() + + def experimentationInsert1(self): + #self.btree.insertion(2) + #self.isCorrect(Btree(2,Node([2]))) + + #self.btree.insertion(4) + #self.isCorrect(Btree(2,Node([2,4]))) + + for n in [2, 4, 5] + list(range(6, 37, 2)) + [7, 9, 11, 13]: + self.btree.insertion(n) + + # TODO Visualization(self.btree).render() + + + print(self.btree) + + + + + + + + def isCorrect(self, BTreeTest): + if (self.btree.equals(BTreeTest)): + print("Correct") + else: + print("error") @@ -16,14 +48,19 @@ class experimentation: +if __name__ == "__main__": + experiment = experimentation() -if __name__ == "__main__": - import sys - sys.path.insert(1, './src') - sys.path.insert(2, '../src') - from Node import * - unittest.main() \ No newline at end of file +# if __name__ == "__main__": +# import sys +# sys.path.insert(1, './src') +# sys.path.insert(2, '../src') +# from Node import * +# +# unittest.main() +# import doctest +# doctest.testmod(verbose=False) \ No newline at end of file