Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Данный алгоритм считывает из файла input.txt строку и обрабабатывает ее следующим образом.
- Он идет посимвольно в строке и считает кол-во подряд идущих повторяющихся символов.
- И кодирует повторяющиеся символы следующим образом:#kx,где k-это символ,значение в таблице Аски которого
- соответсвует кол-ву повторяющихся символов,а х-повторяющийся символ.
- Закодированное сообщение выводится в командную строку,а обратное раскодирование вносится в output.txt */
- let fs = require('fs');
- let arg = process.argv;
- let inText;
- let i = 0, n = 1;
- let OutString = new String;
- OutString = '';
- let allsymbols = 0;
- let Output2 = new String;
- Output2 = '';
- inText = fs.readFileSync('input.txt');
- inText = inText.toString();
- /*Находем длины цепочек подряд идущих символов*/
- while (i < inText.length){
- while(inText.charAt(i) == inText.charAt(i+n))
- n++;
- allsymbols=n;
- while (n>255){
- OutString += '#'+String.fromCharCode(255)+ inText.charAt(i)
- n-=255;
- }
- if (n>3)
- OutString += '#'+String.fromCharCode(n)+ inText.charAt(i);
- else
- for(let k=0;k<=n;k++)
- OutString += inText.charAt(i);
- i += allsymbols;
- n = 1;
- }
- console.log(OutString);
- for (let i = 0; i < OutString.length;i ++){
- if (OutString.charAt(i) == '#'){
- for (let j = 0; j < OutString.charCodeAt(i+1); j++)
- Output2 += OutString.charAt(i+2);
- i+=2;
- }
- else
- Output2 += OutString.charAt(i);
- }
- fs.writeFileSync('output.txt', Output2);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement