P10 - Run-length encoding of a list.
Author: Scott Penrose
Specification
P10 (*) Run-length encoding of a list. Use the result of problem P09 to implement the so-called run-length encoding data compression method. Consecutive duplicates of elements are encoded as arrays [N, E] where N is the number of duplicates of the element E.
Example
> encode(<a a a a b c c a a d e e e e>).perl.say [[4, "a"], [1, "b"], [2, "c"], [2, "a"], [1, "d"], [4, "e"]]
Source code: P10-scottp.pl
use v6; my @l = <a a a a b c c a a d e e e e>; sub packit (@in) { my @out; my $last = shift @in; my $count = 1; for @in -> $t { if ($last eq $t) { $count++; } else { push @out, $[$count, $last]; $last = $t; $count = 1; } } push @out, $[$count, $last]; return @out; } say ~@l; say packit(@l).perl;