Kodowanie RLE

Zadania teoretyczne: kompresja, sieci i bezpieczeństwo - Informatyka - liceum klasa 4, zakres rozszerzony (Python)

Kodowanie długości serii (RLE) zapisuje serię jednakowych znaków jako liczbę i znak: `AAAABBC` to `4A2B1C`. Opłaca się przy długich seriach (obrazy z dużymi jednolitymi plamami), a przy krótkich wydłuża dane. **Stopień kompresji** to długość po zakodowaniu podzielona przez długość przed.

def rle(s):
    out, i = "", 0
    while i < len(s):
        j = i
        while j < len(s) and s[j] == s[i]:
            j += 1
        out += str(j - i) + s[i]
        i = j
    return out

for s in ["AAAABBC", "WWWWWWWWWWBWWWWWWWWW", "ABCD"]:
    code = rle(s)
    print(s, "->", code, round(len(code) / len(s), 2))

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu Informatyka - liceum klasa 4, zakres rozszerzony·Zaloguj się, aby zapisać postęp na koncie.