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 BinaireVeelterm
:
set([4, 5, 0])
. Een lege verzameling stelt de nulveelterm voor.
Let erop om uit de argumentverzameling alle strikt negatieve getallen weg te filteren.
graad
: levert de graad van de veelterm op c
: levert een coëfficiëntenLIJST van de veelterm op. Hierin
stelt c[i]
de coëfficiënt van $$x^i$$ voor. De lijst is dus 1 langer
dan de graad van de veelterm, en bevat typisch zowel '1'-en als '0'-en (geheel). Voor de nulveelterm kiezen we als voorstelling de lijst [0]
__str__()
die de veelterm afdrukt als som van niet-nultermen.
Indien het om de nulveelterm gaat, wordt 0
weergegeven. De constante term
wordt als 1
weergegeven (indien aanwezig). Alle andere termen worden
voorgesteld als x**macht
, indien de term aanwezig is in de veelterm.
Op die manier wordt de veelterm met coëfficiëntenverzameling set([0, 5, 4])
afgedrukt als x**5+x**4+1
. De termen worden in afdalende graad weergegeven.
==
die aangeeft wanneer 2 veeltermen identiek zijn.
__repr__()
-methode.
+
: berekent een nieuwe veelterm als som van de operandi. TIP: denk na hoe je dit rechtstreeks via bewerkingen op verzamelingen kan realiseren (de operator kan makkelijk via 1 codelijn gerealiseerd worden).
*
: berekent een nieuwe veelterm als het product van de operandi.
v0 = BinaireVeelterm(set([6, 4, 0, 3])) print(v0) # x**6+x**4+x**3+1 v1 = BinaireVeelterm(set([3, 8, 8, 1])) print(v1) # x**8+x**3+x**1 v2 = BinaireVeelterm([]) print(v2) # 0 print(v0.graad) # 6 print(v0.c) # [1, 0, 0, 1, 1, 0, 1] print(v1.graad) # 8 print(v1.c) # [0, 1, 0, 1, 0, 0, 0, 0, 1] print(v2.graad) # 0 print(v2.c) # [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