#include #define LPL " +" #define LIN "+---+" #define BLI "+ +" #define BBB "| |" #define LBR "| " #define RBR " |" char one[7][6] = {LPL,RBR,RBR,LPL,RBR,RBR,LPL}; char two[7][6] = {LIN,RBR,RBR,LIN,LBR,LBR,LIN}; char thr[7][6] = {LIN,RBR,RBR,LIN,RBR,RBR,LIN}; char fou[7][6] = {BLI,BBB,BBB,LIN,RBR,RBR,LPL}; char fiv[7][6] = {LIN,LBR,LBR,LIN,RBR,RBR,LIN}; char six[7][6] = {LIN,LBR,LBR,LIN,BBB,BBB,LIN}; char sev[7][6] = {LIN,RBR,RBR,LPL,RBR,RBR,LPL}; char eig[7][6] = {LIN,BBB,BBB,LIN,BBB,BBB,LIN}; char nin[7][6] = {LIN,BBB,BBB,LIN,RBR,RBR,LIN}; char zer[7][6] = {LIN,BBB,BBB,BLI,BBB,BBB,LIN}; char field[7][32]; int comp(int col, int kolik){ int res=0,tot = 0,j,k,i; for( i = 0; i < 7; i++) for( j = 0; j < 5 ; j++){ if( field[i][col+j] != '.' && field[i][j+col] != one[i][j] ) goto N1; } res++; tot += 1; N1: for( i = 0; i < 7; i++) for( j = 0; j < 5 ; j++){ if( field[i][col+j] != '.' && field[i][j+col] != two[i][j] ) goto N2; } res++; tot += 2; N2: if(kolik == 0) goto N9; for( i = 0; i < 7; i++) for( j = 0; j < 5 ; j++){ if( field[i][col+j] != '.' && field[i][j+col] != thr[i][j] ) goto N3; } res++; tot = 3; N3: if(kolik == 1) goto N9; for( i = 0; i < 7; i++) for( j = 0; j < 5 ; j++){ if( field[i][col+j] != '.' && field[i][j+col] != fou[i][j] ) goto N4; } res++; tot = 4; N4: for( i = 0; i < 7; i++) for( j = 0; j < 5 ; j++){ if( field[i][col+j] != '.' && field[i][j+col] != fiv[i][j] ) goto N5; } res++; tot = 5; N5: if(kolik == 2) goto N9; for( i = 0; i < 7; i++) for( j = 0; j < 5 ; j++){ if( field[i][col+j] != '.' && field[i][j+col] != six[i][j] ) goto N6; } res++; tot = 6; N6: for( i = 0; i < 7; i++) for( j = 0; j < 5 ; j++){ if( field[i][col+j] != '.' && field[i][j+col] != sev[i][j] ) goto N7; } res++; tot = 7; N7: for( i = 0; i < 7; i++) for( j = 0; j < 5 ; j++){ if( field[i][col+j] != '.' && field[i][j+col] != eig[i][j] ) goto N8; } res++; tot = 8; N8: for( i = 0; i < 7; i++) for( j = 0; j < 5 ; j++){ if( field[i][col+j] != '.' && field[i][j+col] != nin[i][j] ) goto N9; } res++; tot = 9; N9: for( i = 0; i < 7; i++) for( j = 0; j < 5 ; j++){ if( field[i][col+j] != '.' && field[i][j+col] != zer[i][j] ) goto N0; } res++; tot = 0; N0: if( kolik == 0 && res > 1){ if( res > 2)return -1; return -tot; } if(res > 1){ printf("%di %dk\n",col,kolik); return -1;} else return tot; } int main(){ int i,j; int a,b,c,d; size_t n = 32; #define amb { printf("ambiguous\n"); goto L1; } L1: //getline((char **)&field[0],&n,stdin); gets(field[0]); if( field[0][0] == 'e'){ printf("end\n"); return 0; } for(i=1;i<7;i++)gets(field[i]); //getline((char **)&field[i],&n,stdin); scanf("\n\n"); a = comp(0,0); if(a==-1)amb if(a<-1){ b = comp(7,42); if(b == -1 || b < 4) amb else a=-(a+2); } else if(a==2) b = comp(7,1); else b = comp(7,42); if(b==-1)amb c = comp(17,2); if(c==-1)amb d = comp(24,42); if(d==-1)amb printf("%d%d:%d%d\n",a,b,c,d); goto L1; }