Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <html>
- <head>
- <title>Youssef Gamil</title>
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">
- </script>
- </head>
- <body>
- <form>
- <textarea id="huff"></textarea>
- </form>
- <div id="freq"></div>
- <script>
- var freq={},encode={},keys=[],tree;
- function main()
- {
- freq={};
- encode={};
- keys=[];
- $("textarea#huff").change(function(e){
- var i=0;
- for(i=0;i<$(this).val().length;i++)
- if(freq[$(this).val().charAt(i)]==undefined)
- {
- freq[$(this).val().charAt(i)]=1;
- keys.push($(this).val().charAt(i));
- }
- else
- freq[$(this).val().charAt(i)]++;
- var q=[]; //paiorty queue
- for(i=0;i<keys.length;i++)
- q.push([freq[keys[i]] , keys[i]]);
- while(q.length>1)
- {
- q.sort();
- var a=q.pop();
- var b=q.pop();
- if(b[0]<a[0])
- {
- var c=a;
- a=b;
- b=c;
- }
- q.push([
- (a[0]+b[0]),
- a,b]);
- }
- tree=q[0];
- q[0][0]="";//let the 1st element be a string men hens w rayed!
- if(q[0].length==2)
- q[0][0]="0";
- while(q.length>0) //BFS
- {
- var cur=q.pop();
- if(cur.length<2) continue;
- if(cur.length==2) //not an array? char
- {
- encode[cur[1]]=cur[0];
- }
- else
- {
- cur[1][0]=cur[0]+"0";
- cur[2][0]=cur[0]+"1";
- q.push(cur[1]);
- q.push(cur[2]);
- }
- }
- var txt="<table><tr><td>Character</td><td>Freq</td><td>Encode</td></tr>";
- for(i=0;i<keys.length;i++)
- txt+="<tr><td>"+keys[i]+"</td><td>"+freq[keys[i]]+"</td><td>"+encode[keys[i]]+"</td></tr>";
- txt+="</table>";
- $("div#freq").html(txt);
- });
- }
- $(document).ready(main);
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment