Ejemplo n.º 1
0
    def test_traverse(self):
        raw_btree = {
            "name": "a",
            "l": {"name": "b", "l": {"name": "c"}, "r": {"name": "d", "l": {"name": "e"}}},
            "r": {"name": "f"},
        }
        names = []

        def collect_names(x):
            names.append(x.name)

        btree = Btree.create(raw_btree)
        Btree.traverse(btree, collect_names)
        self.assertEquals(["a", "b", "c", "d", "e", "f"], names)
Ejemplo n.º 2
0
    def _construct_index(self, table_name, index_name):
        '''
        Construct a btree on a table and save.

        table_name -> table's name (needs to exist in database)
        index_name -> name of the created index
        '''
        bt = Btree(3)  # 3 is arbitrary

        # for each record in the primary key of the table, insert its value and index to the btree
        for idx, key in enumerate(self.tables[table_name].columns[self.tables[table_name].pk_idx]):
            bt.insert(key, idx)
        # save the btree
        self._save_index(index_name, bt)
Ejemplo n.º 3
0
    def _construct_index(self, table_name, index_name):
        '''
        Construct a btree on a table and save.

        Args:
            table_name: string. Table name (must be part of database).
            index_name: string. Name of the created index.
        '''
        bt = Btree(3) # 3 is arbitrary

        # for each record in the primary key of the table, insert its value and index to the btree
        for idx, key in enumerate(self.tables[table_name].column_by_name(self.tables[table_name].pk)):
            bt.insert(key, idx)
        # save the btree
        self._save_index(index_name, bt)
Ejemplo n.º 4
0
 def make_move(self, board):
     from copy import deepcopy
     brd = Board(deepcopy(board.field))
     tree = Btree(brd)
     tree.fill_tree(tree.root)
     board = tree.root.left.data if tree.get_score(
         tree.root.left) > tree.get_score(
             tree.root.right) else tree.root.right.data
     board.free = board.free_positions()
     return board
Ejemplo n.º 5
0
NUM = 60
B = 6
lst = []

print(f"Branching factor: {B}")

insertcounter = 0
while len(lst) != NUM:
    new_v = randrange(100)
    if new_v not in lst:
        lst.append(new_v)
        insertcounter += 1

print(f"Inserted {insertcounter} items")

bt = Btree(B)

for ind, el in enumerate(lst):
    bt.insert(el, ind)

delcounter = 0
listLength = len(lst)
for i in range(len(lst)):
    delvalue = random.choice(lst)
    lst.remove(delvalue)
    bt.delete(delvalue)
    # if counter >= listLength/2:
    #     break
    delcounter += 1

print(f"Deleted {delcounter} items")
Ejemplo n.º 6
0
import sys
from node import Node
from btree import Btree

if __name__ == '__main__':
    if len(sys.argv) < 2:
        print('format python3 main.py FILENAME')
        exit(0)
    filename = sys.argv[1]
    if not os.path.isfile(filename):
        print('"{}" file is not present'.format(filename))
        exit(0)
    with open(filename, 'r') as fp:
        lines = fp.readlines()
    # create a Btree object
    btree = Btree()

    for line in lines:
        line = line.strip().split(' ')
        if line[0] == 'INSERT':
            val = float(line[1])
            ret, new_key, new_node = btree.insert(btree.root, val)
            btree.change_root(ret, new_key, new_node)

        elif line[0] == 'FIND':
            val = float(line[1])
            ret = btree.operate(btree.root, 'find', val, val)
            if ret == 0:
                print('NO')
            elif ret:
                print('YES')
Ejemplo n.º 7
0
from btree import Btree
from random import randrange
import sys
'''
Test the Btree
'''

NUM = int(sys.argv[1])
B = int(sys.argv[2])

lst = []

while len(lst)!=NUM:
    new_v = randrange(100)
    if new_v not in lst:
        lst.append(new_v)

bt = Btree(B)

for ind, el in enumerate(lst):
    bt.insert(el, ind)

print(lst)
bt.plot()
Ejemplo n.º 8
0
	dataBack = open('lastLine.txt', 'w')
	for i in lst:
		dataBack.writelines(str(i) + "\n")
	dataBack.close()
else:
	print("loaded previous sequence")
	dataBack = open('lastLine.txt', 'r')
	lines = dataBack.readlines()
	
	lst = []
	for i in lines:
		lst.append(int(i))
	
	dataBack.close()

bt = Btree(B)

for ind, el in enumerate(lst):
	#print(el, ind)
	bt.insert(el, ind)


bt.plot("Pre")
i = 0
for q in range(0, 5):
	n = randrange(NUM)
	
	if bt.delete(n) == True:
		i = i + 1
		bt.plot("/Step " + str(i))
		print("Step " + str(i))