From 01eda97ff64ad2570b7105cc5b734f488ce0d47a Mon Sep 17 00:00:00 2001
From: Hong-Phuc Bui <hong-phuc.bui@htwsaar.de>
Date: Wed, 04 Jun 2025 18:30:14 +0200
Subject: [PATCH] Implement plus operator
---
polymonial/polynomial.py | 34 +++++++++++++++++++++++++++++++++-
1 files changed, 33 insertions(+), 1 deletions(-)
diff --git a/polymonial/polynomial.py b/polymonial/polynomial.py
index b847224..2ca4f73 100644
--- a/polymonial/polynomial.py
+++ b/polymonial/polynomial.py
@@ -1,7 +1,11 @@
class Polynomial:
def __init__(self, *argv: float):
+ if len(argv) < 1:
+ raise ValueError("A Polynomial has at least one coefficient.")
+ if argv[-1] == 0:
+ raise ValueError("The coefficient at the highest degree must not be zero.")
self.__coefficients = tuple(argv)
-
+ self.__order = len(argv)
def evaluate(self, x: float) -> tuple[float, list[float]]:
p = self.__coefficients[-1]
@@ -11,8 +15,36 @@
c.insert(0, p)
return c[0], c[1:]
+ def order(self):
+ return self.__order
+
+ def __add__(self, other: "Polynomial") -> "Polynomial":
+ if not isinstance(other, Polynomial):
+ raise ValueError("Operator + is only applicable for Polynomial.")
+ coefficients = []
+ if self.__order > other.__order:
+ low_order = other.__order
+ heigh_order = self.__order
+ higher_coefficients = self.__coefficients
+ else:
+ low_order = self.__order
+ heigh_order = other.__order
+ higher_coefficients = other.__coefficients
+
+ for i in range(0, low_order):
+ coefficients.append(self.__coefficients[i] + other.__coefficients[i])
+ for j in range(i+1, heigh_order):
+ coefficients.append(higher_coefficients[j])
+ return Polynomial(*coefficients)
+
+ def __getitem__(self, key):
+ return self.__coefficients[key]
+
+
def __repr__(self) -> str:
coe = []
for c in self.__coefficients:
coe.append(f'{c}')
return ' '.join(coe)
+
+
--
Gitblit v1.10.0