Extra

Functie 1

Schrijf een functie compress(s), waarvan het argument een binaire string s is met een lengte van minder dan of gelijk aan 64 en dat als resultaat een andere binaire string teruggeeft. De resulterende binaire string zou een run-length codering van het origineel moeten zijn, zoals hierboven beschreven.

def compress(s):
    result = ""
    while len(s) > 0:
        cnt = count(s[0], s)
        bi = num_to_base_b(cnt, 2)
        bi = (7 - len(bi)) * "0" + bi
        result = result + s[0] + bi
        s = s[cnt:]
    return result

Functie 2

Schrijf vervolgens een functie uncompress(c) die het comprimeren van de functie compress “omkeert” of “ongedaan maakt”.

Dat wil zeggen, uncompress(compress(s)) zou s moeten teruggeven.

def uncompress(s):
    result = ""
    while len(s) > 0:
        c = s[0]
        bi = s[1:8]
        cnt = base_b_to_num(bi, 2)
        result = cnt * c + result
        s = s[8:]
    return result