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 $$\verb!Code!$$:

Opdrachten

Dien zowel je oplossing voor beide klassen $$\verb!BinaireVeelterm!$$ en $$\verb!Code!$$ in.

Voorbeeld

code = Code(15, 11, BinaireVeelterm([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]