Het Galoisveld \(\textbf{GF}(2^n)\) wordt geconstrueerd met een irreduciebele veelterm \(h\). De veelterm \(h(x) = x^n + c_{n-1} x^{n - 1} + \cdots + c_0\) wordt voorgesteld als bitstring “\(1 c_{n-1} \cdots c_0\)”.
Implementeer de procedure print_zech_log(h: str) -> None
die de drie eerste kolommen uitschrijft van de Zech Loch tabel voor het Galoisveld \(\textbf{GF}(2^n)\), geconstrueerd met voorbrengende veelterm \(h(x)\). De vierde kolom moet je dus niet toevoegen.
Je mag veronderstellen dat de veelterm h
een irreduciebele veelterm voorstelt, waarbij \(\alpha\) een generator is van het bijhorende Galoisveld \(\textbf{GF}(2^n)\).
In de uitvoer bevat de eerste kolom de letterlijke tekst “a^k” waarbij k vervangen wordt door de macht. Tussen twee kolommen staan telkens twee spaties. De elementen van het Galoisveld \(\textbf{GF}(2^n)\) worden als string uitgeschreven.
Gebruik de functie maal_alfa
uit de vorige vraag. Als je deze functie niet hebt geschreven, dan kan je hier toch de code indienen.
In deze oefening is het niet zo belangrijk dat de testset in Dodona helemaal correct is, maar de uitvoer moet wel zo goed mogelijk onderstaand voorbeeld imiteren.
>>> print_zech_log("1101")
a^1 010 011
a^2 100 101
a^3 101 100
a^4 111 110
a^5 011 010
a^6 110 111
a^7 001 000