diff --git a/main.py b/main.py index 87fe260..3d418e8 100644 --- a/main.py +++ b/main.py @@ -1,15 +1,59 @@ import itertools +class Poly: + + def __init__(self, elements): + self.elements = {} + + i = len(elements) - 1 + for e in reversed(elements): + self.elements[f"x{i}"] = e + i -= 1 + + def __str__(self): + return str(self.elements) + + def __mul__(self, other): + elements = {} + + for e in self.elements: + for f in other.elements: + coefficient = self.elements[e] * other.elements[f] + degree = f"x{int(e[1:])+int(f[1:])}" + + if elements.get(f"{degree}") is None: + elements[degree] = coefficient + else: + elements[degree] += coefficient + + return Poly(list(reversed(list(elements.values())))) + + def __mod__(self, other): + elements = {} + class PolyIntField: def __init__(self, int_modulo, poly_modulo): self.int_modulo = int_modulo - self.poly_modulo = poly_modulo + self.poly_modulo = Poly(poly_modulo) self.elements = list(itertools.product([x for x in range(0, int_modulo)] , repeat=len(poly_modulo) - 1)) + def get_nilpotents(self): + nilpotents = [] + + # for element in self.elements: + + + if __name__ == "__main__": - a = PolyIntField(3, [1, 1, 2, 2]) - print(a.elements) - print(len(a.elements)) \ No newline at end of file + # a = PolyIntField(3, [1, 1, 2, 2]) + # print(a.elements) + # print(len(a.elements)) + b = Poly([4, 8, 1, 3]) + c = Poly([1, 4]) + + print(b.elements) + print(b * c * c) + # c = Poly() \ No newline at end of file