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)
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)
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)
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
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")
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')
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()
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))