Een $$(n,M=2^m,d)$$-code is een binaire code, waarbij de codewoorden $$n$$ symbolen lang zijn, en waarvan er $$M=2^m$$ effectief gebruikt worden. Er zijn dus $$m$$ "nuttige" bits en $$n-m \ge 0$$ "controle" (of "checksum") bits. De grootheid $$d$$ stelt de minimale Hammingafstand tussen twee verschillende codewoorden voor.

Programmeer het onderstaande in de klasse Code:

TIP: Je zal in je code voor de methode decodeer over alle bitpatronen van lengte $m$ itereren. Bekijk de functie product() uit de module itertools om dit makkelijk mogelijk te maken !

Je hoeft je code voor de klasse BinaireVeelterm niet mee in te dienen (maar dit mag wel).

Voorbeeld

code = Code(15, 11, BinaireVeelterm(set([0, 1, 4])))
print(code)                               # (15,2048)[x**4+x**1+1]
w_n = [1,1,0,0,0,0,0,0,0,0,0]
w_m = code.codeer(w_n)
print(w_m)                         
# [1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
print(code.decodeer(w_m))         
# [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
w_m[3] = 1
print(code.decodeer(w_m))                 # []
print(code.corrigeer(w_m))                
# [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]