From 0c4e5c85ae84e36772204d06a285e190cb8a1531 Mon Sep 17 00:00:00 2001 From: Jacob Theisen <jacobth@stud.ntnu.no> Date: Tue, 9 Nov 2021 23:52:41 +0100 Subject: [PATCH] sjo2 --- ov8/HM_compression.py | 31 ------------------------------- ov8/HM_uncompression.py | 1 + ov8/hm_uncomp | Bin 1735 -> 1411 bytes 3 files changed, 1 insertion(+), 31 deletions(-) diff --git a/ov8/HM_compression.py b/ov8/HM_compression.py index ccb3147..2506d20 100644 --- a/ov8/HM_compression.py +++ b/ov8/HM_compression.py @@ -49,22 +49,12 @@ for i in all_strings: table = sorted(table,key=lambda x: x.freq) -# A Huffman Tree Node class node: def __init__(self, freq, symbol, left=None, right=None): - # frequency of symbol self.freq = freq - - # symbol name (character) self.symbol = symbol - - # node left of current node self.left = left - - # node right of current node self.right = right - - # tree direction (0/1) self.huff = '' @@ -76,59 +66,38 @@ class rep_tree(): def printNodes(node, val=''): - # huffman code for current node newVal = val + str(node.huff) - # if node is not an edge node - # then traverse inside it if(node.left): printNodes(node.left, newVal) if(node.right): printNodes(node.right, newVal) - # if node is edge node then - # display its huffman code if(not node.left and not node.right): rep_tree_arr.append(rep_tree(node.symbol, newVal)) - - -# list containing unused nodes nodes = [] - for j in table: nodes.append(node(j.freq, j.char)) while len(nodes) > 1: - - # pick 2 smallest nodes left = nodes[0] right = nodes[1] - - # assign directional value to these nodes left.huff = 0 right.huff = 1 - - # combine the 2 smallest nodes to create - # new node as their parent newNode = node(left.freq+right.freq, left.symbol+right.symbol, left, right) - - # remove the 2 nodes and add their - # parent as new node among others nodes.remove(left) nodes.remove(right) nodes.append(newNode) -# Huffman Tree is ready! printNodes(nodes[0]) bit_string = '' - for i in all_strings: a = [a for a in rep_tree_arr if a.symb == i] bit_string += a[0].val diff --git a/ov8/HM_uncompression.py b/ov8/HM_uncompression.py index 4eeebcf..7cb1e4c 100644 --- a/ov8/HM_uncompression.py +++ b/ov8/HM_uncompression.py @@ -101,6 +101,7 @@ for i in range(0,len(lz_code),6): elif k not in string.printable: print('extende') counter +=1 + print(counter) with open('./hm_uncomp', 'a') as file: file.write(huff_string[:value-counter]) huff_string = huff_string[value-counter:] diff --git a/ov8/hm_uncomp b/ov8/hm_uncomp index 1cfe83f1d08f9bcbc6c8dce44dc3445c2ba2a659..6f681179d724e9a01a8cfcf37f85ba105e6dbae3 100644 GIT binary patch delta 939 zcmX@k+sr*7Nqpgd4hDV(E)Y;qc+{{+!L2B><jwzyjT)|}|BEtkFeH{FCM6c97CrvY z#=yl8e0WE8YHof>e$o5?JPeWy3aKR}sYMD!sRgMesYNBJ3dJQwsd?$CMNa=Y85kHu z|4;lU#rS`+G^2sY!~X&dj10LC|Fbc$GGtelDHPxNKRKJxlIg|&$*UNpm@faHe2P(; z>CykmuNk#C`~R~sFfwF@{hzGDWWn*|KL-N?!|VT(bC?wCzy0TAU}Pxz2)5zTe+~vg z1}<GV&<3%zzy0T8U|@LjUxa~|0VKesprD{&prD|z`M)3oBSXy_u<;5IW#9g@GcYhD z|IcS&WH3wybK?H1!G(;H|MM^~FvR^=1PjH2lo==g7X*vRfW<&UCdvQBz(V41A=Bjl z(qJJW1_p+pKl2zE820=zW?*1Y`wJo`fXQEAGUcBM0|P_B&&dawMeBco>|6U2<f<<} z*%%lYuKj0Y;AQYA%Pdw%Ni9*x%+5~T{*#k|l_4#svZUnfe_jRwhT_9Z6><{u(n}P| zG8M8D^J;#wGcYo6#e)6w<F7gc3j-(+e*QILU}jKIF!=RXAIvb+`v+kd=|dUy#>xM* z85kH;|A0ch{~tF41H+Vm91PqH#i<GfhnFhkr52Y2{9|KaVaP8o(=++U!@vn~TuEwr zUi3c>1{Q|2%)Da#e|!ua3_2jkD3oP-{9|L_U`SQSRVXe=P45CHgS4X5Tr2lK><j`R zx78@*Dk#(_q}GGT5=b=X2ZLif^Z9>H1~!HgkWBH7|9lLb44EKyo`M3G#Xo%p1_t3j zpctF@Uy^}=Vdg(ju>bfi#lXOD3mgSA|ARbq_czExwf}V)7#L3c14W(oKOqJIuwxZU zGIJElQuB&SigZ)weFMdS+CKpX28R1zLGA`8pyI<zcmCxD1!Qh&%DJx~!{+{<%*Uqc z`v(+P%fLZ>=06()CxfR#K~Z9Mac1$E{{jqr45>M(3W+&siAkv?sU<pl{<AT#F{Gp_ pq~)Z}{mse1%>Xt&J+nw5wdBC>$+OtxxX=A(V_;`UIka1o3jlh1BfJ0r literal 1735 zcmYdb2uaN@E-5~|BU?woC9xziJ3qIeD782%KaY#cBQ+;IRly@Mtt2xqor}veuec<$ zq_m_&AuYd1AtkXSu_QG+FFz+gJyRh+T_H0sEx#x?u_QA)n~N(rH5+7xf}z6u{d?c< z-^;<k&%gx&3JQ-J7Ad$DWtKoB*cnt96fzZ3^0P~GQ}aqvi*yw7QcFsTGgDHFK&Iwo zrst*RrKCbsi!yL9B$gy5B^IX^K}6UXxEO*D@5oNg%`eG^it#W=GAN{$l%y6Z6r~oV zmZTPyq$(7b6s6{+rxrQA-@liWfq_Bv{r<f?45ADW2f6q;>gFbvBxitq%H{ul|6X<m z9Z29<DHJ6pB^D(WB`Sb`Mowy8dP=H7o+cNUf&$p?{Gt>qs7D1D7#VV5PGe=rt}Ih1 zhH*_9QcDza67$lF6-q#%o|>nlP@JlepR16PTB1;pSX`W1#04@G;--?+^gM;)e5h&c z3}OsA3T2tasl^JpsVNF+sU-@<*+rRY(17G%5NAj`yrZbNBvm0TH8TgSD7&<%II|35 zKL>*vLrQ*9Qff{~&fy)|*{R@Y%+t+PD9A6)1jQC8@bl9Zpcb+*FfwF@z2Co=i@}6J zPXXjEu;V;Zb5a%3i&8Tabrk$#a#GVuH1cASQ}Rm`a$|}z(=$pmbz=N;Q_~Y+)-o_a zSZoZk3}90f6x{NQKuJzPp+=zyL?nWUB#1Ij21W*GM1tZ8BFMoY$iSrw2ihQ(Hbjbx z0cL>+0~Z5Gf(sN)1_}z$C=p~}WT=6t1^EdoiqOW+z`&6Fe*fNl21W)$5CbF-_kRCg zH6#fmkOU6{0|Q7x5lO-rBq0cukU^3#0ZE8KCB%^=OhFRTPzfOh28JMr<KX@<W?*1Y zd%u4#h=xd^vQpmf-)q9az)%2A$^s0a92K0ZP;hvuLUCqsNvbzEX~RMV<Qs@7Y;YSu zxyGX`vlyK4GPARx*^85bl_4#svILr>xEKT&iVrUZC)pB(vP^~S#5_<yvNJF;aK(bN z2+R_71{MZTs6#9=Vqj)aP%waS^uZiMz4!a~LYPMSa3(nLv>6x}RNsTj2$*TyaEEd* za5EG`yq1?*ToUkp|6Vo*7KZ%dGCdQpFF6^&{s85bXs{V93~8Bp#ULyA7&sVoKyFqj z%k%(i<X}iu$W<sVNlk}1jSb}AqSRa~cd%y!KwhX($OR?FR1g6T2T+R44+aM|BSR)c zD<=aRLkUO?G<Wkca57|q_<0HnTozytGB5~36A?s<B-~e^$cKnYVG#p`2Sk>Gfq|j+ z{r<hWa8;lL21@rr3<6+(DwJgAD3qn<fl4=s9#9$uB_08|9ySIJ25^=rKD-p7h8q-H zxv8LZ1P(J;xU(}TFob0)WF!`WVmmcYp(HUWH75sLP-K+l7b)acrka6+3ZVnWVq@TB z@Kh)$O3W_KgocR#10MsZut>~FOH4{FNiETVSkK15#*mV#kd^~acH9sLre_u@q(TFo mok5xbl%jL>6f}ZT(^GRm<>aB&rQl*R4`vWML&~Aunp^<SD6nw= -- GitLab