#include #include char * n[10]; int getdigit (int pos, char input[7][31], char * output) { int i = 0; for (i = 0; i < 7; ++i) { strncpy(&output[i * 5], &input[i][pos], 5); } return (0); } int digitmatch (char * first, char * second) { int i; for (i = 0; i < 29; ++i) { if (first[i] != second[i] && first[i] != '.') { return (0); } } return (1); } int match (char * d) { int i = 0; int s = 0; int r = 0; int lm = 0; for (i = 0; i < 10; ++i) { s += (r = digitmatch(d, n[i])); if (r) { lm = i; } } if (s > 1) { return (10); } else if (s == 1) { return (lm); } else { return (-1); } } int task (char input[7][31]) { char d[35]; int i = 0; int a[4]; int ambiguous = 0; int pos = 0; for (i = 0; i < 4; ++i) { switch (i) { case 0 : pos = 0; break; case 1 : pos = 7; break; case 2 : pos = 17; break; case 3 : pos = 24; break; } getdigit(pos, input, d); a[i] = match(d); if (a[i] == 10) { ambiguous = 1; } /* printf("D = %s\n", d); */ } if (ambiguous) { printf("ambiguous\n"); } else { printf("%d%d:%d%d\n", a[0], a[1], a[2], a[3]); } return (0); } int main (int argc, char ** argv) { int i = 0; char fl[31]; char input[7][31]; n[0] = "+---+| || |+ +| || |+---+"; n[1] = " + | | + | | +"; n[2] = "+---+ | |+---+| | +---+"; n[3] = "+---+ | |+---+ | |+---+"; n[4] = "+ +| || |+---+ | | +"; n[5] = "+---+| | +---+ | |+---+"; n[6] = "+---+| | +---+| || |+---+"; n[7] = "+---+ | | + | | +"; n[8] = "+---+| || |+---+| || |+---+"; n[9] = "+---+| || |+---+ | |+---+"; while (1) { gets(input[0]); if (strcmp("end", input[0]) == 0) { break; } for (i = 1; i < 7; ++i) { gets(input[i]); } task(input); gets(fl); gets(fl); /* for (i = 0; i < 7; ++i) { printf("%s\n", input[i]); } */ } printf("end\n"); return(0); }