Sample run with huck_finn.txt
Huffman Code
In this programming assignment, you will implement coding and decoding using Huffman codes (Wikipedia entry). All functions except for freq() must be done recursively.Please use the following template files:
TreeNode.py
Huffman.py
Driver.py
Driver2.py
hob.txt
huck_finn.txt
test_cases.py
A sample run with hard-coded
frequencies = [['A',8],['C',1],['B',3],['D',1],['E',1],['F',1],['G',1],['H',1]]is shown below:
mac-mini:p5-huffman raj$ python3 Driver.py {'E', 'H', 'C', 'D', 'A', 'B', 'G', 'F'} 17 {'A'} 8 {'E', 'H', 'C', 'D', 'B', 'G', 'F'} 9 {'G', 'F', 'E', 'H'} 4 {'G', 'H'} 2 {'G'} 1 {'H'} 1 {'E', 'F'} 2 {'E'} 1 {'F'} 1 {'B', 'C', 'D'} 5 {'C', 'D'} 2 {'C'} 1 {'D'} 1 {'B'} 3 0 111 1100 1101 1010 1011 1000 1001 1110110110001010 BADGE mac-mini:p5-huffman raj$
A sample run with frequencies generated from hob.txt is shown below:
mac-mini:p5-huffman raj$ python3 Driver.py hob.txt {'.', 'Y', 'L', 'S', '\n', 'D', ',', 'V', '‘', '—', 'Q', '?', ')', ' ', 'Ā', 'B', 'M', 'X', ':', 'K', 'G', '-', 'T', '’', 'A', 'C', 'W', 'F', 'H', 'N', 'R', 'I', 'P', 'U', 'J', 'E', 'O', '('} 8090 {'.', 'Y', 'A', 'C', 'W', ',', 'V', '‘', '?', 'R', ')', 'B', 'M', ':', 'K', 'U', 'G', 'O', 'J', 'E', '’', '('} 3491 {'.', 'B', 'R', ':', '(', 'K', ',', 'G', 'J', 'E', '?', ')'} 1607 {'.', 'B', 'R', ':', '(', 'K', ',', 'G', 'J', '?', ')'} 775 {'.', 'B', ':', '(', 'K', ',', 'G', 'J', '?', ')'} 384 {'.', ')', ':', 'K', ',', 'J', '?', '('} 184 {'.', ')', ':', 'K', 'J', '?', '('} 91 {'.'} 41 {':', '(', 'K', 'J', '?', ')'} 50 {':', '(', 'J', '?', ')'} 24 {'J'} 11 {')', ':', '?', '('} 13 {':', '('} 5 {':'} 1 {'('} 4 {'?', ')'} 8 {')'} 4 {'?'} 4 {'K'} 26 {','} 93 {'B', 'G'} 200 {'B'} 95 {'G'} 105 {'R'} 391 {'E'} 832 {'Y', 'A', 'M', 'C', 'W', 'U', 'V', '’', '‘', 'O'} 1884 {'V', 'O', 'M', '‘', 'U', '’'} 913 {'V', 'M', '‘', 'U', '’'} 445 {'V', '’', '‘', 'M'} 221 {'V', '’', '‘'} 109 {'V'} 51 {'’', '‘'} 58 {'‘'} 28 {'’'} 30 {'M'} 112 {'U'} 224 {'O'} 468 {'W', 'Y', 'A', 'C'} 971 {'W', 'Y', 'C'} 472 {'C'} 230 {'W', 'Y'} 242 {'Y'} 119 {'W'} 123 {'A'} 499 {'L', 'S', '\n', 'D', 'F', 'H', '—', 'N', 'Q', ' ', 'Ā', 'X', 'I', 'P', '-', 'T'} 4599 {'L', 'S', 'H', 'N', 'T'} 2154 {'L', 'S', 'H'} 1061 {'L', 'H'} 526 {'L'} 260 {'H'} 266 {'S'} 535 {'N', 'T'} 1093 {'T'} 540 {'N'} 553 {'Ā', 'X', 'I', '\n', 'P', 'D', 'F', '-', '—', 'Q', ' '} 2445 {'Ā', 'X', 'I', '\n', 'P', 'D', 'F', '-', '—', 'Q'} 1157 {'I'} 557 {'Ā', 'X', '\n', 'P', 'D', 'F', '-', '—', 'Q'} 600 {'Ā', 'X', '\n', '—', 'P', 'Q', '-'} 287 {'Ā', 'X', '\n', '—', 'Q', '-'} 142 {'Ā', 'Q', '-', '—'} 66 {'Ā', 'Q', '—'} 32 {'Q'} 13 {'Ā', '—'} 19 {'Ā'} 9 {'—'} 10 {'-'} 34 {'X', '\n'} 76 {'\n'} 36 {'X'} 40 {'P'} 145 {'F', 'D'} 313 {'F'} 156 {'D'} 157 {' '} 1288 0111 000010 01100 110111 001 110110 000011 10001 0000100111110111000011001 BADGE mac-mini:p5-huffman raj$