2016 Update
This commit is contained in:
parent
948b86eafa
commit
dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions
|
|
@ -1,9 +1,11 @@
|
|||
my $str = 'this is an example for huffman encoding';
|
||||
my %enc = huffman $str;
|
||||
my %dec = %enc.invert;
|
||||
say $str;
|
||||
my $huf = %enc{$str.comb}.join;
|
||||
say $huf;
|
||||
my $rx = join('|', map { "'" ~ .key ~ "'" }, %dec);
|
||||
$rx = EVAL '/' ~ $rx ~ '/';
|
||||
say $huf.subst(/<$rx>/, -> $/ {%dec{~$/}}, :g);
|
||||
sub huffman (%frequencies) {
|
||||
my @queue = %frequencies.map: { .value => (hash .key => '') };
|
||||
while @queue > 1 {
|
||||
@queue.=sort;
|
||||
my $x = @queue.shift;
|
||||
my $y = @queue.shift;
|
||||
@queue.push: ($x.key + $y.key) => hash $x.value.deepmap('0' ~ *),
|
||||
$y.value.deepmap('1' ~ *);
|
||||
}
|
||||
@queue[0].value;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue