#include #include #include #include #include #include #include #define pi 3.14159 using namespace std; char mainpoile[51][52]; char mala[51][52]; char velka[51][52]; void clearPoile() { for (int i = 0; i < 51; i++) { for (int j = 0; j < 51; j++) { mainpoile[i][j] = ' '; mala[i][j] = ' '; velka[i][j] = ' '; } } for (int i = 0; i < 51; i++) { char c = (i % 10 == 0) ? '@' : 'X'; mainpoile[0][i] = c; mainpoile[50][i] = c; mainpoile[i][0] = c; mainpoile[i][50] = c; mainpoile[i][51] = 0; } mainpoile[2][24] = '1'; mainpoile[2][26] = '2'; mainpoile[25][2] = '9'; mainpoile[25][48] = '3'; mainpoile[48][25] = '6'; mainpoile[25][25] = '*'; } double srabs(double d) { return (d<0) ? -d : d; } void printPoile() { for (int i = 0; i < 51; i++) { cout << mainpoile[i] << endl; } } bool isNear(double x, double y, int dist) { return sqrt( (x-25)*(x-25) + (y-25)*(y-25) ) <= dist; } void paintHand(double x1, double y1, double x2, double y2, int handlen) { // clearPoile(); if (handlen==15) { if (srabs(x1-x2) > srabs(y1-y2)) { // horz if (x1 > x2) { swap(x1, x2); swap(y1, y2); } for (int x = x1 + 0.5; x < x2 + 0.5; x++) { int y = (x-x1)/(x2-x1) * (y2-y1) + y1 + 0.5; if (isNear(x,y,handlen)) mala[x][50-y] = 'o'; } } else { // vert if (y1 > y2) { swap(x1, x2); swap(y1, y2); } for (int y = y1 + 0.5; y < y2 + 0.5; y++) { int x = (y-y1)/(y2-y1) * (x2-x1) + x1 + 0.5; if (isNear(x,y,handlen)) mala[x][50-y] = 'o'; } } } else { if (srabs(x1-x2) > srabs(y1-y2)) { // horz if (x1 > x2) { swap(x1, x2); swap(y1, y2); } for (int x = x1 + 0.5; x < x2 + 0.5; x++) { int y = (x-x1)/(x2-x1) * (y2-y1) + y1 + 0.5; if (isNear(x,y,handlen)) velka[x][50-y] = 'o'; } } else { // vert if (y1 > y2) { swap(x1, x2); swap(y1, y2); } for (int y = y1 + 0.5; y < y2 + 0.5; y++) { int x = (y-y1)/(y2-y1) * (x2-x1) + x1 + 0.5; if (isNear(x,y,handlen)) velka[x][50-y] = 'o'; } } } //mala[25][25] = 'o'; } void sluc() { for (int i = 1; i < 50; i++) { for (int j = 1; j < 50; j++) { if (mala[i][j] == 'o') mainpoile[i][j] = 'o'; if (mala[i][j-1] == 'o' && mala[i][j+1] == 'o') mainpoile[i][j] = '-'; if (mala[i-1][j] == 'o' && mala[i+1][j] == 'o') mainpoile[i][j] = '|'; if (mala[i-1][j-1] == 'o' && mala[i+1][j+1] == 'o') mainpoile[i][j] = '\\'; if (mala[i-1][j+1] == 'o' && mala[i+1][j-1] == 'o') mainpoile[i][j] = '/'; } } for (int i = 1; i < 50; i++) { for (int j = 1; j < 50; j++) { if (velka[i][j] == 'o') mainpoile[i][j] = 'o'; if (velka[i][j-1] == 'o' && velka[i][j+1] == 'o') mainpoile[i][j] = '-'; if (velka[i-1][j] == 'o' && velka[i+1][j] == 'o') mainpoile[i][j] = '|'; if (velka[i-1][j-1] == 'o' && velka[i+1][j+1] == 'o') mainpoile[i][j] = '\\'; if (velka[i-1][j+1] == 'o' && velka[i+1][j-1] == 'o') mainpoile[i][j] = '/'; } } } void paintHands(int h, int m) { double x = 15 * sin((double) (- (double) h / 12 - (double) m/(60*12))* 2*pi - pi/2) + 25; double y = 15 * cos((double) (- (double) h / 12 - (double) m/(60*12))* 2*pi - pi/2) + 25; paintHand(25, 25, x, y, 15); x = 21 * sin((double) -m / 60 * 2 * pi - pi/2) + 25; y = 21 * cos((double) -m / 60 * 2 * pi - pi/2) + 25; paintHand(25, 25, x, y, 21); sluc(); mainpoile[25][25] = '*'; } int main() { while (cin) { string line; getline(cin, line); if (line == "END") return 0; int h,m; sscanf(line.c_str(), "%d:%d", &h, &m); clearPoile(); paintHands(h,m); printPoile(); cout << endl; } return 0; }