/* 20000524 */ #include "stdio.h" int t[9]; /* table */ int st[9][5]; /* statistics */ int k[9]; /* move */ main() { int i, j, w, n; for (i=0; i<9; i++) { for (j; j<3; j++) { st[i][j] = 0; } k[i] = -1; } k[0]=0; n=0; while ((k[n] != -1) && (n < 8)) n++; n--; while (k[0] != -1) { w = winnerk(); if (w*w > 4) { printf("Error %d\n",w); printk(); printt(); exit(); } st[n][w+2]++; /* printf("%d %d \t",n,w); printk(); printt(); */ if ((w==0) && (n<8)) n++; n=incrk(n); } for (n=0; n<9; n++) { printf("%d %6d %6d %6d %6d %6d\n",n+1,st[n][3],st[n][4],st[n][1],st[n][0],st[n][2]); } } winnerk() { int w; fillt(); w = winnert(); return(w); } winnert() { int r[3], c[3], d[2], e, s; r[0] = (t[0]+t[1]+t[2])/3; r[1] = (t[3]+t[4]+t[5])/3; r[2] = (t[6]+t[7]+t[8])/3; c[0] = (t[0]+t[3]+t[6])/3; c[1] = (t[1]+t[4]+t[7])/3; c[2] = (t[2]+t[5]+t[8])/3; d[0] = (t[0]+t[4]+t[8])/3; d[1] = (t[2]+t[4]+t[6])/3; s = r[0]+r[1]+r[2]+c[0]+c[1]+c[2]+d[0]+d[1]; e = r[0]*r[0]+r[1]*r[1]+r[2]*r[2]+c[0]*c[0]+c[1]*c[1]+c[2]*c[2]+d[0]*d[0]+d[1]*d[1]; /* printf("%d %d %d %d %d %d %d %d %d %d\n",r[0],r[1],r[2],c[0],c[1],c[2],d[0],d[1],s,e); */ if (s*s != e*e) { printf("Error\n"); exit(); } return(s); } cleant() { int i; for (i=0; i<9; i++) { t[i] = 0; } } fillt() { int i; cleant(); for (i=0; ((i<9)&&(k[i]!=-1)); i++) { if (t[k[i]] != 0) { printf ("Error\n"); exit(); } t[k[i]] = 1-2*(i%2); } } incrk(n) int n; { int i, b=0; if (n<0) { return(n); } k[n]++; if (k[n]==9) { k[n]=-1; n--; n=incrk(n); } for (i=0; i