yoga1290

Huffman Coding

Nov 25th, 2012
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 1.52 KB | None | 0 0
  1. <html>
  2. <head>
  3. <title>Youssef Gamil</title>
  4. <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">
  5.  
  6. </script>
  7. </head>
  8. <body>
  9. <form>
  10. <textarea id="huff"></textarea>
  11. </form>
  12. <div id="freq"></div>
  13. <script>
  14. var freq={},encode={},keys=[],tree;
  15. function main()
  16. {
  17.     freq={};
  18.     encode={};
  19.     keys=[];
  20.     $("textarea#huff").change(function(e){
  21.         var i=0;
  22.         for(i=0;i<$(this).val().length;i++)
  23.             if(freq[$(this).val().charAt(i)]==undefined)
  24.             {
  25.                 freq[$(this).val().charAt(i)]=1;
  26.                 keys.push($(this).val().charAt(i));
  27.             }
  28.             else
  29.                 freq[$(this).val().charAt(i)]++;
  30.  
  31.  
  32.  
  33.         var q=[]; //paiorty queue
  34.         for(i=0;i<keys.length;i++)
  35.             q.push([freq[keys[i]] , keys[i]]);
  36.         while(q.length>1)
  37.         {
  38.             q.sort();
  39.             var a=q.pop();
  40.             var b=q.pop();
  41.             if(b[0]<a[0])
  42.             {
  43.                 var c=a;
  44.                 a=b;
  45.                 b=c;
  46.             }
  47.             q.push([
  48.                     (a[0]+b[0]),
  49.                     a,b]);
  50.         }
  51.        
  52.         tree=q[0];
  53.         q[0][0]="";//let the 1st element be a string men hens w rayed!
  54.  
  55.         if(q[0].length==2)
  56.             q[0][0]="0";
  57.         while(q.length>0) //BFS
  58.         {
  59.             var cur=q.pop();
  60.             if(cur.length<2) continue;
  61.             if(cur.length==2) //not an array? char
  62.             {
  63.                 encode[cur[1]]=cur[0];
  64.             }
  65.             else
  66.             {
  67.                 cur[1][0]=cur[0]+"0";
  68.                 cur[2][0]=cur[0]+"1";
  69.                 q.push(cur[1]);
  70.                 q.push(cur[2]);
  71.             }
  72.         }
  73.  
  74.         var txt="<table><tr><td>Character</td><td>Freq</td><td>Encode</td></tr>";
  75.         for(i=0;i<keys.length;i++)
  76.             txt+="<tr><td>"+keys[i]+"</td><td>"+freq[keys[i]]+"</td><td>"+encode[keys[i]]+"</td></tr>";
  77.         txt+="</table>";
  78.         $("div#freq").html(txt);
  79.     });
  80. }
  81. $(document).ready(main);
  82. </script>
  83. </body>
  84. </html>
Advertisement
Add Comment
Please, Sign In to add comment