void turing_t::simuliraj() { string curr = Q0; triple prijelaz; tuple QT; while (1) { QT.first = curr; QT.second = traka.at( head ); if (delta.find( QT ) == delta.end()) { break; } else { prijelaz = delta[ QT ]; if ( (head == MIN && prijelaz.third == "L") || ( head == MAX && prijelaz.third == "R" ) ) { break; } curr = prijelaz.first; traka[ head ] = prijelaz.second; head += prijelaz.third == "R" ? +1 : -1; } } printf("%s|%d|", curr.c_str(), head); for ( vit it = traka.begin(); it != traka.end(); ++it ) { printf("%s", it->c_str()); } printf("|%d\n", (int)F.count( curr )); return; }
void turing_t::output() { for ( sit it = Q.begin(); it != Q.end(); ++it ) { printf("%s ", it->c_str() ); } puts( "" ); for ( sit it = sigma.begin(); it != sigma.end(); ++it ) { printf("%s ", it->c_str() ); } puts( "" ); for ( sit it = theta.begin(); it != theta.end(); ++it ) { printf("%s ", it->c_str() ); } puts( "" ); printf("%s\n", prazanZnak.c_str()); for ( vit it = traka.begin(); it != traka.end(); ++it ) { printf("%s", it->c_str()); } puts( "" ); for ( sit it = F.begin(); it != F.end(); ++it ) { printf("%s ", it->c_str() ); } puts( "" ); printf("%s\n", Q0.c_str()); printf("%d\n", head); for ( map< tuple, triple >::iterator it = delta.begin(); it != delta.end(); ++it ) { printf("%s,%s -> %s,%s,%s\n", it->first.first.c_str(), it->first.second.c_str(), it->second.first.c_str(), it->second.second.c_str(), it->second.third.c_str()); } return; }
int main() { scanf("%d",&TC); while(TC--) { // erase all elements: Data.erase (Data.begin(),Data.end()); pos = 0; scanf("%d",&n); REP(a,n) { if(a == 0) getline(cin,temp); getline(cin,temp); // Masukkan ke vector Data.pb(temp); // Debugging //cout << Data[a] << endl; if(Data[a][0] == 'L') pos--; else if(Data[a][0] == 'R')pos++; // Jika sama else if(Data[a][0] == 'S') { idx = Data[a][8] - '0'; // Debugging //printf("Index : %d\n",index); if(Data[idx - 1][0] == 'L') pos--; else if(Data[idx - 1][0] == 'R') pos++; // Jika dapat Same As lagi else { sameAs(a,idx); } } } printf("%d\n",pos); } return 0; }