From 1442353ec7ecaaaf5eb608c12442c4946ea18a27 Mon Sep 17 00:00:00 2001 From: Chawn Christian Date: Sat, 26 Sep 2020 14:01:15 -0400 Subject: [PATCH 1/2] Files completed error with importing binary file into names file --- names/binary_search_tree.py | 45 +++++++++++++++++++++++++++++++++++++ names/names.py | 13 +++++++++-- reverse/reverse.py | 11 ++++++++- ring_buffer/ring_buffer.py | 13 ++++++++--- 4 files changed, 76 insertions(+), 6 deletions(-) create mode 100644 names/binary_search_tree.py diff --git a/names/binary_search_tree.py b/names/binary_search_tree.py new file mode 100644 index 000000000..7df66b19b --- /dev/null +++ b/names/binary_search_tree.py @@ -0,0 +1,45 @@ +class BST: + def __init__(self, value): + self.value = value + self.left = None + self.right = None + + # Insert the given value into the tree + def insert(self, value): + node = BST(value) + if self.value is None: + self.value = value + return + + elif value < self.value: + if self.left is None: + self.left = node + else: + self.left.insert(value) + + + elif value >= self.value: + if self.right is None: + self.right = node + else: + self.right.insert(value) + + # Return True if the tree contains the value + # False if it does not + def contains(self, target): + + while self is not None: + if self.value is target: + return True + if target < self.value: + if self.left: + return self.left.contains(target) + else: + False + elif target > self.value: + if self.right: + return self.right.contains(target) + else: + return False + + return False diff --git a/names/names.py b/names/names.py index ea158997f..7aabc65e7 100644 --- a/names/names.py +++ b/names/names.py @@ -1,4 +1,6 @@ import time +from binary_search_tree import BST + start_time = time.time() @@ -12,11 +14,18 @@ duplicates = [] # Return the list of duplicates in this data structure +search = BST('dup_name') +for name in names_1: + search.insert(name) +for name in names_2: + if search.contains(name): + duplicates.append(name) # Replace the nested for loops below with your improvements -for name_1 in names_1: +'''for name_1 in names_1: for name_2 in names_2: if name_1 == name_2: - duplicates.append(name_1) + duplicates.append(name_1)''' + end_time = time.time() print (f"{len(duplicates)} duplicates:\n\n{', '.join(duplicates)}\n\n") diff --git a/reverse/reverse.py b/reverse/reverse.py index 6116252d1..b54cae77b 100644 --- a/reverse/reverse.py +++ b/reverse/reverse.py @@ -39,4 +39,13 @@ def contains(self, value): return False def reverse_list(self, node, prev): - pass + if self.head is None: + return + if node.next_node is None: + self.head = node + node.next_node = prev + return + node_next = node.next_node + node.next_node = prev + + self.reverse_list(node_next, node) diff --git a/ring_buffer/ring_buffer.py b/ring_buffer/ring_buffer.py index 37e9fb0dd..6777af88e 100644 --- a/ring_buffer/ring_buffer.py +++ b/ring_buffer/ring_buffer.py @@ -1,9 +1,16 @@ class RingBuffer: def __init__(self, capacity): - pass + self.capacity = capacity + self.arr = [] + self.index = 0 + def append(self, item): - pass + if len(self.arr) is self.capacity: + self.arr[self.index] = item + self.index = (self.index + 1) % self.capacity + else: + self.arr.append(item) def get(self): - pass \ No newline at end of file + return self.arr \ No newline at end of file From b2bb79c390f8a53a9c84f68fbadf11c5000511da Mon Sep 17 00:00:00 2001 From: Chawn Christian Date: Sat, 26 Sep 2020 14:51:14 -0400 Subject: [PATCH 2/2] Error resolved MVP met --- names/binary_search_tree.py | 28 ++++++++++++---------------- names/names.py | 1 + 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/names/binary_search_tree.py b/names/binary_search_tree.py index 7df66b19b..1dcf4940c 100644 --- a/names/binary_search_tree.py +++ b/names/binary_search_tree.py @@ -22,24 +22,20 @@ def insert(self, value): if self.right is None: self.right = node else: - self.right.insert(value) + self.right.insert(value) # Return True if the tree contains the value # False if it does not def contains(self, target): + + if target == self.value: + return True - while self is not None: - if self.value is target: - return True - if target < self.value: - if self.left: - return self.left.contains(target) - else: - False - elif target > self.value: - if self.right: - return self.right.contains(target) - else: - return False - - return False + elif target < self.value and self.left: + return self.left.contains(target) + + elif target > self.value and self.right: + return self.right.contains(target) + + else: + return False \ No newline at end of file diff --git a/names/names.py b/names/names.py index 7aabc65e7..9fa79f1e9 100644 --- a/names/names.py +++ b/names/names.py @@ -2,6 +2,7 @@ from binary_search_tree import BST + start_time = time.time() f = open('names_1.txt', 'r')