#include #include char line[5][100]; char names[4][100] = {"North","East","South","West"}; void printcard(int idx, char A, char B) { line[0][4*idx]='|'; line[1][4*idx]='|'; line[2][4*idx]='|'; line[0][4*idx+4]='|'; line[1][4*idx+4]='|'; line[2][4*idx+4]='|'; line[0][4*idx+1]=line[0][4*idx+3]=line[2][4*idx+1]=line[2][4*idx+3]=B; line[1][4*idx+2]=A; line[0][4*idx+2]=line[2][4*idx+2]=line[1][4*idx+1]=line[1][4*idx+3]=' '; line[0][4*idx+5]=0; line[1][4*idx+5]=0; line[2][4*idx+5]=0; } int color(char c) { if (c=='C') return 0; if (c=='D') return 1; if (c=='S') return 2; if (c=='H') return 3; return -1; } int value(char c) { if (c=='2') return 0; if (c=='3') return 1; if (c=='4') return 2; if (c=='5') return 3; if (c=='6') return 4; if (c=='7') return 5; if (c=='8') return 6; if (c=='9') return 7; if (c=='T') return 8; if (c=='J') return 9; if (c=='Q') return 10; if (c=='K') return 11; if (c=='A') return 12; return -1; } int cmpf(const void *a, const void *b) { char *A=(char *)a; char *B=(char *)b; int a_c,b_c,a_v,b_v; a_c=color(A[0]); b_c=color(B[0]); a_v=value(A[1]); b_v=value(B[1]); if (a_c==b_c) return (a_v-b_v); return (a_c - b_c); } int main(void) { char c; int idx,start,i,j,y,pass=0; /* poradie: N, E, S, W = 0,1,2,3 */ char cards[4][20][5]; while (1) { scanf("%c ",&c); if (c=='#') break; switch (c) { case 'N': start=0; break; case 'E': start=1; break; case 'S': start=2; break; case 'W': start=3; break; } idx=(start+1)%4; for (i=0;i<52;i++) { scanf("%c%c ",&cards[idx][i/4][0],&cards[idx][i/4][1]); idx=(idx+1)%4; } for (i=0;i<4;i++) qsort(cards[i],13,sizeof(cards[0][0]),cmpf); if (pass!=0) printf("\n"); pass++; for (i=0;i<4;i++) { idx=(i+2)%4; for (j=0;j<13;j++) { printcard(j,cards[idx][j][0],cards[idx][j][1]); } printf("%s player:\n",names[idx]); printf("+---+---+---+---+---+---+---+---+---+---+---+---+---+\n"); for (y=0;y<3;y++) printf("%s\n",line[y]); printf("+---+---+---+---+---+---+---+---+---+---+---+---+---+\n"); } } return 0; }