# Demo entry 6659050

sss

Submitted by anonymous on Nov 08, 2017 at 20:48
Language: Python 3. Code size: 1.3 kB.

```from collections import Counter
from heapq import heappush, heappop, heapify
import re

def encode(dic):
heap = [[v, [k, ""]] for k, v in dic.items()]
heapify(heap)
while len(heap) > 1:
heapify(heap)
l = heappop(heap)
r = heappop(heap)
for left in l[1:]:
left[1] = '0' + left[1]
for right in r[1:]:
right[1] = '1' + right[1]
heappush(heap, [l[0] + r[0]] + l[1:] + r[1:])

return sorted(heappop(heap)[1:], key=lambda p: dic[p[0]], reverse=True)

regex = re.compile("[^a-zA-Z, !?.’]")

with open ("text.txt", "r",encoding='utf-8') as f:
dic = Counter()
for x in f:
x = regex.sub('', x)
x = x.lower()
dic += Counter(x)

huff = encode(dic)
print ("Symbol\tHuffman Code")
for p in huff:
print ("%s\t%s" % (p[0], p[1]))

total_char = sum(dic.values())
print ("If use 5-bits for each character:",total_char*5)

total_num = 0

for i in dic.items():
key = i[0]
for j in huff:
if key == j[0]:
total_num = total_num + i[1]*len(j[1])
print ("If use huffman coding:",total_num)
print ("The total number of bit saves:" ,total_char*5 - total_num)
```

This snippet took 0.00 seconds to highlight.

Back to the Entry List or Home.