diff --git a/main.py b/main.py index f0006fb305e5cda80c4ccd60d69b4a57dcca7e1e..c3c265d6da2be05488847f7ac929048449d085b1 100644 --- a/main.py +++ b/main.py @@ -1,10 +1,10 @@ # MAIN FILE TO TEST FUNCTIONS from polynome import * +from reed_solomon import * if __name__ == "__main__": - pol1 = polynome([1, 2, 3, 4, 5]) - pol2 = polynome([2, 3, 4, 4, 4]) - # pol3 = pol1.add(pol2) - pol1.show() - pol1.evaluate(2) \ No newline at end of file + + reed_solomon = reed_decode([115, 117, 101, 118, 122, 116, 57, 108, 32, 224, 62, 116, 115, 140, 32, 108, 153, 83, 169, 117, 108, 112, 32, 110, 101, 55, 96, 61, 160, 218, 228, 156, 224, 203, 12, 75, 180, 23, 220, 211, 137, 139, 206]) + # reed_solomon = reed_decode([2, 3 ,4]) + reed_solomon.show() diff --git a/reed_solomon.py b/reed_solomon.py index 1183dc3180cea2cb3da1ded62f04b32ae51d54d1..9952ec01d48439ccc0e4a82b7d0a6a8cafc8067b 100644 --- a/reed_solomon.py +++ b/reed_solomon.py @@ -9,8 +9,6 @@ def get_possibilities(l: list, index: int): for x, _ in enumerate(l): l[x] = (x, l[x]) - # ! la valeur 20 est hardcodée. Paramètre de fonction ?? - l_fixe = l[index:] # Liste contenant aucune erreur l_posi = l[:index] # Liste contenant des erreurs, @@ -38,15 +36,20 @@ def lagrange_compute(l: list) -> polynome: def check_nb_error(l: list, p: polynome) -> int: nbr_error = 0 - for _, item in enumerate(l): - if (item % p.prime_mod) != (p.evaluate(_) % p.prime_mod): - print(f"DEBUG PURPOSES ONLY {item} != p.evaluate({_}) = {p.evaluate(_)}") + 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])}") nbr_error += 1 return nbr_error def reed_decode(l: list) -> polynome: + # print("test") for points in get_possibilities(l): - if (check_nb_error(l, lagrange_compute(points)) <= 9): + # print(f"{points}") + # lagrange_compute(points).show() + err = check_nb_error(l, lagrange_compute(points)) + print(f"{err=}") + if ((err) <= 9): # Possibilité d'optimiser en evitant de compute 2 fois le poly return lagrange_compute(points) \ No newline at end of file