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.