Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- "use strict"
- test();
- function test() {
- let test1 = "aaaaaabccccceekkk";
- let test2 = "aaaa$$$$bcce$ekkkk";
- let test1Encoded = Encode(test1);
- let test2Encoded = Encode(test2);
- let test1Decoded = Decode(test1Encoded);
- let test2Decoded = Decode(test2Encoded);
- console.log(test1 == test1Decoded);
- console.log(test2 == test2Decoded);
- }
- function Encode(message) {
- result = ""
- let sequenceLength = 1;
- for (let i = 1; i < message.length + 1; i++) {
- if (message[i] == message[i - 1]) {
- sequenceLength++;
- } else {
- if (sequenceLength > 3 || IsSpecialSymbol(message[i - 1])) {
- result += GetEncodedSequence(message, sequenceLength, i - 1);
- } else {
- result += GetNotEncodedSequence(message, sequenceLength, i - 1);
- }
- sequenceLength = 1;
- }
- }
- return result;
- }
- function Decode(message) {
- result = "";
- let i = 0;
- while (i < message.length) {
- if (IsSpecialSymbol(message[i])) {
- result += GetDecodedSequence(message.charCodeAt(i + 1), message[i + 2]);
- i += 3;
- } else {
- result += message[i];
- i++;
- }
- }
- return result;
- }
- function GetDecodedSequence(sequenceLength, symbol) {
- result = "";
- for (let i = 0; i < sequenceLength; i++) {
- result += symbol;
- }
- return result;
- }
- function GetNotEncodedSequence(message, sequenceLength, lastSymbolPosition) {
- return message.slice(lastSymbolPosition - sequenceLength + 1, lastSymbolPosition + 1);
- }
- function GetEncodedSequence(message, sequenceLength, lastSymbolPosition) {
- return String.fromCharCode(36) + String.fromCharCode(sequenceLength) + message[lastSymbolPosition];
- }
- function IsSpecialSymbol(symbol) {
- return symbol == String.fromCharCode(36);
- }
Advertisement
Add Comment
Please, Sign In to add comment