Huffman coding: Difference between revisions

Content added Content deleted
(Add factor example)
m (Minor cleanup of factor code)
Line 2,186: Line 2,186:
: (huffman-tree) ( nodes -- tree )
: (huffman-tree) ( nodes -- tree )
dup rest empty?
dup rest empty?
[ ] [
[ first ] [
{ { weight>> <=> } } sort-by
{ { weight>> <=> } } sort-by
[ rest rest ] [ first ]
[ rest rest ] [ first ]
Line 2,233: Line 2,233:
: huffman ( sequence -- nodes )
: huffman ( sequence -- nodes )
H{ } clone (huffman) values
H{ } clone (huffman) values
[ (huffman-tree) first { }
[ (huffman-tree) { } (huffman-encoding) ] keep ;
(huffman-encoding) ] keep ;


! ---------------------------------
! ---------------------------------