From b6b02f86c3617dd091dcea2d3e91b6a6d67477f2 Mon Sep 17 00:00:00 2001 From: Christian Lorenzo Date: Sat, 26 Sep 2020 12:05:22 -0700 Subject: [PATCH 1/9] FIrst Commit First Commit --- names/Implementation.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 names/Implementation.py diff --git a/names/Implementation.py b/names/Implementation.py new file mode 100644 index 000000000..e69de29bb From e941ee4cc0ed6a38e3989cc0b4e9d6b1bc16a279 Mon Sep 17 00:00:00 2001 From: Christian Lorenzo Date: Sat, 26 Sep 2020 12:06:25 -0700 Subject: [PATCH 2/9] Update Implementation.py First Commit --- names/Implementation.py | 1 + 1 file changed, 1 insertion(+) diff --git a/names/Implementation.py b/names/Implementation.py index e69de29bb..5db0e28ce 100644 --- a/names/Implementation.py +++ b/names/Implementation.py @@ -0,0 +1 @@ +//Implementation \ No newline at end of file From 2b24f9ce69ea0da59ee9db922df877a829a554ec Mon Sep 17 00:00:00 2001 From: Christian Lorenzo Date: Sat, 26 Sep 2020 12:13:44 -0700 Subject: [PATCH 3/9] Update for binary_search_tree Created a binary_search_tree document --- names/Implementation.py | 1 - names/binary_search/binary_search_tree.py | 0 2 files changed, 1 deletion(-) delete mode 100644 names/Implementation.py create mode 100644 names/binary_search/binary_search_tree.py diff --git a/names/Implementation.py b/names/Implementation.py deleted file mode 100644 index 5db0e28ce..000000000 --- a/names/Implementation.py +++ /dev/null @@ -1 +0,0 @@ -//Implementation \ No newline at end of file diff --git a/names/binary_search/binary_search_tree.py b/names/binary_search/binary_search_tree.py new file mode 100644 index 000000000..e69de29bb From ef33bde12c3c2661d5ea89a18edc88fda3f63533 Mon Sep 17 00:00:00 2001 From: Christian Lorenzo Date: Sat, 26 Sep 2020 12:20:58 -0700 Subject: [PATCH 4/9] Updates for binary_search_tree CReated a BynarySearchTree class and a BSTNode class on the same document. --- names/binary_search/binary_search_tree.py | 30 +++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/names/binary_search/binary_search_tree.py b/names/binary_search/binary_search_tree.py index e69de29bb..d73c0ea68 100644 --- a/names/binary_search/binary_search_tree.py +++ b/names/binary_search/binary_search_tree.py @@ -0,0 +1,30 @@ + + +class BinarySearchTree: + def __init__(self): + self.root_node = None + + def isEmpty(self): + return self.root_node is None + + def insert(self, value): + if self.isEmpty(): + self.root_node = BSTNode(value) + else: + self.root_node = insert(value) + + def contains(self, target): + if self.isEmpty(): + return False + else: + return self.root_node.contains(target) + + +# BSTNode class + +class BSTNode: + def __init__(self, value): + self.value = value + self.left = None + self.right = None + \ No newline at end of file From 4263a9206ea6034a962ab1c45a81e07cc95eb1da Mon Sep 17 00:00:00 2001 From: Christian Lorenzo Date: Sat, 26 Sep 2020 12:32:52 -0700 Subject: [PATCH 5/9] Update binary_search_tree.py Finished binary_tree_search document. --- names/binary_search/binary_search_tree.py | 25 ++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/names/binary_search/binary_search_tree.py b/names/binary_search/binary_search_tree.py index d73c0ea68..67a20e723 100644 --- a/names/binary_search/binary_search_tree.py +++ b/names/binary_search/binary_search_tree.py @@ -27,4 +27,27 @@ def __init__(self, value): self.value = value self.left = None self.right = None - \ No newline at end of file + + #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 not self.right: + 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 target == self.value: + return True + elif target < self.value: + return self.left.contains(target) if self.left else False + else: + return self.right.contains(target) if self.right else False \ No newline at end of file From 3898c3a9cce4654fc7f9857bdca5add799386197 Mon Sep 17 00:00:00 2001 From: Christian Lorenzo Date: Sat, 26 Sep 2020 12:48:37 -0700 Subject: [PATCH 6/9] Update names.py Finished Names with Stretch --- names/names.py | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/names/names.py b/names/names.py index ea158997f..472ae2737 100644 --- a/names/names.py +++ b/names/names.py @@ -1,4 +1,5 @@ import time +from binary_search_tree import BinarySearchTree start_time = time.time() @@ -13,10 +14,14 @@ duplicates = [] # Return the list of duplicates in this data structure # Replace the nested for loops below with your improvements +bst = BinarySearchTree() + for name_1 in names_1: - for name_2 in names_2: - if name_1 == name_2: - duplicates.append(name_1) + bst.insert(names_1) + +for name_2 in names_2: + if bst.contains(name_2): + duplicates.append(name_2) end_time = time.time() print (f"{len(duplicates)} duplicates:\n\n{', '.join(duplicates)}\n\n") @@ -26,3 +31,22 @@ # Python has built-in tools that allow for a very efficient approach to this problem # What's the best time you can accomplish? Thare are no restrictions on techniques or data # structures, but you may not import any additional libraries that you did not write yourself. + +start_time = time.time() + +f = open('names_1.text', 'r') +names_1 = f.read().split("\n") # List containing 10000 names +f.close() + +f = open('names_2.text', 'r') +names_2 = f.read().split("\n") # List containing 10000 names +f.close() + +duplicates = [] # Returns the duplicates in this data structure + +# Replace the nested for loops below with your improvements +duplicates = list(set(names_1) & set(names_2)) + +end_time = time.time() +print (f"{len(duplicates)} duplicates:\n\n{', '.join(duplicates)}\n\n") +print (f"runtime: {end_time - start_time} seconds") From e0eecda041ab121860dcac4a5959d30941d27778 Mon Sep 17 00:00:00 2001 From: Christian Lorenzo Date: Sat, 26 Sep 2020 14:55:45 -0700 Subject: [PATCH 7/9] Reverse Document passing all tests. Reverse Document passing all tests. --- names/{binary_search => }/binary_search_tree.py | 4 ++-- reverse/reverse.py | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) rename names/{binary_search => }/binary_search_tree.py (94%) diff --git a/names/binary_search/binary_search_tree.py b/names/binary_search_tree.py similarity index 94% rename from names/binary_search/binary_search_tree.py rename to names/binary_search_tree.py index 67a20e723..908289f40 100644 --- a/names/binary_search/binary_search_tree.py +++ b/names/binary_search_tree.py @@ -11,7 +11,7 @@ def insert(self, value): if self.isEmpty(): self.root_node = BSTNode(value) else: - self.root_node = insert(value) + self.root_node.insert(value) def contains(self, target): if self.isEmpty(): @@ -34,7 +34,7 @@ def insert(self, value): if self.left is None: self.left = BSTNode(value) else: - self.left = insert(value) + self.left.insert(value) elif value >= self.value: if not self.right: self.right = BSTNode(value) diff --git a/reverse/reverse.py b/reverse/reverse.py index 6116252d1..13cfc6758 100644 --- a/reverse/reverse.py +++ b/reverse/reverse.py @@ -39,4 +39,9 @@ def contains(self, value): return False def reverse_list(self, node, prev): - pass + if node is None: + self.head = prev + return + + self.reverse_list(node.get_next(), node) + node.set_next(prev) From 555e6c32c83d86115bfae705106455f73bec39b2 Mon Sep 17 00:00:00 2001 From: Christian Lorenzo Date: Sat, 26 Sep 2020 15:38:08 -0700 Subject: [PATCH 8/9] Update names.py Data Structure Sprint Challenge Finished with Stretch. --- names/names.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/names/names.py b/names/names.py index 472ae2737..b087cecd0 100644 --- a/names/names.py +++ b/names/names.py @@ -17,7 +17,7 @@ bst = BinarySearchTree() for name_1 in names_1: - bst.insert(names_1) + bst.insert(name_1) for name_2 in names_2: if bst.contains(name_2): @@ -34,11 +34,11 @@ start_time = time.time() -f = open('names_1.text', 'r') +f = open('names_1.txt', 'r') names_1 = f.read().split("\n") # List containing 10000 names f.close() -f = open('names_2.text', 'r') +f = open('names_2.txt', 'r') names_2 = f.read().split("\n") # List containing 10000 names f.close() From 8bee2d136731aa38e6215c5c42255ffbd7fa2fbd Mon Sep 17 00:00:00 2001 From: Christian Lorenzo Date: Sat, 26 Sep 2020 15:59:35 -0700 Subject: [PATCH 9/9] Update ring_buffer.py Modified the RingBuffer class. --- ring_buffer/ring_buffer.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/ring_buffer/ring_buffer.py b/ring_buffer/ring_buffer.py index 37e9fb0dd..9467efd98 100644 --- a/ring_buffer/ring_buffer.py +++ b/ring_buffer/ring_buffer.py @@ -1,9 +1,21 @@ class RingBuffer: - def __init__(self, capacity): - pass + def __init__(self, capacity = 10): + self.capacity = capacity + self.size = 0 + self.write_index = 0 + self.storage = [] def append(self, item): - pass + if self.size >= self.capacity: + self.storage[self.write_index] = item + else: + self.storage.append(item) + self.size += 1 + + if self.write_index < (self.capacity - 1): + self.write_index += 1 + else: + self.write_index = 0 def get(self): - pass \ No newline at end of file + return self.storage \ No newline at end of file