Skip to content
Snippets Groups Projects
Commit 7788dae5 authored by Loic Scoth's avatar Loic Scoth
Browse files

fin de seance, ajout experimentation

parent 1475112d
Branches
No related tags found
No related merge requests found
......@@ -8,6 +8,7 @@ Loïc Scoth
## TODO
ajout commande execution/tests
Ce qui ne vas pas
## Description du projet
......
graph {
"[5, 25]"
}
src/ArbreB/Graph.gv.jpg

2.7 KiB

#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})"
......
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) :
......
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:
......
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment