CHATCHIT - Chat chit
Tác giả: khuc_tuan
Ngôn ngữ: C++
#include <string>
#include <iostream>
#include <map>
using namespace std;
map<string,string> RW, R;
void init() {
RW["k"]="khong";
RW["ko"]="khong";
RW["ng"]="nguoi";
RW["n"]="nhieu";
RW["dc"]="duoc";
RW["hok"]="khong";
RW["ntn"]="nhu the nao";
RW["kq"]="ket qua";
R["j"]="gi";
R["w"]="qu";
R["f"]="ph";
R["dz"]="d";
R["z"]="d";
}
int main() {
init();
string s;
getline( cin, s);
bool tiep = true;
while(tiep) {
tiep = false;
for(int i=0;i<s.length();++i) if(islower( s[i])) {
int st = i;
int en = i;
while(st>0 && islower(s[st-1])) --st;
while(en<(int)s.length()-1 && islower(s[en+1])) ++en;
string w = s.substr( st, en-st+1);
if(RW.count(w)) {
tiep = true;
s.replace( st, en-st+1, RW[w]);
break;
}
}
}
//cout << s << endl;
tiep = true;
while(tiep) {
tiep = false;
for(int i=0;i<(int)s.length()-1;++i) if(R.count(string("")+s[i] + s[i+1])) {
tiep = true;
//cout << s << endl;
s.replace( i, 2, R[string("")+s[i]+ s[i+1]]);
//cout << " sau : " << s << endl;
break;
}
for(int i=0;i<s.length();++i) if(R.count(string("")+s[i])) {
tiep = true;
s.replace( i, 1, R[string("")+s[i]]);
break;
}
}
cout << s << endl;
//system("pause");
return 0;
}