Skip to content

Commit

Permalink
Update name of vectorstack to numericstack and add additional functio…
Browse files Browse the repository at this point in the history
…nality
  • Loading branch information
ABDreos committed Mar 12, 2024
1 parent d7f22df commit b78df34
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 16 deletions.
8 changes: 4 additions & 4 deletions 2024/tuesday_tips/generics/main.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from stack import Stack
from vector_stack import VectorStack
from numeric_stack import NumericStack


def main() -> None:
Expand All @@ -9,11 +9,11 @@ def main() -> None:

print(f"Stack of ints: {stack}")

vector_stack = VectorStack[int]()
numeric_stack = NumericStack[int]()

vector_stack.push(1)
numeric_stack.push(1)

print(f"Vector of ints: {vector_stack}")
print(f"Vector of ints: {numeric_stack}")


if __name__ == "__main__":
Expand Down
34 changes: 34 additions & 0 deletions 2024/tuesday_tips/generics/numeric_stack.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
from typing import Literal
from stack import Stack


class NumericStack[T: (int, float)](Stack[T]):
def __getitem__(self, index: int) -> T:
return self._container[index]

def __setitem__(self, index: int, value: T) -> None:
if 0 <= index < len(self._container):
self._container[index] = value
else:
raise IndexError("Stack index out of range")

def sum(self) -> T | Literal[0]:
return sum(self._container)

def average(self) -> float:
if self.is_empty():
return 0

total: T | Literal[0] = self.sum()

return total / self.size()

def max(self) -> T | None:
if self.is_empty():
return None
return max(self._container)

def min(self) -> T | None:
if self.is_empty():
return None
return min(self._container)
12 changes: 0 additions & 12 deletions 2024/tuesday_tips/generics/vector_stack.py

This file was deleted.

0 comments on commit b78df34

Please sign in to comment.