#include #include #include using namespace std; string digits[] = { "+---+ ++---++---++ ++---++---++---++---++---+", "| | | | || || | || || |", "| | | | || || | || || |", "+ + ++---++---++---++---++---+ ++---++---+", "| | || | | || | || | |", "| | || | | || | || | |", "+---+ ++---++---+ ++---++---+ ++---++---+" }; int main() { bool a[100],b[100]; int aCount,bCount; char in[100]; while (true) { aCount = 24; bCount = 60; bool valid = true; for (int i = 0; i < 100; i++) { a[i] = false; } for (int i = 0; i < 100; i++) { b[i] = false; } for (int i = 0; i < 24; i++) { a[i] = true; } for (int i = 0; i < 60; i++) { b[i] = true; } for (int j = 0; j < 7; j++) { memset(in,0,30); cin.getline(in,30,'\n'); if ((in[0] == 'e') && (in[1] == 'n') && (in[2] == 'd')) { goto exitLabel; } if (in[0] == '\0') { goto backtostart; } if (((j==2) || (j==4)) && (in[14] != 'o') && (in[14] != '.')) { valid = false; } for (int i = 0; i < 5; i++) { for (int k = 0; k < 10; k++) { if ((in[i] != digits[j][i+k*5]) && (in[i] != '.')) { for (int x = k*10; x < k*10+10; x++) { if (a[x]) { a[x] = false; aCount--; } } } } } for (int i = 0; i < 5; i++) { for (int k = 0; k < 10; k++) { if ((in[i+7] != digits[j][i+k*5]) && (in[i+7] != '.')) { for (int x = k; x < 24; x+=10) { if (a[x]) { a[x] = false; aCount--; } } } } } for (int i = 0; i < 5; i++) { for (int k = 0; k < 10; k++) { if ((in[i+17] != digits[j][i+k*5]) && (in[i+17] != '.')) { for (int x = k*10; x < k*10+10; x++) { if (b[x]) { b[x] = false; bCount--; } } } } } for (int i = 0; i < 5; i++) { for (int k = 0; k < 10; k++) { if ((in[i+24] != digits[j][i+k*5]) && (in[i+24] != '.')) { for (int x = k; x < 60; x+=10) { if (b[x]) { b[x] = false; bCount--; } } } } } } if (valid && (aCount == 1) && (bCount == 1)) { for (int i = 0; i < 24; i++) { if (a[i]) { if (i < 10) cout << "0"; cout << i << ":"; } } for (int i = 0; i < 60; i++) { if (b[i]) { if (i < 10) cout << "0"; cout << i << endl; } } }else{ cout << "ambiguous" << endl; } backtostart: ; } exitLabel: cout << "end" << endl; }