From e4aa26f3fec6056bb3cec9945ecbf78f8c8a3135 Mon Sep 17 00:00:00 2001
From: Nicolas <nicolas.albanesi@etu.hesge.ch>
Date: Tue, 14 Dec 2021 19:15:30 +0100
Subject: [PATCH] Fixed lagrange_compute

---
 reed_solomon.py | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/reed_solomon.py b/reed_solomon.py
index 9952ec0..0e67562 100644
--- a/reed_solomon.py
+++ b/reed_solomon.py
@@ -26,9 +26,9 @@ def lagrange_compute(l: list) -> polynome:
 	for x_i, y_i in enumerate(l):
 		poly_n = polynome([1])
 		for x_k, y_k in enumerate(l):
-			if x_k != x_i:
-				d = inverse_mult((x_i-x_k) % poly_n.prime_mod, poly_n.prime_mod)
-				poly_n = poly_n.mul(polynome([-x_k * d % poly_n.prime_mod, d % poly_n.prime_mod]))
+			if y_k[0] != y_i[0]:
+				d = inverse_mult((y_i[0]-y_k[0]) % poly_n.prime_mod, poly_n.prime_mod)
+				poly_n = poly_n.mul(polynome([-y_k[0] * d % poly_n.prime_mod, d % poly_n.prime_mod]))
 		poly_n = poly_n.mul(polynome([y_i[1] % poly_n.prime_mod]))
 		poly = poly.add(poly_n)
 	return poly
@@ -38,18 +38,17 @@ def check_nb_error(l: list, p: polynome) -> int:
 	nbr_error = 0
 	for item in l:
 		if (item[1] % p.prime_mod) != (p.evaluate(item[0]) % p.prime_mod):
-			print(f"DEBUG PURPOSES ONLY {item[1]} != p.evaluate({item[0]}) = {p.evaluate(item[0])}")
+			# print(f"DEBUG PURPOSES ONLY {item[1]} != p.evaluate({item[0]}) = {p.evaluate(item[0])}")
 			nbr_error += 1
 	return nbr_error
 
 
 def reed_decode(l: list) -> polynome:
 	# print("test")
-	for points in get_possibilities(l):
-		# print(f"{points}")
-		# lagrange_compute(points).show()
+	for points in get_possibilities(l, 20):
 		err = check_nb_error(l, lagrange_compute(points))
 		print(f"{err=}")
 		if ((err) <= 9):
+			# ? Chercher un polynome avec moins de 9 erreurs ?
 			# Possibilité d'optimiser en evitant de compute 2 fois le poly
 			return lagrange_compute(points)
\ No newline at end of file
-- 
GitLab