class Compressor: def init(level): buffer = List(level*2) def add(element): tmp = None if not element: return tmp if len(buffer) == level*2: tmp = buffer.pop(0) buffer.append(element) analyse() return tmp def analyse(): if buffer[0:half] == buffer[half:]: update_counters() buffer = buffer[0:half] def update_counters(): for i in range(0:level): buffer[i].counter += buffer[i+level].counter