本文整理汇总了C++中state::size方法的典型用法代码示例。如果您正苦于以下问题:C++ state::size方法的具体用法?C++ state::size怎么用?C++ state::size使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类state
的用法示例。
在下文中一共展示了state::size方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: match
bool simulation::match(const state &left, const state &right)
{
assert(left.size() == right.size());
for (size_t i = 0; i < left.size(); i++)
{
if (!is_variable(left[i]) && !is_variable(right[i]) && left[i] != right[i])
{
return false;
}
}
return true;
}
示例2: next_state
state next_state(const state &s)
{
auto state_size = s.size();
state ret;
ret.reserve(state_size);
if (!state_size) {
throw std::runtime_error("empty state");
}
// trivial case
if (state_size == 1) {
ret.push_back(false);
return ret;
}
// Left border
ret.push_back(s[1] != s[state_size - 1]);
for (std::vector<bool>::size_type i = 1; i < state_size - 1; ++i) {
ret.push_back(s[i - 1] != s[i + 1]);
}
// Right border
ret.push_back(s[state_size - 2] != s[0]);
return ret;
}
示例3: countBlack
double GTPWrapper::countBlack(state bboard){
double ret=0;
for(unsigned int i=0;i<(bboard.size()/2);i++)
if(bboard[2*i]==0 && bboard[(2*i)+1]==1)
ret++;
return ret;
}
示例4: hash
int hash(state& s) {
int l=0;
for(int i=0;i<s.size();i++) {
l+=primes[i]*hash(s[i]);
l%=32609;
}
return l;
}
示例5: recurse
void recurse(state& s,int pts) {
// cout<<"RECURSE"<<' '<<pts;
if(done) return;
int l=hash(s);
for(set<gstate>::iterator it=MHASH[l].begin();it!=MHASH[l].end();++it) {
if((*it).first==s) {
const_cast<int&>((*it).second)=min((*it).second,pts);
return;
}
}
if(l==superhash) {
if(m==s) {
done=1;
MHASH[l].insert(make_pair(s,pts));
return;
}
}
MHASH[l].insert(make_pair(s,pts));
for(int i=1;i<s.size();i++) {
int maxV=0,maxW=0;
if(s[i].size()) maxV=s[i].back();
if(s[i-1].size()) maxW=s[i-1].back();
if( ((maxV>maxW)&&maxW) || (!maxV&&maxW)) { //add to s[i]
s[i].push_back(s[i-1].back());
s[i-1].pop_back();
Q.push_back(make_pair(s,pts+1));/*
recurse(s,pts+1);*/
s[i-1].push_back(s[i].back());
s[i].pop_back();
}
if( ((maxW>maxV)&&maxV) || (!maxW&&maxV)) { //add to [s-1]
s[i-1].push_back(s[i].back());
s[i].pop_back();
Q.push_back(make_pair(s,pts+1));/*
recurse(s,pts+1);*/
s[i].push_back(s[i-1].back());
s[i-1].pop_back();
}
}
}
示例6: foreach
friend void foreach(state const& st, Lambda l) {
const auto L = st.size();
for (size_t i = 0; i < L; ++i) l(i, st(i));
}