#include #include #include #include #define SIZE 50 using namespace std; char str[SIZE]; int cisla[4]; char pole[7][35]; char comp[6][6] = {"+---+", "| |", "+ +", " +", " |", "| "}; int digits[10][7] = {{0,1,1,2,1,1,0}, {3,4,4,3,4,4,3}, {0,4,4,0,5,5,0}, {0,4,4,0,4,4,0}, {2,1,1,0,4,4,3}, {0,5,5,0,4,4,0}, {0, 5,5,0,1,1,0}, {0, 4,4,3,4,4,3}, {0,1,1,0,1,1,0}, {0,1,1,0,4,4,0}}; bool outnum[4][10]; int lim[2] = {24, 60}; int digit(int odkud, int pos){ for(int i=0;i<7; i++) { bool line[6] = {1,1,1,1,1,1}; for(int j=0; j<5; j++) { if(pole[i][odkud+j] == '.') continue; for(int k=0; k<6; k++) if(pole[i][odkud+j] != comp[k][j]) line[k] = 0; } for(int j=0; j<10; j++) { int tmp = digits[j][i]; //outnum[pos][j] = line[tmp] ? 1 : 0; if(!line[tmp]) outnum[pos][j] = 0; } } return 0; } int main() { while(true) { memset(outnum, 1, sizeof(bool)*40); fgets(str, SIZE, stdin); if(str[0] == 'e') { printf("end\n"); return 0; } for (int i = 0; i<7;i++){ strcpy(pole[i],str); fgets(str,SIZE,stdin); } fgets(str,SIZE,stdin); digit(0,0); digit(7,1); digit(17,2); digit(24,3); bool binv = false; for(int i=0; i<4;i++){ bool bfound = false; for(int j=0; j<10; j++) if(outnum[i][j]) { bfound= true; break; } if(!bfound){ printf("ambiguous\n"); binv = true; break; } /* printf("3###\n"); for(int j=0; j<10; j++) { printf("%d,", outnum[i][j]); } printf("\n"); */ } if(binv) continue; int out[2] = {-1,-1}; for(int i=0; i<2; i++) { binv = false; for(int j=0; j<10; j++) if(outnum[i*2][j]) { for(int k=0; k<10; k++) { if(outnum[i*2+1][k]) { int tmp = j*10 + k; if(tmp < lim[i]) { if(out[i] == -1) out[i] = tmp; else { binv = true; break; } } } } } if(out[i] == -1) binv = true; if(binv) { printf("ambiguous\n"); binv = true; break; } } if(binv) { continue; } printf("%d:%d\n", out[0],out[1]); } return 0; }