From d49c4182298957d1c4c276dbf4ed074badd82f06 Mon Sep 17 00:00:00 2001 From: Brandon Bruce <54733608+brucebra000@users.noreply.github.com> Date: Fri, 25 Sep 2020 20:34:29 -0700 Subject: [PATCH] Brandon Bruce - Sprint Challenge --- names/names.py | 46 ++++++++++++++++++++++++++++++++++---- reverse/reverse.py | 8 ++++++- ring_buffer/ring_buffer.py | 23 ++++++++++++++++--- 3 files changed, 69 insertions(+), 8 deletions(-) diff --git a/names/names.py b/names/names.py index ea158997f..cc00cd4ab 100644 --- a/names/names.py +++ b/names/names.py @@ -13,10 +13,48 @@ duplicates = [] # Return the list of duplicates in this data structure # Replace the nested for loops below with your improvements -for name_1 in names_1: - for name_2 in names_2: - if name_1 == name_2: - duplicates.append(name_1) +class BSTNode: + def __init__(self, value): + self.value = value + self.left = None + self.right = None + + # Insert the given value into the tree + def insert(self, value): + if value < self.value: + if self.left is None: + self.left = BSTNode(value) + else: + self.left.insert(value) + elif value >= self.value: + if self.right is None: + self.right = BSTNode(value) + else: + self.right.insert(value) + + # Return True if the tree contains the value + # False if it does not + def contains(self, target): + if self.value == target: + return True + elif self.value > target: + if self.left is None: + return False + else: + return self.left.contains(target) + else: + if self.right is None: + return False + else: + return self.right.contains(target) + + +bst = BSTNode('') +for i in names_1: + bst.insert(i) +for i in names_2: + if bst.contains(i): + duplicates.append(i) 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..9a77077a6 100644 --- a/reverse/reverse.py +++ b/reverse/reverse.py @@ -39,4 +39,10 @@ def contains(self, value): return False def reverse_list(self, node, prev): - pass + while node: + next_node = node.next_node + node.next_node = prev + prev = node + node = next_node + self.head = prev + return node diff --git a/ring_buffer/ring_buffer.py b/ring_buffer/ring_buffer.py index 37e9fb0dd..c956eceec 100644 --- a/ring_buffer/ring_buffer.py +++ b/ring_buffer/ring_buffer.py @@ -1,9 +1,26 @@ class RingBuffer: def __init__(self, capacity): - pass + self.capacity = capacity + self.ring = [] + self.counter = 0 def append(self, item): - pass + if len(self.ring) < self.capacity: + self.ring.append(item) + else: + self.ring[self.counter] = item + self.counter += 1 + if self.counter == self.capacity: + self.counter = 0 def get(self): - pass \ No newline at end of file + return(self.ring) + +buffer = RingBuffer(3) +buffer.append('a') +buffer.append('b') +buffer.append('c') +print(buffer.get()) +buffer.append('d') +buffer.append('e') +print(buffer.get()) \ No newline at end of file