2015-03-09 4 views
-1

Я пытаюсь запустить этот простой алгоритм сжатия RLE Run Length Encoding. Каковы мои варианты возврата результата?RLE алгоритм сжатия

def decode(text_decode): 
    decoded_text = "" 
    length = len(text_decode) 
    if length == 0: 
     decoded_text = "" 
    elif length == 1: 
     decoded_text = text_decode 
    else: 
     i = 1 
     while i < length: 
      next_block ="" 
      for j in range(0, int(text_decode[i])): 
       next_block += text_decode[i - 1] 
      decoded_text += next_block 
      i += 2 
    return decoded_text 
+2

могли бы вы уточнить, что вы имеете в виду? – Foon

+0

Просьба описать, как сжатые данные хранятся в 'text_decode' (или [изменить] ваш вопрос и добавить код, который это делает). – martineau

ответ

0

Как вы можете применить свой алгоритм и запустить его. Вы также можете выбрать описание, что вы хотите «преобразовать»

texte = raw_input("Your text to compress: ") 
text_rle = decoded(texte) 
print(text_rle) 
0

Вы не описали формат сжатого текста адекватно-так что я догадался, глядя на ваш код и сравнивая его со связанными реализациями я нашел поиск в Интернете.

Вот пара функций, которые, кажется, работают вместе:

def encode(input_string): 
    """ Simple run-length encoder. 

    Modified version of code at http://rosettacode.org/wiki/Run-length_encoding#Python 
    """ 
    count = 1 
    prev = '' 
    lst = [] 
    for character in input_string: 
     if character != prev: 
      if prev: 
       entry = (prev,count) 
       lst.append(entry) 
      count = 1 
      prev = character 
     else: 
      count += 1 
    else: 
     entry = (character,count) 
     lst.append(entry) 
    return ''.join(chr(cnt)+ch for (ch, cnt) in lst) 

def decode(encoded_text): 
    """ Simple run-length decoder. """ 
    chars = [] 
    a = iter(encoded_text) 
    for (cnt, ch) in zip(a, a): 
     chars.append(ch * ord(cnt)) 
    return ''.join(chars) 

word = "aaaaahhhhhhmmmmmmmuiiiiiiiaaaaaa" 
rle_text = encode(word) 
print(len(word)) # -> 32 
print(len(rle_text)) # -> 12 
print(decode(rle_text)) # -> "aaaaahhhhhhmmmmmmmuiiiiiiiaaaaaa" 
Смежные вопросы