Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function node(name, fr, par, used, code){
- this.name = name;
- this.fr = fr;
- this.par = par;
- this.used = used;
- this.code = code;
- }
- alf = new Array();
- WSH.echo('Type string in cosole');
- str = WSH.StdIn.ReadLine();
- tree = new Array();
- for ( i = 0; i < str.length; i++){
- alf[str.charAt(i)] = 0;
- }
- for ( i = 0; i < str.length; i++){
- alf[str.charAt(i)]++;
- }
- for (i in alf){
- n = new node(i, alf[i], 0, 0, 0);
- tree.push(n);
- }
- for ( i = 0; i<tree.length; i++){
- for( j=0; j<tree.length - 1; j++){
- if (tree[j].fr<tree[j+1].fr){
- x = tree[j];
- tree[j] = tree[j+1];
- tree[j+1] = x;
- }
- }
- }
- m = tree.length;
- if (m > 1){
- for( j = 0; j < m - 1; j++){
- fr1 = str.length;
- num1 = 0;
- for( i = 0; i < tree.length; i++){
- if(tree[i].fr < fr1 && tree[i].used != 1){
- fr1 = tree[i].fr;
- num1 = i;
- }
- }
- tree[num1].used = 1;
- tree[num1].code = 0;
- tree[num1].par = tree.length;
- fr2 = str.length;
- num2 = 0;
- for( i = 0; i < tree.length; i++){
- if(tree[i].fr < fr2 && tree[i].used != 1){
- fr2 = tree[i].fr;
- num2 = i;
- }
- }
- tree[num2].used = 1;
- tree[num2].code = 1;
- tree[num2].par = tree.length;
- tree.push(new node(tree[num1].name + tree[num2].name, tree[num1].fr + tree[num2].fr, 0, null, ''));
- }
- }
- else{
- tree[0].code = 0;
- tree[0].par = tree.length;
- tree.push(new node(tree[0].name, tree[0].fr, 0, null, ''));
- }
- WSH.echo('name \t freq \t code \t par');
- for(i=0;i<tree.length;i++)
- WSH.echo(tree[i].name, '\t',tree[i].fr, '\t', tree[i].code, '\t',tree[i].par);
- WSH.echo('==========');
- code_tab = new Array();
- for(i=0;i<m;i++){
- j = i;
- code_tab[tree[j].name] = '';
- while(tree[j].par){
- code_tab[tree[i].name] = tree[j].code + code_tab[tree[i].name];
- j = tree[j].par;
- }
- }
- if (tree.length == 1)
- WSH.echo(tree[0].name,' ',"0");
- else
- for(i in code_tab)
- WSH.echo(i,' ',code_tab[i]);
- code = '';
- for( i = 0; i < str.length; i++){
- code += code_tab[str.charAt(i)];
- }
- WSH.echo("Coded string " + code);
- codeSymbol = '';
- decode = '';
- for ( i = 0; i < code.length; i++){
- codeSymbol += code.charAt(i);
- for ( j in code_tab){
- if (code_tab[j] == codeSymbol){
- decode += j;
- codeSymbol = '';
- break;
- }
- }
- }
- WSH.echo("Decoded string " + decode);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement