Subscribe Us

Responsive Advertisement

Advertisement

Diatomic Encoding and decoding

 #include <iostream>

#include <map>
#include <string>

using namespace std;


string diatomicEncode(string &data, map<string, char> &pairMap) {
    string encodedData = "";
    int i = 0;

    while (i < data.size()) {
        if (i + 1 < data.size()) {
            string pair = data.substr(i, 2);  
            if (pairMap.find(pair) != pairMap.end()) {
                encodedData += pairMap[pair];
                i += 2;  // Skip the next character as it's part of the current pair
                continue;
            }
        }
       
        encodedData += data[i];
        i++;
    }

    return encodedData;
}


string diatomicDecode(string &encodedData, map<char, string> &reversePairMap) {
    string decodedData = "";

    for (size_t i = 0; i < encodedData.size(); i++) {
        char currentChar = encodedData[i];
        if (reversePairMap.find(currentChar) != reversePairMap.end()) {
            decodedData += reversePairMap[currentChar];
        } else {
            decodedData += currentChar;
        }
    }

    return decodedData;
}

void displayEncodedData(const string &encodedData) {
    cout << "Encoded Data: ";
    for (char c : encodedData) {
        cout << c;  
    }
    cout << endl;
}

int main() {
 
    string data = "THE QUICK BROWN FOX JUMPS OVER THE";

 
    map<string, char> pairMap = {
        {"TH", '@'},  
        {"HE", '#'},  
        {"QU", '$'},  
        {"BR", '%'},
        {"FO", '^'},
        {"JU", '&'},  
        {"OV", '*'}
    };

    map<char, string> reversePairMap;
    for (const auto &entry : pairMap) {
        reversePairMap[entry.second] = entry.first;
    }

   
    string encodedData = diatomicEncode(data, pairMap);
    displayEncodedData(encodedData);

   
    string decodedData = diatomicDecode(encodedData, reversePairMap);
    cout << "Decoded Data: " << decodedData << endl;

    return 0;
}

Post a Comment

0 Comments