diff --git a/main.py b/main.py index 5623d29c100700219e0d3cde77b94bf671de3091..2037ad7966adfd6eb0456f6fd4a427872d7c8bfa 100644 --- a/main.py +++ b/main.py @@ -3,8 +3,26 @@ from polynome import * from reed_solomon import * +def correct_list(len_list: int, p: polynome): + corrected = [] + + for x in range(len_list): + corrected.append(p.evaluate(x)) + + return corrected + + if __name__ == "__main__": - - 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() + l = [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(l) + + l_ok = correct_list(len(l), reed_solomon) + + print(l) + print(l_ok) + + print("".join(map(chr, l[:25]))) + print("".join(map(chr, l_ok[:25]))) + + + \ No newline at end of file diff --git a/reed_solomon.py b/reed_solomon.py index 0e675621383f9c081a302f070f7bfb2875fa7c80..de9a566ba318b7a586c8f802bee31ed80214de3d 100644 --- a/reed_solomon.py +++ b/reed_solomon.py @@ -3,8 +3,8 @@ from polynome import * from inverse_mult import * from itertools import combinations -def get_possibilities(l: list, index: int): - +def get_possibilities(l_og: list, index: int): + l = l_og.copy() # Transforme the list in list of tupples with their indexes for x, _ in enumerate(l): l[x] = (x, l[x]) @@ -36,18 +36,15 @@ def lagrange_compute(l: list) -> polynome: 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])}") + for counter, item in enumerate(l): + if (item % p.prime_mod) != (p.evaluate(counter) % p.prime_mod): nbr_error += 1 return nbr_error def reed_decode(l: list) -> polynome: - # print("test") 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