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.

Voorbeeld:

>>> 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