Go to diff to previous submission
#include <iostream> #include <string> #include <sstream> #include <vector> #include <map> #include <algorithm> using namespace std; string coder[128]; map<string, char> decoder; int main() { coder[(int)'A'] = ".-"; coder[(int)'B'] = "-..."; coder[(int)'C'] = "-.-."; coder[(int)'D'] = "-.."; coder[(int)'E'] = "."; coder[(int)'F'] = "..-."; coder[(int)'G'] = "--."; coder[(int)'H'] = "...."; coder[(int)'I'] = ".."; coder[(int)'J'] = ".---"; coder[(int)'K'] = "-.-"; coder[(int)'L'] = ".-.."; coder[(int)'M'] = "--"; coder[(int)'N'] = "-."; coder[(int)'O'] = "---"; coder[(int)'P'] = ".--."; coder[(int)'Q'] = "--.-"; coder[(int)'R'] = ".-."; coder[(int)'S'] = "..."; coder[(int)'T'] = "-"; coder[(int)'U'] = "..-"; coder[(int)'V'] = "...-"; coder[(int)'W'] = ".--"; coder[(int)'X'] = "-..-"; coder[(int)'Y'] = "-.--"; coder[(int)'Z'] = "--.."; coder[(int)'_'] = "..--"; coder[(int)','] = ".-.-"; coder[(int)'.'] = "---."; coder[(int)'?'] = "----"; decoder[".-"] = 'A'; decoder["-..."] = 'B'; decoder["-.-."] = 'C'; decoder["-.."] = 'D'; decoder["."] = 'E'; decoder["..-."] = 'F'; decoder["--."] = 'G'; decoder["...."] = 'H'; decoder[".."] = 'I'; decoder[".---"] = 'J'; decoder["-.-"] = 'K'; decoder[".-.."] = 'L'; decoder["--"] = 'M'; decoder["-."] = 'N'; decoder["---"] = 'O'; decoder[".--."] = 'P'; decoder["--.-"] = 'Q'; decoder[".-."] = 'R'; decoder["..."] = 'S'; decoder["-"] = 'T'; decoder["..-"] = 'U'; decoder["...-"] = 'V'; decoder[".--"] = 'W'; decoder["-..-"] = 'X'; decoder["-.--"] = 'Y'; decoder["--.."] = 'Z'; decoder["..--"] = '_'; decoder[".-.-"] = ','; decoder["---."] = '.'; decoder["----"] = '?'; ios_base::sync_with_stdio(false); string line; vector<int> sizes; ostringstream morse; while(getline(cin, line)) { for(string::iterator it = line.begin(); it != line.end(); ++it) { //cout << *it; string& str = coder[(int)(*it)]; morse << str; sizes.push_back(str.size()); } string encoded = morse.str(); //cout << "\n" << encoded << "\n"; int pos = 0; reverse(sizes.begin(), sizes.end()); for (vector<int>::iterator it = sizes.begin(); it != sizes.end(); ++it) { cout << decoder[encoded.substr(pos, *it)]; pos += *it; } cout << "\n"; sizes.clear(); morse.str(""); morse.clear(); } cout.flush(); }
--- c5.s607.cteam076.fs.cpp.0.fs.cpp +++ c5.s635.cteam076.fs.cpp.0.fs.cpp @@ -39,5 +39,5 @@ coder[(int)'X'] = "-..-"; coder[(int)'Y'] = "-.--"; - coder[(int)'X'] = "--.."; + coder[(int)'Z'] = "--.."; coder[(int)'_'] = "..--"; coder[(int)','] = ".-.-"; @@ -68,5 +68,5 @@ decoder["...-"] = 'V'; decoder[".--"] = 'W'; - decoder["-..-"] = 'Q'; + decoder["-..-"] = 'X'; decoder["-.--"] = 'Y'; decoder["--.."] = 'Z';