#include #include #include #include #define PI (atan(1.0) * 4) char Buffer[1000]; char Output[100][100]; char Help[100][100]; char Help2[100][100]; int Dist(int x1, int y1, int x2, int y2) { return ((x2 - x1) * (x2 - x1)) + ((y2 - y1) * (y2 - y1)); } void Draw(int angle, int l) { memset(Help, 0, sizeof(Help)); memset(Help2, 0, sizeof(Help2)); int type = angle / 90; //printf("Type %d\n", type); int a = angle % 90; if((type == 1) || (type == 3) || (type == 5) || (type == 7)) { a = 90 - a; } for(int y = 25; 1; y--) { int yy = 25 - y; int x = ((int) ((yy * tan((((long double) a) / 2) * PI / 180)) + 0.5)) + 25; if(Dist(x, y, 25, 25) > l * l) { Help2[x][y] = 2; break; } Help2[x][y] = 1; } for(int x = 0; x < 51; x++) { for(int y = 0; y < 51; y++) { int xx = 25 - x; int yy = 25 - y; int xxx, yyy; if(type == 0) { xxx = xx; yyy = yy; } else if(type == 1) { xxx = -yy; yyy = -xx; } else if(type == 2) { xxx = -yy; yyy = xx; } else if(type == 3) { xxx = xx; yyy = -yy; } else if(type == 4) { xxx = -xx; yyy = -yy; } else if(type == 5) { xxx = yy; yyy = xx; } else if(type == 6) { xxx = yy; yyy = -xx; } else if(type == 7) { xxx = -xx; yyy = yy; } Help[25 - xxx][25 - yyy] = Help2[x][y]; } } } void Rewrite() { for(int x = 0; x < 51; x++) { for(int y = 0; y < 51; y++) { if((x == 25) && (y == 25)) { continue; } if(Help[x][y] == 1) { if((Help[x - 1][y]) && (Help[x + 1][y])) { Output[x][y] = '-'; } else if((Help[x][y - 1]) && (Help[x][y + 1])) { Output[x][y] = '|'; } else if((Help[x - 1][y - 1]) && (Help[x + 1][y + 1])) { Output[x][y] = '\\'; } else if((Help[x + 1][y - 1]) && (Help[x - 1][y + 1])) { Output[x][y] = '/'; } else { Output[x][y] = 'o'; } } } } } int main() { while(1) { scanf("%s", Buffer); if(Buffer[0] == 'E') { break; } int h, m; sscanf(Buffer, "%d:%d", &h, &m); memset(Output, ' ', sizeof(Output)); for(int x = 0; x < 51; x++) { if(x % 10) { Output[x][0] = 'X'; Output[x][50] = 'X'; } else { Output[x][0] = '@'; Output[x][50] = '@'; } } for(int y = 0; y < 51; y++) { if(y % 10) { Output[0][y] = 'X'; Output[50][y] = 'X'; } else { Output[0][y] = '@'; Output[50][y] = '@'; } } Output[25][25] = '*'; Output[2][25] = '9'; Output[48][25] = '3'; Output[24][2] = '1'; Output[26][2] = '2'; Output[25][48] = '6'; int a = ((h % 12) * 60) + m; Draw(a, 15); Rewrite(); a = m * 12; Draw(a, 21); Rewrite(); //printf("%d:%d\n", h, m); for(int y = 0; y < 51; y++) { for(int x = 0; x < 51; x++) { putchar(Output[x][y]); } putchar('\n'); } putchar('\n'); } return 0; }