From 884ac93f03c3454f47ddafe3283df8fa31f75744 Mon Sep 17 00:00:00 2001 From: Saptashrungi Date: Sat, 28 Dec 2019 15:47:56 +0530 Subject: [PATCH 01/11] DODA --- .../miscellaneous_data_structures/stack.py | 41 +++++++------------ 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/pydatastructs/miscellaneous_data_structures/stack.py b/pydatastructs/miscellaneous_data_structures/stack.py index 6c4f8c5d4..daa1826ac 100644 --- a/pydatastructs/miscellaneous_data_structures/stack.py +++ b/pydatastructs/miscellaneous_data_structures/stack.py @@ -1,3 +1,4 @@ +from pydatastructs.linear_data_structures import DynamicOneDimensionalArray from pydatastructs.linear_data_structures import OneDimensionalArray from copy import deepcopy as dc @@ -81,47 +82,35 @@ def peek(self): return None class ArrayStack(Stack): + __slots__ = ['size', 'items', 'dtype'] - __slots__ = ['maxsize', 'top', 'items', 'dtype'] - - def __new__(cls, maxsize=None, top=0, items=None, dtype=int): - if not _check_type(maxsize, int): - raise ValueError("maxsize is missing.") - if not _check_type(top, int): - raise TypeError("top is not of type int.") + def __new__(cls, size=None, items=None, dtype=int): + if not _check_type(size, int): + raise ValueError("size is missing.") if items is None: - items = OneDimensionalArray(dtype, maxsize) - if not _check_type(items, OneDimensionalArray): + items = DynamicOneDimensionalArray(dtype, size) + if not _check_type(items, DynamicOneDimensionalArray): raise ValueError("items is not of type, OneDimensionalArray") - if items._size > maxsize: - raise ValueError("Overflow, size of items %s is greater " - "than maxsize, %s"%(items._size, maxsize)) obj = object.__new__(cls) - obj.maxsize, obj.top, obj.items, obj.dtype = \ - maxsize, top, items, items._dtype + obj.size, obj.items, obj.dtype = \ + size, items, items._dtype return obj def push(self, x): - if self.top == self.maxsize: - raise ValueError("Stack is full.") - self.items[self.top] = self.dtype(x) - self.top += 1 + self.items.append(dtype.x) def pop(self): - if self.top == 0: - raise ValueError("Stack is already empty.") - self.top -= 1 - r = self.items[self.top] - self.items[self.top] = None - return r + top_element = copy.deepcopy(self.items[self._last_pos_filled]) + self.items.delete(self._last_pos_filled) + return top_element @property def is_empty(self): - return self.top == 0 + return self._last_pos_filled == 0 @property def peek(self): - return self.items[self.top - 1] + return self.items[self._last_pos_filled-1] def __str__(self): """ From 454787b9598b6d1424905c0e469574f81c815849 Mon Sep 17 00:00:00 2001 From: Saptashrungi Date: Sun, 29 Dec 2019 01:04:22 +0530 Subject: [PATCH 02/11] latest commit --- .../miscellaneous_data_structures/stack.py | 30 ++++++++----------- .../tests/test_stack.py | 16 ++++------ 2 files changed, 18 insertions(+), 28 deletions(-) diff --git a/pydatastructs/miscellaneous_data_structures/stack.py b/pydatastructs/miscellaneous_data_structures/stack.py index daa1826ac..1d27a2dbe 100644 --- a/pydatastructs/miscellaneous_data_structures/stack.py +++ b/pydatastructs/miscellaneous_data_structures/stack.py @@ -1,5 +1,4 @@ from pydatastructs.linear_data_structures import DynamicOneDimensionalArray -from pydatastructs.linear_data_structures import OneDimensionalArray from copy import deepcopy as dc __all__ = [ @@ -48,7 +47,7 @@ class Stack(object): '[1, 2, 3, None, None]' >>> s.pop() 3 - + 0 References ========== @@ -58,8 +57,6 @@ class Stack(object): def __new__(cls, implementation='array', **kwargs): if implementation == 'array': return ArrayStack( - kwargs.get('maxsize', None), - kwargs.get('top', 0), kwargs.get('items', None), kwargs.get('dtype', int)) raise NotImplementedError( @@ -82,35 +79,34 @@ def peek(self): return None class ArrayStack(Stack): - __slots__ = ['size', 'items', 'dtype'] - def __new__(cls, size=None, items=None, dtype=int): - if not _check_type(size, int): - raise ValueError("size is missing.") + __slots__ = ['items', 'dtype'] + + def __new__(cls, items=None, dtype=int): if items is None: - items = DynamicOneDimensionalArray(dtype, size) + items = DynamicOneDimensionalArray(dtype) if not _check_type(items, DynamicOneDimensionalArray): - raise ValueError("items is not of type, OneDimensionalArray") + raise ValueError("items is not of type, DynamicOneDimensionalArray") obj = object.__new__(cls) - obj.size, obj.items, obj.dtype = \ - size, items, items._dtype + obj.items, obj.dtype = \ + items, items._dtype return obj def push(self, x): - self.items.append(dtype.x) + self.items.append(x) def pop(self): - top_element = copy.deepcopy(self.items[self._last_pos_filled]) - self.items.delete(self._last_pos_filled) + top_element = dc(self.items[self.items._last_pos_filled]) + self.items.delete(self.items._last_pos_filled) return top_element @property def is_empty(self): - return self._last_pos_filled == 0 + return self.items._last_pos_filled is None @property def peek(self): - return self.items[self._last_pos_filled-1] + return self.items[self.items._last_pos_filled] def __str__(self): """ diff --git a/pydatastructs/miscellaneous_data_structures/tests/test_stack.py b/pydatastructs/miscellaneous_data_structures/tests/test_stack.py index 2522089be..5727240d6 100644 --- a/pydatastructs/miscellaneous_data_structures/tests/test_stack.py +++ b/pydatastructs/miscellaneous_data_structures/tests/test_stack.py @@ -4,22 +4,16 @@ def test_Stack(): - s = Stack(maxsize=3, top=0) + s = Stack() s.push(1) s.push(2) s.push(3) - assert s.top == 3 + assert s.peek == 3 assert str(s) == '[1, 2, 3]' - assert raises(ValueError, lambda: s.push(4)) assert s.pop() == 3 assert s.pop() == 2 assert s.pop() == 1 - assert s.top == 0 + assert s.is_empty is True assert raises(ValueError, lambda: s.pop()) - assert raises(ValueError, lambda: Stack()) - assert raises(TypeError, lambda: Stack(maxsize=8, top=3.5)) - assert raises(ValueError, lambda: Stack(maxsize=5, top=0, items=[1, 2, 3])) - assert raises(ValueError, lambda: Stack(maxsize=5, top=0, - items=OneDimensionalArray(int, 6))) - assert raises(NotImplementedError, lambda: Stack(implementation='', - maxsize=5, top=0)) + assert raises(ValueError, lambda: Stack(items=[1, 2, 3])) + assert raises(NotImplementedError, lambda: Stack(implementation='')) From 102927ca332f3429bb1bafc6c5ad4c344d557b2b Mon Sep 17 00:00:00 2001 From: Saptashrungi Date: Sun, 29 Dec 2019 15:28:11 +0530 Subject: [PATCH 03/11] debugged --- .../miscellaneous_data_structures/stack.py | 13 ++++++++----- .../tests/test_stack.py | 6 +++--- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/pydatastructs/miscellaneous_data_structures/stack.py b/pydatastructs/miscellaneous_data_structures/stack.py index 1d27a2dbe..78aa5e831 100644 --- a/pydatastructs/miscellaneous_data_structures/stack.py +++ b/pydatastructs/miscellaneous_data_structures/stack.py @@ -84,7 +84,7 @@ class ArrayStack(Stack): def __new__(cls, items=None, dtype=int): if items is None: - items = DynamicOneDimensionalArray(dtype) + items = DynamicOneDimensionalArray(dtype, 0) if not _check_type(items, DynamicOneDimensionalArray): raise ValueError("items is not of type, DynamicOneDimensionalArray") obj = object.__new__(cls) @@ -96,13 +96,16 @@ def push(self, x): self.items.append(x) def pop(self): - top_element = dc(self.items[self.items._last_pos_filled]) - self.items.delete(self.items._last_pos_filled) - return top_element + if(self.items._last_pos_filled==-1): + raise ValueError("stack is empty") + else: + top_element = dc(self.items[self.items._last_pos_filled]) + self.items.delete(self.items._last_pos_filled) + return top_element @property def is_empty(self): - return self.items._last_pos_filled is None + return self.items._last_pos_filled == -1 @property def peek(self): diff --git a/pydatastructs/miscellaneous_data_structures/tests/test_stack.py b/pydatastructs/miscellaneous_data_structures/tests/test_stack.py index 5727240d6..81dcd2089 100644 --- a/pydatastructs/miscellaneous_data_structures/tests/test_stack.py +++ b/pydatastructs/miscellaneous_data_structures/tests/test_stack.py @@ -13,7 +13,7 @@ def test_Stack(): assert s.pop() == 3 assert s.pop() == 2 assert s.pop() == 1 - assert s.is_empty is True - assert raises(ValueError, lambda: s.pop()) - assert raises(ValueError, lambda: Stack(items=[1, 2, 3])) + assert s.is_empty is True + assert raises(ValueError, lambda : s.pop()) + assert raises(ValueError, lambda : Stack(items=[1, 2, 3])) assert raises(NotImplementedError, lambda: Stack(implementation='')) From 8276bca82fc9ec82b1378725b88d2d0012b1fff3 Mon Sep 17 00:00:00 2001 From: Saptashrungi Date: Mon, 30 Dec 2019 00:25:08 +0530 Subject: [PATCH 04/11] white_spaces --- pydatastructs/miscellaneous_data_structures/stack.py | 4 ++-- .../miscellaneous_data_structures/tests/test_stack.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pydatastructs/miscellaneous_data_structures/stack.py b/pydatastructs/miscellaneous_data_structures/stack.py index 78aa5e831..e10634832 100644 --- a/pydatastructs/miscellaneous_data_structures/stack.py +++ b/pydatastructs/miscellaneous_data_structures/stack.py @@ -97,7 +97,7 @@ def push(self, x): def pop(self): if(self.items._last_pos_filled==-1): - raise ValueError("stack is empty") + raise ValueError("stack is empty") else: top_element = dc(self.items[self.items._last_pos_filled]) self.items.delete(self.items._last_pos_filled) @@ -105,7 +105,7 @@ def pop(self): @property def is_empty(self): - return self.items._last_pos_filled == -1 + return self.items._last_pos_filled == -1 @property def peek(self): diff --git a/pydatastructs/miscellaneous_data_structures/tests/test_stack.py b/pydatastructs/miscellaneous_data_structures/tests/test_stack.py index 81dcd2089..2c7656457 100644 --- a/pydatastructs/miscellaneous_data_structures/tests/test_stack.py +++ b/pydatastructs/miscellaneous_data_structures/tests/test_stack.py @@ -13,7 +13,7 @@ def test_Stack(): assert s.pop() == 3 assert s.pop() == 2 assert s.pop() == 1 - assert s.is_empty is True + assert s.is_empty is True assert raises(ValueError, lambda : s.pop()) assert raises(ValueError, lambda : Stack(items=[1, 2, 3])) assert raises(NotImplementedError, lambda: Stack(implementation='')) From 3dee6670f75b2f597774c427a5710a42e3e81547 Mon Sep 17 00:00:00 2001 From: Saptashrungi Date: Mon, 30 Dec 2019 00:35:09 +0530 Subject: [PATCH 05/11] latest commit --- pydatastructs/miscellaneous_data_structures/stack.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/pydatastructs/miscellaneous_data_structures/stack.py b/pydatastructs/miscellaneous_data_structures/stack.py index e10634832..44c61f694 100644 --- a/pydatastructs/miscellaneous_data_structures/stack.py +++ b/pydatastructs/miscellaneous_data_structures/stack.py @@ -19,13 +19,7 @@ class Stack(object): By default, 'array' Currently only supports 'array' implementation. - maxsize : int - The maximum size of the stack. - For array implementation. - top : int - The top element of the stack. - For array implementation. - items : OneDimensionalArray + items : DynamicOneDimensionalArray Optional, by default, None The inital items in the stack. For array implementation. @@ -39,12 +33,12 @@ class Stack(object): ======= >>> from pydatastructs import Stack - >>> s = Stack(maxsize=5, top=0) + >>> s = Stack() >>> s.push(1) >>> s.push(2) >>> s.push(3) >>> str(s) - '[1, 2, 3, None, None]' + '[1, 2, 3]' >>> s.pop() 3 0 From 94127932876d2cd56ffb9b74f2f71f000850e0b8 Mon Sep 17 00:00:00 2001 From: Saptashrungi Date: Mon, 30 Dec 2019 00:40:21 +0530 Subject: [PATCH 06/11] latest commit --- pydatastructs/miscellaneous_data_structures/stack.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pydatastructs/miscellaneous_data_structures/stack.py b/pydatastructs/miscellaneous_data_structures/stack.py index 44c61f694..099570dd1 100644 --- a/pydatastructs/miscellaneous_data_structures/stack.py +++ b/pydatastructs/miscellaneous_data_structures/stack.py @@ -41,7 +41,6 @@ class Stack(object): '[1, 2, 3]' >>> s.pop() 3 - 0 References ========== From 1f9d737248b0e1300f5faf07d4bd27fd222b0740 Mon Sep 17 00:00:00 2001 From: Saptashrungi Date: Mon, 30 Dec 2019 00:47:22 +0530 Subject: [PATCH 07/11] latest commit --- pydatastructs/miscellaneous_data_structures/stack.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pydatastructs/miscellaneous_data_structures/stack.py b/pydatastructs/miscellaneous_data_structures/stack.py index 099570dd1..3ca7a5497 100644 --- a/pydatastructs/miscellaneous_data_structures/stack.py +++ b/pydatastructs/miscellaneous_data_structures/stack.py @@ -41,6 +41,7 @@ class Stack(object): '[1, 2, 3]' >>> s.pop() 3 + References ========== From 28455e2937db67db881affa2644bf782ee4af882 Mon Sep 17 00:00:00 2001 From: Saptashrungi Date: Mon, 30 Dec 2019 01:15:05 +0530 Subject: [PATCH 08/11] latest commit --- pydatastructs/miscellaneous_data_structures/stack.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pydatastructs/miscellaneous_data_structures/stack.py b/pydatastructs/miscellaneous_data_structures/stack.py index 3ca7a5497..488fd40b6 100644 --- a/pydatastructs/miscellaneous_data_structures/stack.py +++ b/pydatastructs/miscellaneous_data_structures/stack.py @@ -41,7 +41,7 @@ class Stack(object): '[1, 2, 3]' >>> s.pop() 3 - + References ========== From 0846d8e24a571f0f0a8e805a92892684c24ca749 Mon Sep 17 00:00:00 2001 From: Saptashrungi Date: Mon, 30 Dec 2019 20:10:38 +0530 Subject: [PATCH 09/11] latest commit --- .../miscellaneous_data_structures/stack.py | 16 ++++++++-------- .../tests/test_stack.py | 3 ++- pydatastructs/trees/binary_trees.py | 6 +++--- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/pydatastructs/miscellaneous_data_structures/stack.py b/pydatastructs/miscellaneous_data_structures/stack.py index 488fd40b6..6899eb774 100644 --- a/pydatastructs/miscellaneous_data_structures/stack.py +++ b/pydatastructs/miscellaneous_data_structures/stack.py @@ -79,8 +79,8 @@ class ArrayStack(Stack): def __new__(cls, items=None, dtype=int): if items is None: items = DynamicOneDimensionalArray(dtype, 0) - if not _check_type(items, DynamicOneDimensionalArray): - raise ValueError("items is not of type, DynamicOneDimensionalArray") + else: + items = DynamicOneDimensionalArray(dtype, items) obj = object.__new__(cls) obj.items, obj.dtype = \ items, items._dtype @@ -90,12 +90,12 @@ def push(self, x): self.items.append(x) def pop(self): - if(self.items._last_pos_filled==-1): - raise ValueError("stack is empty") - else: - top_element = dc(self.items[self.items._last_pos_filled]) - self.items.delete(self.items._last_pos_filled) - return top_element + if self.is_empty: + raise ValueError("Stack is empty") + + top_element = dc(self.items[self.items._last_pos_filled]) + self.items.delete(self.items._last_pos_filled) + return top_element @property def is_empty(self): diff --git a/pydatastructs/miscellaneous_data_structures/tests/test_stack.py b/pydatastructs/miscellaneous_data_structures/tests/test_stack.py index 2c7656457..d8ee561ec 100644 --- a/pydatastructs/miscellaneous_data_structures/tests/test_stack.py +++ b/pydatastructs/miscellaneous_data_structures/tests/test_stack.py @@ -15,5 +15,6 @@ def test_Stack(): assert s.pop() == 1 assert s.is_empty is True assert raises(ValueError, lambda : s.pop()) - assert raises(ValueError, lambda : Stack(items=[1, 2, 3])) + _s = Stack(items=[1, 2, 3]) + assert str(_s) == '[1, 2, 3]' assert raises(NotImplementedError, lambda: Stack(implementation='')) diff --git a/pydatastructs/trees/binary_trees.py b/pydatastructs/trees/binary_trees.py index 3191d6a86..91fb96528 100644 --- a/pydatastructs/trees/binary_trees.py +++ b/pydatastructs/trees/binary_trees.py @@ -653,7 +653,7 @@ def _pre_order(self, node): """ visit = [] tree, size = self.tree.tree, self.tree.size - s = Stack(maxsize=size) + s = Stack() s.push(node) while not s.is_empty: node = s.pop() @@ -671,7 +671,7 @@ def _in_order(self, node): """ visit = [] tree, size = self.tree.tree, self.tree.size - s = Stack(maxsize=size) + s = Stack() while not s.is_empty or node is not None: if node is not None: s.push(node) @@ -689,7 +689,7 @@ def _post_order(self, node): """ visit = [] tree, size = self.tree.tree, self.tree.size - s = Stack(maxsize=size) + s = Stack() s.push(node) last = OneDimensionalArray(int, size) last.fill(False) From db7985830f6107115542e5eeb21cfd746904d3d5 Mon Sep 17 00:00:00 2001 From: Saptashrungi Date: Mon, 30 Dec 2019 21:11:43 +0530 Subject: [PATCH 10/11] modified --- AUTHORS | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS b/AUTHORS index edf1650a9..d883177ee 100644 --- a/AUTHORS +++ b/AUTHORS @@ -3,3 +3,4 @@ Kartikei Mittal Umesh<23umesh.here@gmail.com> Rohan Singh Tarun Singh Tomar +Saptashrungi Birajdar \ No newline at end of file From b4d728294cbf28efb3a898193f3eb87b83e33a82 Mon Sep 17 00:00:00 2001 From: Saptashrungi Date: Mon, 30 Dec 2019 22:05:46 +0530 Subject: [PATCH 11/11] modified --- AUTHORS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AUTHORS b/AUTHORS index d883177ee..3faf3f77e 100644 --- a/AUTHORS +++ b/AUTHORS @@ -2,5 +2,5 @@ Gagandeep Singh Kartikei Mittal Umesh<23umesh.here@gmail.com> Rohan Singh -Tarun Singh Tomar -Saptashrungi Birajdar \ No newline at end of file +Tarun Singh Tomar +Saptashrungi Birajdar \ No newline at end of file