From 5c5fcf2a42bd887824342f67da283cb2d4d51e95 Mon Sep 17 00:00:00 2001 From: Andrwaa <165920381+Andrwaa@users.noreply.github.com> Date: Sun, 22 Dec 2024 08:37:12 +0100 Subject: [PATCH 1/5] compare-method added to Vector class in lib.py --- linear_algebra/src/lib.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/linear_algebra/src/lib.py b/linear_algebra/src/lib.py index 5af6c62e3ad4..d7fb78ee305e 100644 --- a/linear_algebra/src/lib.py +++ b/linear_algebra/src/lib.py @@ -46,7 +46,6 @@ class Vector: change_component(pos: int, value: float): changes specified component euclidean_length(): returns the euclidean length of the vector angle(other: Vector, deg: bool): returns the angle between two vectors - TODO: compare-operator """ def __init__(self, components: Collection[float] | None = None) -> None: @@ -182,6 +181,15 @@ def angle(self, other: Vector, deg: bool = False) -> float: return math.degrees(math.acos(num / den)) else: return math.acos(num / den) + def __eq__(self, vector: object) -> bool: + """ + performs the comparison between two vectors + """ + if not isinstance(vector, Vector): + return NotImplemented + if len(self) != len(vector): + return False + return all(self.component(i) == vector.component(i) for i in range(len(self))) def zero_vector(dimension: int) -> Vector: @@ -433,3 +441,4 @@ def random_matrix(width: int, height: int, a: int, b: int) -> Matrix: [random.randint(a, b) for _ in range(width)] for _ in range(height) ] return Matrix(matrix, width, height) + From 5eb2483a43429f45ea99b1a5b0d7b3bd78f8d21e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 22 Dec 2024 07:38:00 +0000 Subject: [PATCH 2/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- linear_algebra/src/lib.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linear_algebra/src/lib.py b/linear_algebra/src/lib.py index d7fb78ee305e..5aad460b149b 100644 --- a/linear_algebra/src/lib.py +++ b/linear_algebra/src/lib.py @@ -181,6 +181,7 @@ def angle(self, other: Vector, deg: bool = False) -> float: return math.degrees(math.acos(num / den)) else: return math.acos(num / den) + def __eq__(self, vector: object) -> bool: """ performs the comparison between two vectors @@ -441,4 +442,3 @@ def random_matrix(width: int, height: int, a: int, b: int) -> Matrix: [random.randint(a, b) for _ in range(width)] for _ in range(height) ] return Matrix(matrix, width, height) - From aeca5c146a7f1ef95e90cfeebc8da7f573e3e778 Mon Sep 17 00:00:00 2001 From: Andrwaa <165920381+Andrwaa@users.noreply.github.com> Date: Sat, 28 Dec 2024 11:11:47 +0100 Subject: [PATCH 3/5] Updated lib.py with suggestions --- linear_algebra/src/lib.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/linear_algebra/src/lib.py b/linear_algebra/src/lib.py index 5aad460b149b..cb00a285b872 100644 --- a/linear_algebra/src/lib.py +++ b/linear_algebra/src/lib.py @@ -95,6 +95,14 @@ def __sub__(self, other: Vector) -> Vector: else: # error case raise Exception("must have the same size") + def __eq__(self, other: object) -> bool: + """ + performs the comparison between two vectors + """ + if len(self) != len(other): + return False + return all(self.component(i) == other.component(i) for i in range(len(self))) + @overload def __mul__(self, other: float) -> Vector: ... @@ -182,16 +190,6 @@ def angle(self, other: Vector, deg: bool = False) -> float: else: return math.acos(num / den) - def __eq__(self, vector: object) -> bool: - """ - performs the comparison between two vectors - """ - if not isinstance(vector, Vector): - return NotImplemented - if len(self) != len(vector): - return False - return all(self.component(i) == vector.component(i) for i in range(len(self))) - def zero_vector(dimension: int) -> Vector: """ From 4816439a096cf5ec7ba2951d95c2ca6bded639b7 Mon Sep 17 00:00:00 2001 From: Andrwaa <165920381+Andrwaa@users.noreply.github.com> Date: Sat, 28 Dec 2024 11:14:04 +0100 Subject: [PATCH 4/5] Updated lib.py with suggestions --- linear_algebra/src/lib.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linear_algebra/src/lib.py b/linear_algebra/src/lib.py index cb00a285b872..3c53321ec7b2 100644 --- a/linear_algebra/src/lib.py +++ b/linear_algebra/src/lib.py @@ -95,7 +95,7 @@ def __sub__(self, other: Vector) -> Vector: else: # error case raise Exception("must have the same size") - def __eq__(self, other: object) -> bool: + def __eq__(self, other: Vector) -> bool: """ performs the comparison between two vectors """ From bbeeb18ae50e870d7d944cbf9e8dc2673fccaa41 Mon Sep 17 00:00:00 2001 From: Andrwaa <165920381+Andrwaa@users.noreply.github.com> Date: Sat, 28 Dec 2024 12:04:00 +0100 Subject: [PATCH 5/5] Updated lib.py with __eq__ method --- linear_algebra/src/lib.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/linear_algebra/src/lib.py b/linear_algebra/src/lib.py index 3c53321ec7b2..0d6a348475cd 100644 --- a/linear_algebra/src/lib.py +++ b/linear_algebra/src/lib.py @@ -95,10 +95,12 @@ def __sub__(self, other: Vector) -> Vector: else: # error case raise Exception("must have the same size") - def __eq__(self, other: Vector) -> bool: + def __eq__(self, other: object) -> bool: """ performs the comparison between two vectors """ + if not isinstance(other, Vector): + return NotImplemented if len(self) != len(other): return False return all(self.component(i) == other.component(i) for i in range(len(self)))