adding cs235
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
#include "mimic.h"
|
||||
|
||||
mimic::mimic() {}
|
||||
|
||||
vector<string> parser(string input) {
|
||||
vector<string> results;
|
||||
string s;
|
||||
for(unsigned int i = 0; i < input.length(); i++) {
|
||||
char c = input[i];
|
||||
if(c != ' ') {
|
||||
s += c;
|
||||
}
|
||||
else {
|
||||
if(s != "") {
|
||||
results.push_back(s);
|
||||
s.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
if(s != "") {
|
||||
results.push_back(s);
|
||||
}
|
||||
return results;
|
||||
}
|
||||
|
||||
void mimic::add_to_dmmap(string prefix, string suffix) {
|
||||
bool add_test = true;
|
||||
for(unsigned int i = 0; i < dmmaps.size(); i++) {
|
||||
if(dmmaps[i].key == prefix) {
|
||||
add_test = false;
|
||||
dmmaps[i].values.push_back(suffix);
|
||||
}
|
||||
}
|
||||
if(add_test) {
|
||||
dmmaps.push_back(dmmap(prefix, suffix));
|
||||
}
|
||||
}
|
||||
|
||||
void mimic::createMap(string input) {
|
||||
cout << input << endl;
|
||||
vector<string> parsed_input = parser(input);
|
||||
for(unsigned int i = 0; i < parsed_input.size() - 2; i++) {
|
||||
string prefix;
|
||||
string suffix;
|
||||
prefix += parsed_input[i];
|
||||
prefix += " ";
|
||||
prefix += parsed_input[i+1];
|
||||
suffix += parsed_input[i+2];
|
||||
add_to_dmmap(prefix, suffix);
|
||||
}
|
||||
string prefix = parsed_input[parsed_input.size() - 2];
|
||||
prefix += " ";
|
||||
prefix += parsed_input[parsed_input.size() - 1];
|
||||
add_to_dmmap(prefix, "THE_END");
|
||||
}
|
||||
|
||||
vector<string> mimic::getSuffixList(string prefix) {
|
||||
for(unsigned int i = 0; i < dmmaps.size(); i++) {
|
||||
if(dmmaps[i].key == prefix) {
|
||||
return dmmaps[i].values;
|
||||
}
|
||||
}
|
||||
vector<string> v;
|
||||
return v;
|
||||
}
|
||||
|
||||
string mimic::generateText() {
|
||||
string text;
|
||||
srand (time(NULL));
|
||||
if(dmmaps.size() == 0) {
|
||||
return "";
|
||||
}
|
||||
text += dmmaps[0].key;
|
||||
text += " ";
|
||||
string prefix1 = dmmaps[0].key;
|
||||
while(true) {
|
||||
vector<string> v = getSuffixList(prefix1);
|
||||
string temp = v[rand() % v.size()];
|
||||
if(temp == "THE_END") {
|
||||
text.erase(text.find_last_not_of(" ")+1);
|
||||
return text;
|
||||
}
|
||||
else {
|
||||
text += temp;
|
||||
text += " ";
|
||||
}
|
||||
vector<string> prefix_vec = parser(prefix1);
|
||||
prefix1 = prefix_vec[1];
|
||||
prefix1 += " ";
|
||||
prefix1 += temp;
|
||||
}
|
||||
}
|
||||
|
||||
ostream & operator<<(ostream & os, mimic m) {
|
||||
os << "[";
|
||||
for(unsigned int i = 0; i < m.dmmaps.size(); i++) {
|
||||
os << "'" << m.dmmaps[i].key << "' ,";
|
||||
for(unsigned int j = 0; j < m.dmmaps[i].values.size(); j++) {
|
||||
os << m.dmmaps[i].values[j] << ", ";
|
||||
}
|
||||
}
|
||||
os << "]";
|
||||
return os;
|
||||
}
|
||||
Reference in New Issue
Block a user