Een positiestelsel1 is een talstelsel2 waarin een getal wordt voorgesteld door een reeks symbolen — doorgaans worden hiervoor Arabische cijfers en kleine letters gebruikt — waarvan de positie op basis van een gekozen grondtal de bijdrage aan het getal bepaalt. Het gebruikelijke grondtal is tien. Men twijfelt er niet aan dat dit grondtal is ontstaan doordat de mensen op hun vingers telden. Een getal als 1234 heeft dan de betekenis: $$1 \times 1000 + 2 \times 100 + 3 \times 10 + 4 \times 1$$. De positie van een cijfer bepaalt de bijdrage in machten van het grondtal 10 aan het getal.

Een natuurlijk getal $$x$$ laat zich in het decimale positiestelsel uitdrukken als een reeks termen van machten van een ander natuurlijk getal: het grondtal $$a$$: \[x = \sum_{i=0}^kx_ia^i\] of \[x = x_ka^k + \ldots + x_2a^2 + x_1a^1 + x_0a^0\] waarbij voor de coëfficiënten $$x_i \in \mathbb{N}$$ geldt dat $$0 \leq x_i < a$$. In het $$a$$-tallige stelsel wordt $$x$$ dan voorgesteld als de reeks symbolen: \[x_k\ldots x_2x_1x_0\] De coëfficiënten $$x_i$$ vormen in volgorde de symbolen van het getal. Het meest linkse symbool $$x_k$$ is de coëfficiënt van de hoogste macht van het grondtal, het meest rechtse $$x_0$$ de coëfficiënt van de eenheden (de 0-de macht van het grondtal).

Zo wordt in het 7-tallig stelsel het getal $$1234_{10}$$ geschreven als $$3412_7$$, want: \[1234_{10} = 3 \times 7^3+ 4 \times 7^2 + 1 \times 7^1 + 2 \times 7^0\]

Opgave

Schrijf een functie positiestelsel die de voorstelling van een getal in een positiestelsel met een gegeven grondtal $$a_1$$ omzet in de voorstelling van datzelfde getal, maar dan in een positiestelsel met een ander grondtal $$a_2$$. Aan deze functie moeten de volgende drie parameters doorgegeven worden:

def positiestelsel(getal, grondtal1, grondtal2)

De functie moet een string teruggeven die het getal in het positiestelsel met grondtal $$a_2$$ voorstelt. Je mag ervan uitgaan dat $$0 < a_1, a_2 \leq 36$$. Bij de stringvoorstelling van getallen in een positiestelsel worden de gangbare symbolen gebruikt:

Voorbeeld

>>> positiestelsel('1234', 10, 7)
'3412'
>>> positiestelsel('1234', 10, 16)
'4d2'
>>> positiestelsel('4d2', 16, 10)
'1234'
>>> bin(1234)[2:] == positiestelsel('1234', 10, 2)
True
>>> oct(1234)[2:] == positiestelsel('1234', 10, 8)
True
>>> hex(1234)[2:] == positiestelsel('1234', 10, 16)
True