Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* Данный алгоритм считывает из файла input.txt строку и обрабабатывает ее следующим образом.
  2. Он идет посимвольно в строке и считает кол-во подряд идущих повторяющихся символов.
  3. И кодирует повторяющиеся символы следующим образом:#kx,где k-это символ,значение в таблице Аски которого
  4. соответсвует кол-ву повторяющихся символов,а х-повторяющийся символ.
  5. Закодированное сообщение выводится в командную строку,а обратное раскодирование вносится в output.txt */
  6. let fs = require('fs');
  7. let arg = process.argv;
  8. let inText;
  9. let i = 0, n = 1;
  10. let OutString = new String;
  11. OutString = '';
  12. let allsymbols = 0;
  13. let Output2 = new String;
  14. Output2 = '';
  15. inText = fs.readFileSync('input.txt');
  16. inText = inText.toString();
  17. /*Находем длины цепочек подряд идущих символов*/
  18. while (i < inText.length){
  19. while(inText.charAt(i) == inText.charAt(i+n))
  20. n++;
  21. allsymbols=n;
  22. while (n>255){
  23. OutString += '#'+String.fromCharCode(255)+ inText.charAt(i)
  24. n-=255;
  25. }
  26. if (n>3)
  27. OutString += '#'+String.fromCharCode(n)+ inText.charAt(i);
  28. else
  29. for(let k=0;k<=n;k++)
  30. OutString += inText.charAt(i);
  31. i += allsymbols;
  32. n = 1;
  33. }
  34. console.log(OutString);
  35. for (let i = 0; i < OutString.length;i ++){
  36. if (OutString.charAt(i) == '#'){
  37. for (let j = 0; j < OutString.charCodeAt(i+1); j++)
  38. Output2 += OutString.charAt(i+2);
  39. i+=2;
  40. }
  41. else
  42. Output2 += OutString.charAt(i);
  43. }
  44. fs.writeFileSync('output.txt', Output2);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement