#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;
}
0 Comments