Kod stałej i zmiennej długości
Kod Huffmana: częstsze znaki krótszym kodem - Informatyka - liceum klasa 3, zakres rozszerzony (Python)
Kod ASCII daje każdemu znakowi **8 bitów**. Tekst złożony z kilku różnych znaków można zapisać krócej: przy 4 znakach wystarczą 2 bity na znak. Jeszcze lepiej, gdy **częste** znaki dostaną **krótsze** kody. Kod musi być **prefiksowy**: żaden kod nie jest początkiem innego, inaczej ciągu bitów nie da się jednoznacznie odczytać.
text = "ABRAKADABRA"
counts = {ch: text.count(ch) for ch in sorted(set(text))}
print("częstości:", counts)
fixed = {"A": "000", "B": "001", "D": "010", "K": "011", "R": "100"}
variable = {"A": "0", "B": "110", "D": "1110", "K": "1111", "R": "10"}
for name, code in [("stały", fixed), ("zmienny", variable)]:
bits = "".join(code[ch] for ch in text)
print(name, len(bits), "bitów:", bits)Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.
Wszystkie lekcje kursu Informatyka - liceum klasa 3, zakres rozszerzony·Zaloguj się, aby zapisać postęp na koncie.