Een $$\verb!Bericht!$$ dat over een netwerk (dat aan fouten onderhevig is) gestuurd wordt, wordt gekenmerkt door de boodschap die verstuurd wordt en de $$\verb!Code!$$ die gebruikt wordt om de communicatie foutbestendig te maken.

Programmeer het onderstaande in de klasse $$\verb!Bericht!$$:

Om dit te testen krijg je de functie $$\verb!ruis(bitlijst, n, a)!$$ gegeven, met als argumenten:

Dien je oplossing voor de klassen $$\verb!BinaireVeelterm!$$, $$\verb!Code!$$ en $$\verb!Bericht!$$ in.

import random
def ruis(bit, n, a):
	for i in range(len(bit)//n):
		index = list(range(n))
		random.shuffle(index)
		for j in range(a):
			bit[i*n+index[j]] = 1 if bit[i*n+index[j]] == 0 else 0

Voorbeeld

b_A = Bericht('A', code)
print(b_A)                      # [A](15,2048)[x**4+x**1+1]
c_A = b_A.codeer()
print(str(c_A))                 # [1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0]
b_cA = Bericht('?', code)
b_cA.decodeer(c_A)
print(b_cA)                     # [A](15,2048)[x**4+x**1+1]

b_AB = Bericht('AB', code)
print(b_AB)                     # [AB](15,2048)[x**4+x**1+1]
c_AB = b_AB.codeer()
print(str(c_AB))                # [1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1,
								#  0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
b_cAB = Bericht('?', code)
b_cAB.decodeer(c_AB)
print(b_cAB)                    # [AB](15,2048)[x**4+x**1+1]

b_w = Bericht('abc123', code)
print(b_w)                      # [abc123](15,2048)[x**4+x**1+1]
c = b_w.codeer()
print(str(c))                    # [1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0,
								#  0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1,
								#  1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0,
								#  1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0,
								#  1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
b_c = Bericht('?', code)
b_c.decodeer(c)                    # [abc123](15,2048)[x**4+x**1+1]
print(b_c))
print(b_c)