Een binaire veelterm is een veelterm waarvan de coëfficiënten 0 of 1 zijn. Bewerkingen op de coëfficiënten van de veelterm worden steeds modulo 2 uitgevoerd. Programmeer het onderstaande in de klasse $$\verb!BinaireVeelterm!$$:

Ter herinnering: nemen we de veeltermen $$a(x)$$ en $$b(x)$$ als

$$a(x)=\sum_{i=0}^{N}a_ix^i$$

en

$$b(x)=\sum_{i=0}^{M}b_ix^i$$

(dus respectievelijk van de graad $$N$$ en $$M$$), dan wordt hun product

$$c(x)=a(x)b(x)$$

gegeven door

$$c(x)=\sum_{k=0}^{M+N}\big(\sum_{l=0}^{k}a_l b_{k-l} \big) x^k$$

De coëfficiënten van de veelterm

$$c(x)=\sum_{k=0}^{M+N}c_kx^k$$

van de graad $$M+N$$ worden dus gegeven door

$$c_k=\sum_{l=0}^{k}a_l b_{k-l}$$

Voorbeeld

v0 = BinaireVeelterm([6, 4, 0, 3])
print(v0)                            # x**6+x**4+x**3+1
v1 = BinaireVeelterm([3, 8, 8, 1])
print(v1)                            # x**8+x**3+x**1
v2 = BinaireVeelterm([])
print(v2)                            # 0
print(v0.get_graad())                # 6
print(v0.get_coef())                 # [1, 0, 0, 1, 1, 0, 1]
print(v1.get_graad())                # 8
print(v1.get_coef())                 # [0, 1, 0, 1, 0, 0, 0, 0, 1]
print(v2.get_graad())                # 0
print(v2.get_coef())                 # [0]
print(v0 + v1)                       # x**8+x**6+x**4+x**1+1
print(v0 * v1)                       # x**14+x**12+x**11+x**9+x**8+x**6+x**5+x**4+x**3+x**1