diff --git a/projects/006-run-length-decoding/python/main.py b/projects/006-run-length-decoding/python/main.py index e69de29..bac8ebc 100644 --- a/projects/006-run-length-decoding/python/main.py +++ b/projects/006-run-length-decoding/python/main.py @@ -0,0 +1,35 @@ +''' +Run-length encoding is a simple data compression technique that can be effective +when repeated values occur at adjacent positions within a list. + +Compression is achieved by replacing groups of repeated values with one copy of the value, +followed by the number of times that it should be repeated. +For example, the list +`["A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "B", "B", "B","B","A","A","A","A","A","A","B"]` +would be compressed as `["A",12,"B",4,"A",6,"B",1]`. + +Decompression is performed by replicating each value in the list the number of times indicated. + +Write a recursive function that decompresses a run-length encoded list. +Your recursive function will take a run-length compressed list as its only argument. +It will return the decompressed list as its only result. + +Create a main program that displays a run-length encoded list and the result of decoding it. +''' + +def decompression(array): + if len(array) == 0: + return [] + + value = array[0] + count = array[1] + finalvalue = [value] * count + decompression(array[2:]) + + return finalvalue + +def main(): + array = ["A", 12, "B", 4, "A", 6, "B", 1] + print(decompression(array)) + +if __name__ == "__main__": + main() \ No newline at end of file