Kiedy RLE się nie opłaca

Kompresja bezstratna: kodowanie RLE - Algorytmy: zakres rozszerzony (Python)

Dla danych bez powtórzeń RLE dopisuje do każdego znaku liczbę, więc wynik jest **dłuższy** niż dane. Kompresja stratna (JPEG, MP3) odrzuca szczegóły, których człowiek nie zauważy, i dlatego zmniejsza pliki dużo bardziej, ale oryginału nie da się już odtworzyć. Bezstratne metody stosowane w praktyce (np. w ZIP i PNG) łączą kilka sprytniejszych pomysłów.

def rle_encode(text):
    result = ""
    i = 0
    while i < len(text):
        j = i
        while j < len(text) and text[j] == text[i]:
            j += 1
        result += str(j - i) + text[i]
        i = j
    return result


for text in ["BBBBBBBBBBBBWWWWWWWWWWWW", "INFORMATYKA"]:
    code = rle_encode(text)
    print(text, "->", code, f"({len(text)} -> {len(code)} znaków)")

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

Wszystkie lekcje kursu Algorytmy: zakres rozszerzony·Zaloguj się, aby zapisać postęp na koncie.