P10 - 列表的游程编码。
作者:David Romano
规范
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.示例
> prob10(<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"]]
源代码: P10-unobe.pl
use v6;
my @l = <a a a a b c c a a d e e e e>;
sub prob10 (@in) {
return gather loop {
last if [email protected];
my $val = @in[0];
take [
gather {
loop {
last if [email protected];
@in[0] ~~ $val ?? take(shift @in) !! last
};
}.elems, $val
];
};
}
say ~@l;
say prob10(@l).list.perl;
Perl 6 示例