decode method
Implementation
List<int> decode(List<int> codes) {
final dict = <int, List<int>>{};
for (var i = 0; i < 256; i++) {
dict[i] = [i];
}
var code = 256;
var prev = <int>[];
final out = <int>[];
for (var k in codes) {
List<int> entry;
if (dict.containsKey(k)) {
entry = dict[k]!;
} else if (k == code) {
entry = List<int>.from(prev)..add(prev.first);
} else {
throw StateError('Bad LZW code');
}
out.addAll(entry);
if (prev.isNotEmpty) {
dict[code++] = List<int>.from(prev)..add(entry.first);
}
prev = entry;
}
return out;
}