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.