Huffman coding: Difference between revisions
Content added Content deleted
m (→{{header|zkl}}: upadte) |
m (→{{header|zkl}}: formating) |
||
Line 5,823: | Line 5,823: | ||
a,b:=tree.pop(-2,2); //remove 2 least frequent symbols |
a,b:=tree.pop(-2,2); //remove 2 least frequent symbols |
||
mc:=fcn(n,c){ n[1] = c + n[1]; }; //(sym,code),"0"|"1" |
mc:=fcn(n,c){ n[1] = c + n[1]; }; //(sym,code),"0"|"1" |
||
a[1].apply2(mc,"0"); b[1].apply2(mc,"1"); |
a[1].apply2(mc,"0"); b[1].apply2(mc,"1"); // mc(a[1],"0") |
||
tree.append( L(a[0]+b[0],a[1].extend(b[1])) ); //(a,b)-->new node |
tree.append( L(a[0]+b[0],a[1].extend(b[1])) ); //(a,b)-->new node |
||
}//-->L(L(39, L( L(" ","000"),L("e","0010"),L("a","0011") ... |
}//-->L(L(39, L( L(" ","000"),L("e","0010"),L("a","0011") ... |
||
Line 5,842: | Line 5,842: | ||
}</lang> |
}</lang> |
||
<lang zkl>text:="this is an example for huffman encoding"; |
<lang zkl>text:="this is an example for huffman encoding"; |
||
encodeTable,decodeTable:=buildHuffman(text); |
encodeTable,decodeTable := buildHuffman(text); |
||
encodeTable.pump(Console.println,fcn(kv){"%s : %s".fmt(kv.xplode())}); |
encodeTable.pump(Console.println,fcn(kv){"%s : %s".fmt(kv.xplode())}); |
||