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

Programmeer het onderstaande in de klasse Bericht:

Om dit te testen krijg je de functie ruis(bitlijst, n, a) gegeven, met als argumenten:
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

TIP: In je code zal je een bericht (string) moeten omzetten naar een bitpatroon. Hierbij kunnen volgende tips helpen om je code wat compacter te houden:

Je hoeft je oplossing voor de klassen BinaireVeelterm en Code niet mee in te dienen op Dodona (maar dit mag wel).

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)