runLengthEncode method
Run-length encodes this iterable into (value, count) pairs.
Example:
[1, 1, 2, 2, 2].runLengthEncode(); // [(1, 2), (2, 3)]
Implementation
@useResult
List<(T, int)> runLengthEncode() {
final List<(T, int)> result = <(T, int)>[];
T? prev;
int count = 0;
for (final T element in this) {
if (prev == null || element != prev) {
if (prev != null) result.add((prev, count));
prev = element;
count = 1;
} else {
count++;
}
}
if (prev != null) result.add((prev, count));
return result;
}