46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
# YouTube Link:
|
|
|
|
"""
|
|
Run-length encoding (RLE) is a very simple form of lossless data compression
|
|
in which runs of data (that is, sequences in which the same data value occurs
|
|
in many consecutive data elements) are stored as a single data value and count,
|
|
rather than as the original run.
|
|
|
|
Example:
|
|
WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW
|
|
With a run-length encoding (RLE) data compression algorithm applied to
|
|
the above hypothetical scan line, it can be rendered as follows:
|
|
|
|
12W1B12W3B24W1B14W
|
|
This can be interpreted as a sequence of twelve Ws, one B, twelve Ws,
|
|
three Bs, etc..,
|
|
"""
|
|
|
|
|
|
def run_length_encode(uncompressed_data):
|
|
"""
|
|
Takes an uncompressed string of data and
|
|
returns the run-length encoded string.
|
|
"""
|
|
compressed_data = ""
|
|
return compressed_data
|
|
|
|
|
|
def run_length_decode(compressed_data):
|
|
"""
|
|
Takes a run-length encoded compressed string
|
|
and returns the uncompressed decoded data.
|
|
"""
|
|
uncompressed_data = ""
|
|
return uncompressed_data
|
|
|
|
|
|
uncompressed_data = "aaaaahhhhhhmmmmmmmuiiiiiiiaaaaaa"
|
|
|
|
# Expects:
|
|
compressed_data = run_length_encode(uncompressed_data)
|
|
|
|
# Expects: "aaaaahhhhhhmmmmmmmuiiiiiiiaaaaaa"
|
|
uncompressed_data = run_length_decode(compressed_data)
|
|
|