Skip to content
Snippets Groups Projects
Commit f404be30 authored by quentin.fasler's avatar quentin.fasler
Browse files
parents 4e2b959e eea1ca3f
No related branches found
No related tags found
No related merge requests found
......@@ -32,7 +32,7 @@ class Polynomial:
raise TypeError('The "value" parameter is not of type tuple.')
self.value = value
def pass_x_throughout(self, x):
def evaluate_x(self, x):
"""Evaluate the polynomial by passing x
Args:
......@@ -60,20 +60,10 @@ class Polynomial:
a = list(self.value)
b = list(other.value)
a_count = len(a)
b_count = len(b)
if a_count > b_count:
diff = a_count - b_count
for x in range(diff):
b.append(0)
else:
diff = b_count - a_count
for x in range(diff):
a.append(0)
c = [0] * len(a)
for x in range(len(a)):
c[x] = a[x] + b[x]
c = []
# itertools pad 0 to the lowest list
for (a, b) in itertools.zip_longest(a, b, fillvalue=0):
c.append(a + b)
return Polynomial(tuple(c))
......@@ -239,7 +229,7 @@ def reed_solomon(points, data_length, last_error_index, prime_number):
for p in points:
x = p[0]
# Pass the x value of each points through the lagrange polynomial
y = lagrange.pass_x_throughout(x) % prime_number
y = lagrange.evaluate_x(x) % prime_number
# If the result is the same that the y value, then the point is correct
if y == p[1]:
nb_valid_points += 1
......@@ -249,7 +239,7 @@ def reed_solomon(points, data_length, last_error_index, prime_number):
# Decode the message
output = ""
for i in range(data_length):
output += chr(lagrange.pass_x_throughout(i) % prime_number)
output += chr(lagrange.evaluate_x(i) % prime_number)
return output
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment