fork download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5.  
  6. // for qsort
  7. /*
  8. int compare(int *t, int *s) {
  9.   return *t - *s;
  10. }
  11. */
  12.  
  13. int check(int *data) {
  14. int i, j;
  15. int test;
  16. for(i = 0; i < 4; ++i) {
  17. test = 1;
  18. for(j = 0; j < 4; ++j) {
  19. if(!data[i*4+j]) {
  20. test = 0;
  21. break;
  22. }
  23. }
  24. if(test) return 1;
  25. }
  26. for(i = 0; i < 4; ++i) {
  27. test = 1;
  28. for(j = 0; j < 4; ++j) {
  29. if(!data[j*4+i]) {
  30. test = 0;
  31. break;
  32. }
  33. }
  34. if(test) return 1;
  35. }
  36.  
  37. test = 1;
  38. for(i = 0; i < 4; ++i) {
  39. if(!data[i*4+i]) {
  40. test = 0;
  41. break;
  42. }
  43. }
  44. if(test) return 1;
  45.  
  46. for(i = 0; i < 4; ++i) {
  47. test = 1;
  48. if(!data[i*4+(3-i)]) {
  49. test = 0;
  50. break;
  51. }
  52. }
  53.  
  54. return test;
  55. }
  56.  
  57.  
  58. int main(void) {
  59. int num;
  60. int i, j, k;
  61. char buf[6];
  62. int X[4][4];
  63. int O[4][4];
  64. int emp;
  65. int result;
  66.  
  67. scanf("%d", &num);
  68. for(i = 1; i <= num; ++i) {
  69. gets(buf);
  70. emp = 0; result = 0;
  71. for(j = 0; j < 4; ++j) {
  72. gets(buf);
  73. for(k = 0; k < 4; ++k) {
  74. if(buf[k] == 'X') {
  75. X[j][k] = 1;
  76. O[j][k] = 0;
  77. } else if(buf[k] == 'O') {
  78. X[j][k] = 0;
  79. O[j][k] = 1;
  80. } else if(buf[k] == 'T') {
  81. X[j][k] = 1;
  82. O[j][k] = 1;
  83. } else {
  84. X[j][k] = 0;
  85. O[j][k] = 0;
  86. emp = 1;
  87. }
  88. }
  89. }
  90.  
  91. printf("Case #%d: ", i);
  92. if(check((int*)X)) {
  93. printf("X won\n");
  94. } else if(check((int*)O)) {
  95. printf("O won\n");
  96. } else if(emp) {
  97. printf("Game has not completed\n");
  98. }
  99. else {
  100. printf("Draw\n");
  101. }
  102. }
  103.  
  104. return 0;
  105. }
  106.  
Success #stdin #stdout 0s 5284KB
stdin
xxxx
xoxo
xxoo
xxxo
oooo
oxox
ooxx
ooox
stdout
Standard output is empty