Skip to content

Commit ecc3df1

Browse files
authored
Create delta_encoding.py
1 parent e2a78d4 commit ecc3df1

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

data_compression/delta_encoding.py

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
"""
2+
Delta Encoding
3+
--------------
4+
5+
Delta encoding is a lossless data compression method that stores the difference
6+
(delta) between sequential values instead of the absolute values themselves.
7+
8+
For example:
9+
Input: [100, 103, 105, 108]
10+
Output: [100, 3, 2, 3]
11+
12+
The first element is stored as-is; each subsequent value is replaced
13+
by the difference from its predecessor.
14+
15+
This is useful for compressing data that changes gradually, such as
16+
sensor readings, time series data, or pixel values in images.
17+
18+
Reference:
19+
https://en.wikipedia.org/wiki/Delta_encoding
20+
"""
21+
22+
23+
def delta_encode(data: list[int]) -> list[int]:
24+
"""
25+
Encodes a list of integers using delta encoding.
26+
27+
Args:
28+
data (list[int]): A list of integers.
29+
30+
Returns:
31+
list[int]: Delta-encoded list.
32+
33+
Example:
34+
>>> delta_encode([100, 103, 105, 108])
35+
[100, 3, 2, 3]
36+
"""
37+
if not data:
38+
return []
39+
40+
deltas = [data[0]]
41+
for i in range(1, len(data)):
42+
deltas.append(data[i] - data[i - 1])
43+
return deltas
44+
45+
46+
def delta_decode(encoded: list[int]) -> list[int]:
47+
"""
48+
Decodes a delta-encoded list back to the original sequence.
49+
50+
Args:
51+
encoded (list[int]): Delta-encoded list.
52+
53+
Returns:
54+
list[int]: Decoded list of integers.
55+
56+
Example:
57+
>>> delta_decode([100, 3, 2, 3])
58+
[100, 103, 105, 108]
59+
"""
60+
if not encoded:
61+
return []
62+
63+
decoded = [encoded[0]]
64+
for i in range(1, len(encoded)):
65+
decoded.append(decoded[-1] + encoded[i])
66+
return decoded
67+
68+
69+
if __name__ == "__main__":
70+
# Example run
71+
data = [100, 103, 105, 108]
72+
encoded = delta_encode(data)
73+
decoded = delta_decode(encoded)
74+
75+
print(f"Original data: {data}")
76+
print(f"Delta Encoded: {encoded}")
77+
print(f"Delta Decoded: {decoded}")

0 commit comments

Comments
 (0)