Нужен декодировщик к хаффману срочно

Тема в разделе "Java", создана пользователем Yunnii, 14 дек 2007.

  1. Yunnii

    Yunnii Гость

    Репутация:
    0
    кодируется этим методом, выводит в файл. Этот файл-входные данные для декодера, помогите плиз с ним!!!!!!!!!
    Код:
    var str="aaaaaabbbbbbbbhhhffffssc";//вводим строку не больше 25 символов
    var alfavit = new Array();
    var shift = "a".charCodeAt(0);
    var num = str.length;
    
    WScript.Echo("Input text: " + str);
    
    for (var i=0;i<26;i++) alfavit[i]=0;
    
    for (var i=0;i<num;i++)
    {
    alfavit[str.charCodeAt(i)-shift]++;// считаем частоту, для экономии памяти вычитаем код буквы а 
    
    }
    
    
    var a = new Array();
    var b = new Array();
    var r = new Array();
    WScript.Echo("Chastota");
    for (var i=0; i<26; i++ ) 
    { r.push("");
    if (alfavit[i]!=0) //если символы(буквы) не кончились 
    {
    a.push(alfavit[i]); //заводим массив частот
    b.push(String.fromCharCode(i+shift)); //соответствующий символ
    WScript.Echo(b[b.length-1]," was ",alfavit[i]," mal"); // строим таблицу частоты
    }	
    }			  
    
    var min0,min1;//строим дерево
    while (a.length > 1) // пока есть какой-нибудь элемент
    { 
    min0 = 0;// фиксирует на каком месте наименее встречающийся элемент,
    for (var i=0; i<a.length; i++)
    if (a[i]<a[min0]) min0=i;
    if (min0==0) min1=1;
    else min1=0;//второй по редкости элемент
    for (var i=0; i<a.length; i++)
    if ((a[i]<a[min1]) && (i!=min0)) min1=i;
    
    for (var i=0;i<b[min0].length; i++)
    
    r[ b[min0].charCodeAt(i)-shift ] = "0" + r[ b[min0].charCodeAt(i)-shift ]; 
    for (var i=0;i<b[min1].length; i++)
    r[ b[min1].charCodeAt(i)-shift ] = "1" + r[ b[min1].charCodeAt(i)-shift ];	
    
    a[min1] += a[min0];
    a.splice(min0,1);
    b[min1] += b[min0];
    b.splice(min0,1);  
    }
    
    WScript.Echo( "\nHuffman's table");
    for (var i=0; i<26; i++)
    if (alfavit[i]!=0) WScript.Echo ( String.fromCharCode(i + shift)," ",r[i]);
    
    WScript.Echo( "\nEncoded text");  
    for (var i=0; i<str.length; i++)
    if (alfavit[i]!=0) WScript.Echo(r[i]);
     
Загрузка...
Похожие Темы - Нужен декодировщик хаффману
  1. Marlen
    Ответов:
    0
    Просмотров:
    118
  2. Tayrus
    Ответов:
    6
    Просмотров:
    57
  3. NetWolf
    Ответов:
    0
    Просмотров:
    30
  4. борова
    Ответов:
    2
    Просмотров:
    52
  5. rolex-x
    Ответов:
    0
    Просмотров:
    400

Поделиться этой страницей