Compression Algorithms

May 30, 2026 | 5 min read

Run-Length Encoding

def rle_encode(data: str) -> list[tuple[str, int]]:
    if not data:
        return []
    result = []
    count = 1
    for i in range(1, len(data)):
        if data[i] == data[i - 1]:
            count += 1
        else:
            result.append((data[i - 1], count))
            count = 1
    result.append((data[-1], count))
    return result

Huffman Coding (Frequency Table)

def frequency_table(text: str) -> dict[str, int]:
    freq = {}
    for ch in text:
        freq[ch] = freq.get(ch, 0) + 1
    return freq

Delta Encoding

def delta_encode(values: list[int]) -> list[int]:
    if not values:
        return []
    result = [values[0]]
    for i in range(1, len(values)):
        result.append(values[i] - values[i - 1])
    return result