我正在开发Conway的生命游戏版本,其中用户可以以“B ## / S ##”的格式输入他们自己的细胞出生,死亡和存活规则。为了实现这些规则,我使用基本的字符串解析将出生(B)规则和生存(S)规则移动到单独的向量中。但是,我在形成生存载体时遇到了麻烦。
原始细胞规则在载体中,其内容与细胞出生载体进行比较。我遇到的问题是,当输入规则字符串如“B012345678 / S183”时,生存向量的一部分没有被添加,因为一个向量比另一个长,导致空值和段错误的比较。
我的问题是:我可以做些什么来填补这些空值,还是有办法传递那些空值?
// Extract cell birth rules from rules string
vector<char> cellBirth(vector<char> cellrules) {
int i = 0;
vector<char> birthrule;
while (cellrules[i] != 'S') {
birthrule.push_back(cellrules[i]);
++i;
}
return birthrule;
}
// Extract cell survival rules
vector<char> cellSurvive(vector<char> cellrules, vector<char> cellbirth) {
vector<char> surviverule;
long size = cellrules.size();
//cout << "Cellrule size: " << size << endl;
for (int i = 0; i < size; i++) {
if (cellrules[i] != cellbirth[i]) { //Comparison happens here
surviverule.push_back(cellrules[i]);
}
}
return surviverule;
}
答案 0 :(得分:0)
细胞分娩总是小于细胞规,所以你的方法是错误的。有很多方法可以给这只猫上皮,这里有一个:
vector<char> cellSurvive(vector<char> cellrules) {
vector<char> surviverule;
bool pastS = false;
for (int i = 0; i < cellrules.size(); i++) {
if (pastS)
surviverule.push_back(cellrules[i]);
else if (cellrules[i] == 'S')
pastS = true;
}
return surviverule;
}