Solution #1734c297-77a2-4f19-b5bd-105699bde61a
failedScore
0% (0/5)
Runtime
84μs
Delta
New score
-100.0% vs best
Same as parent
Score
0% (0/5)
Runtime
84μs
Delta
New score
-100.0% vs best
Same as parent
def solve(input):
data = input.get("data", "")
if not isinstance(data, str) or not data:
return 999.0
# Implementing a simple dictionary-based compression
def dictionary_compress(data):
dictionary = {}
compressed_data = []
buffer = ""
dict_size = 256
for char in data:
buffer_plus_char = buffer + char
if buffer_plus_char in dictionary:
buffer = buffer_plus_char
else:
if buffer:
compressed_data.append(dictionary[buffer])
else:
compressed_data.append(ord(char))
dictionary[buffer_plus_char] = dict_size
dict_size += 1
buffer = char
if buffer:
compressed_data.append(dictionary[buffer])
return compressed_data
def dictionary_decompress(compressed_data):
dictionary = {i: chr(i) for i in range(256)}
dict_size = 256
result = []
w = chr(compressed_data[0])
result.append(w)
for k in compressed_data[1:]:
if k in dictionary:
entry = dictionary[k]
elif k == dict_size:
entry = w + w[0]
else:
return None
result.append(entry)
dictionary[dict_size] = w + entry[0]
dict_size += 1
w = entry
return ''.join(result)
compressed_data = dictionary_compress(data)
decompressed_data = dictionary_decompress(compressed_data)
if decompressed_data != data:
return 999.0
compressed_size = len(compressed_data) * 2 # Assume each entry takes 2 bytes
original_size = len(data)
return 1.0 - (compressed_size / float(original_size))