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: ...@@ -32,7 +32,7 @@ class Polynomial:
raise TypeError('The "value" parameter is not of type tuple.') raise TypeError('The "value" parameter is not of type tuple.')
self.value = value self.value = value
def pass_x_throughout(self, x): def evaluate_x(self, x):
"""Evaluate the polynomial by passing x """Evaluate the polynomial by passing x
Args: Args:
...@@ -60,20 +60,10 @@ class Polynomial: ...@@ -60,20 +60,10 @@ class Polynomial:
a = list(self.value) a = list(self.value)
b = list(other.value) b = list(other.value)
a_count = len(a) c = []
b_count = len(b) # itertools pad 0 to the lowest list
if a_count > b_count: for (a, b) in itertools.zip_longest(a, b, fillvalue=0):
diff = a_count - b_count c.append(a + b)
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]
return Polynomial(tuple(c)) return Polynomial(tuple(c))
...@@ -239,7 +229,7 @@ def reed_solomon(points, data_length, last_error_index, prime_number): ...@@ -239,7 +229,7 @@ def reed_solomon(points, data_length, last_error_index, prime_number):
for p in points: for p in points:
x = p[0] x = p[0]
# Pass the x value of each points through the lagrange polynomial # 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 the result is the same that the y value, then the point is correct
if y == p[1]: if y == p[1]:
nb_valid_points += 1 nb_valid_points += 1
...@@ -249,7 +239,7 @@ def reed_solomon(points, data_length, last_error_index, prime_number): ...@@ -249,7 +239,7 @@ def reed_solomon(points, data_length, last_error_index, prime_number):
# Decode the message # Decode the message
output = "" output = ""
for i in range(data_length): 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 return output
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment