#include #include #include using namespace std; string in[10]; char tmpout[10][38]; void pr(int pos, int d) { switch(d) { case 0: case 2: case 3: case 5: case 6: case 7: case 8: case 9: strcpy(tmpout[0]+pos, "+---+"); tmpout[0][pos+5]=' '; } switch(d) { case 0: case 4: case 5: case 6: case 8: case 9: tmpout[0][pos]='+'; tmpout[1][pos]='|'; tmpout[2][pos]='|'; tmpout[3][pos]='+'; } switch(d) { case 0: case 1: case 2: case 3: case 4: case 7: case 8: case 9: tmpout[0][pos+4]='+'; tmpout[1][pos+4]='|'; tmpout[2][pos+4]='|'; tmpout[3][pos+4]='+'; } switch(d) { case 2: case 3: case 4: case 5: case 6: case 8: case 9: strcpy(tmpout[3]+pos, "+---+"); tmpout[3][pos+5]=' '; } switch(d) { case 0: case 2: case 6: case 8: tmpout[3][pos]='+'; tmpout[4][pos]='|'; tmpout[5][pos]='|'; tmpout[6][pos]='+'; } switch(d) { case 0: case 1: case 3: case 4: case 5: case 6: case 7: case 8: case 9: tmpout[3][pos+4]='+'; tmpout[4][pos+4]='|'; tmpout[5][pos+4]='|'; tmpout[6][pos+4]='+'; } switch(d) { case 0: case 2: case 3: case 5: case 6: case 8: case 9: strcpy(tmpout[6]+pos, "+---+"); tmpout[6][pos+5]=' '; } } bool canbe(char x, char c) { return x=='.' || x==c; } bool tryit(int pos, int d) { for(int i=0; i<10; ++i) strncpy(tmpout[i], " ", 29); pr(0, d); for(int i=0; i<5; ++i) { for(int j=0; j<7; ++j) { if(not canbe(in[j][pos+i], tmpout[j][i])) return false; } } return true; } /* switch(d) { case 0: case 2: case 3: case 5: case 6: case 7: case 8: case 9: if(not (canbe(in[0][pos],'+') and canbe(in[0][pos+1], '-') and canbe(in[0][pos+2], '-') and canbe(in[0][pos+3], '-') and canbe(in[0][pos+4], '+'))) return false; default: if(not (canbe(in[0][pos],'+') and canbe(in[0][pos+1], '-') and canbe(in[0][pos+2], '-') and canbe(in[0][pos+3], '-') and canbe(in[0][pos+4], '+'))) return false; } switch(d) { case 0: case 4: case 5: case 6: case 8: case 9: if(not (canbe(in[0][pos],'+') and canbe(in[1][pos], '|') and canbe(in[2][pos], '|') and canbe(in[3][pos], '+'))) return false; } switch(d) { case 0: case 1: case 2: case 3: case 4: case 7: case 8: case 9: if(not (canbe(in[0][pos+4],'+') and canbe(in[1][pos+4], '|') and canbe(in[2][pos+4], '|') and canbe(in[3][pos+4], '+'))) return false; } switch(d) { case 2: case 3: case 4: case 5: case 6: case 8: case 9: if(not (canbe(in[3][pos],'+') and canbe(in[3][pos+1], '-') and canbe(in[3][pos+2], '-') and canbe(in[3][pos+3], '-') and canbe(in[3][pos+4], '+'))) return false; } switch(d) { case 0: case 2: case 6: case 8: if(not (canbe(in[3][pos],'+') and canbe(in[4][pos], '|') and canbe(in[5][pos], '|') and canbe(in[6][pos], '+'))) return false; } switch(d) { case 0: case 1: case 3: case 4: case 5: case 6: case 7: case 8: case 9: if(not (canbe(in[3][pos+4],'+') and canbe(in[4][pos+4], '|') and canbe(in[5][pos+4], '|') and canbe(in[6][pos+4], '+'))) return false; } switch(d) { case 0: case 2: case 3: case 5: case 6: case 8: case 9: if(not (canbe(in[6][pos],'+') and canbe(in[6][pos+1], '-') and canbe(in[6][pos+2], '-') and canbe(in[6][pos+3], '-') and canbe(in[6][pos+4], '+'))) return false; } return true;*/ int pos[4] = {0, 7, 17, 24}; int main() { while(getline(cin, in[0]), string(in[0])!="end") { for(int i=1; i<9; ++i) getline(cin, in[i]); char out[6]="xxxx"; bool ambig = false; int max[4] = {3, 10, 6, 10}; vector pos0; vector pos1; for(int i=0; i<4; ++i) { for(int j=0; j1 && out[i]!='x') ambig = true; out[i] = '0'+j; if(i==0) pos0.push_back(j); if(i==1) pos1.push_back(j); } } } if(pos0.size()>1 && pos1.size()>1) ambig = true; else if(pos0.size()==1 && pos1.size()==1) { // ok } else if(pos0.size()==1 && out[0]=='2') { out[1] = 'x'; for(size_t i=0; i