fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. #define LEN 32
  6.  
  7. #define WPIECE 1
  8. #define WPAWN 2
  9. #define BPAWN 3
  10. #define BPIECE 4
  11.  
  12. int board[8][8];
  13.  
  14. int checkmove(char token[])
  15. {
  16. int x1,y1,x2,y2;
  17. y1=token[0]-'a';
  18. x1=token[1]-'0'-1;
  19. y2=token[2]-'a';
  20. x2=token[3]-'0'-1;
  21. printf("\n(%s) moving %d:%d to %d:%d\n",token,x1,y1,x2,y2);
  22. switch(board[x1][y1])
  23. {
  24. case BPIECE:
  25. board[x1][y1]=0;
  26. board[x2][y2]=BPIECE;
  27. break;
  28.  
  29. case WPIECE:
  30. board[x1][y1]=0;
  31. board[x2][y2]=WPIECE;
  32. break;
  33.  
  34. case WPAWN:
  35. if(y1==y2)
  36. {
  37. if(x2!=x1+1 && x2!=x1+2)
  38. return 0;
  39. if(board[x1+1][y2])
  40. return 0;
  41. if(x2==x1+1)
  42. board[x2][y2]=WPAWN;
  43. if(x2==x1+2)
  44. {
  45. if(board[x1+2][y2])
  46. return 0;
  47. board[x2][y2]=WPAWN;
  48. }
  49. } else {
  50. if(y2!=y1+1 && y2!=y1-1)
  51. return 0;
  52. if(x2!=x1+1)
  53. return 0;
  54.  
  55. if(board[x2][y2]==BPIECE || board[x2][y2]==BPAWN)
  56. board[x2][y2]=WPAWN;
  57. else
  58. return 0;
  59. }
  60. board[x1][y1]=0;
  61. break;
  62.  
  63. case BPAWN:
  64.  
  65. if(y1==y2)
  66. {
  67. if(x2!=x1-1 && x2!=x1-2)
  68. return 0;
  69.  
  70. if(board[x1-1][y2])
  71. return 0;
  72.  
  73. if(x2==x1-1)
  74. board[x2][y2]=BPAWN;
  75.  
  76. if(x2==x1-2)
  77. {
  78. if(board[x1-2][y2])
  79. return 0;
  80. board[x2][y2]=BPAWN;
  81. }
  82. } else {
  83. if(y2!=y1+1 && y2!=y1-1)
  84. return 0;
  85. if(x2!=x1-1)
  86. return 0;
  87.  
  88. if(board[x2][y2]==WPIECE || board[x2][y2]==WPAWN)
  89. board[x2][y2]=BPAWN;
  90. else
  91. return 0;
  92. }
  93.  
  94. board[x1][y1]=0;
  95. break;
  96.  
  97.  
  98. }
  99.  
  100. return 1;
  101. }
  102.  
  103.  
  104. int main()
  105. {
  106.  
  107. char line[LEN];
  108. fgets(line,LEN,stdin);
  109. int times=atoi(line);
  110. char *token;
  111. int result[times];
  112. memset(result,0,sizeof(result));
  113. int linecount=0;
  114. int wordcount;
  115. for(int i=0;i<times;i++)
  116. {
  117. memset(board,0,sizeof(board));
  118. for(int i=0;i<8;i++)
  119. {
  120.  
  121. board[0][i]=WPIECE;
  122. board[1][i]=WPAWN;
  123. board[6][i]=BPAWN;
  124. board[7][i]=BPIECE;
  125. }
  126. wordcount=0;
  127. fgets(line,LEN,stdin);
  128. token=strtok(line," ");
  129. while(token!=NULL)
  130. {
  131. wordcount++;
  132.  
  133.  
  134. for(int i=0;i<8;i++)
  135. {
  136. for(int j=0;j<8;j++)
  137. {
  138. printf("%d ",board[i][j]);
  139. }
  140. printf("\n");
  141.  
  142. }
  143.  
  144.  
  145. if(!checkmove(token))
  146. {
  147. result[linecount]=wordcount;
  148. break;
  149. } else
  150. token=strtok(NULL," ");
  151. }
  152. linecount++;
  153.  
  154. }
  155.  
  156. for(int i=0;i<linecount;i++)
  157. printf("%d ",result[i]);
  158. printf("\n\n");
  159. for(int i=0;i<8;i++)
  160. {
  161. for(int j=0;j<8;j++)
  162. {
  163. printf("%d ",board[i][j]);
  164. }
  165. printf("\n");
  166.  
  167. }
  168.  
  169. return 0;
  170. }
Success #stdin #stdout 0.01s 5284KB
stdin
1
d2d3 c7c6 d3d4 c6c4 h2h3
stdout
1 1 1 1 1 1 1 1 
2 2 2 2 2 2 2 2 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
3 3 3 3 3 3 3 3 
4 4 4 4 4 4 4 4 

(d2d3) moving 1:3 to 2:3
1 1 1 1 1 1 1 1 
2 2 2 0 2 2 2 2 
0 0 0 2 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
3 3 3 3 3 3 3 3 
4 4 4 4 4 4 4 4 

(c7c6) moving 6:2 to 5:2
1 1 1 1 1 1 1 1 
2 2 2 0 2 2 2 2 
0 0 0 2 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 3 0 0 0 0 0 
3 3 0 3 3 3 3 3 
4 4 4 4 4 4 4 4 

(d3d4) moving 2:3 to 3:3
1 1 1 1 1 1 1 1 
2 2 2 0 2 2 2 2 
0 0 0 0 0 0 0 0 
0 0 0 2 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 3 0 0 0 0 0 
3 3 0 3 3 3 3 3 
4 4 4 4 4 4 4 4 

(c6c4) moving 5:2 to 3:2
1 1 1 1 1 1 1 1 
2 2 2 0 2 2 2 2 
0 0 0 0 0 0 0 0 
0 0 3 2 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
3 3 0 3 3 3 3 3 
4 4 4 4 4 4 4 4 

(h2h3
) moving 1:7 to 2:7
0 

1 1 1 1 1 1 1 1 
2 2 2 0 2 2 2 0 
0 0 0 0 0 0 0 2 
0 0 3 2 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
3 3 0 3 3 3 3 3 
4 4 4 4 4 4 4 4