Huffman coding: Difference between revisions
m
→{{header|Sidef}}: modified code to work with Sidef 2.10
m (→{{header|Perl 6}}: modernize) |
m (→{{header|Sidef}}: modified code to work with Sidef 2.10) |
||
Line 4,961:
<lang ruby>func walk(n, s, h) {
n.exists('a') && (
h
say "#{n
return;
);
walk(n
walk(n
}
func make_tree(text) {
var letters = Hash.new;
text.each { |c| letters
var nodes = letters.keys.map { |l|
Hash.new('a' => l, 'freq' => letters
};
var n = Hash.new;
while (nodes.sort!{|a,b| a
n = Hash.new('0' => nodes.shift, '1' => nodes.shift);
n
nodes.append(n);
}
walk(n, '', n
return n;
}
func encode(s, t) {
t = t
s.split(1).join('' => {|c| t
}
Line 4,997:
enc.each {|bit|
out += n{'a'}; n = tree;
);
};
|