Basit bir decoder yazdım LZW algoritması için. [65, 66, 256] gibi bir int array alıyor. Bunu yazarken yabancı kaynaklardan da destek aldım ve şu kısmı anlayamadım.
Python:
def decompress_from_array(compressed):
from io import StringIO
dict_size = 256
dictionary = {i: chr(i) for i in range(dict_size)}
result = StringIO()
working = chr(compressed.pop(0))
result.write(working)
for value in compressed:
if value in dictionary:
entry = dictionary[value]
elif value == dict_size:
entry = working + working[0]
else:
raise ValueError('Bad compressed k: %s' % value)
result.write(entry)
dictionary[dict_size] = working + entry[0]
dict_size += 1
working = entry
return result.getvalue()
elif bloğundaki şartın nasıl gerçekleşeceği aklıma gelmedi bir türlü. Bir örnek ile açıklayabilir misiniz?
Basit bir decoder yazdım LZW algoritması için. [65, 66, 256] gibi bir int array alıyor. Bunu yazarken yabancı kaynaklardan da destek aldım ve şu kısmı anlayamadım.
Python:
def decompress_from_array(compressed):
from io import StringIO
dict_size = 256
dictionary = {i: chr(i) for i in range(dict_size)}
result = StringIO()
working = chr(compressed.pop(0))
result.write(working)
for value in compressed:
if value in dictionary:
entry = dictionary[value]
elif value == dict_size:
entry = working + working[0]
else:
raise ValueError('Bad compressed k: %s' % value)
result.write(entry)
dictionary[dict_size] = working + entry[0]
dict_size += 1
working = entry
return result.getvalue()
elif bloğundaki şartın nasıl gerçekleşeceği aklıma gelmedi bir türlü. Bir örnek ile açıklayabilir misiniz?