home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / snip9707.zip / REVERSI.C < prev    next >
C/C++ Source or Header  |  1997-07-05  |  3KB  |  75 lines

  1. /* +++Date last modified: 05-Jul-1997 */
  2.  
  3. #define X N(a,O(h,W(f,M(c,g))),O(i,W(f,M(d,g))))
  4. #define A(x) r(D(x,1); O(x,-9); D(x,O(x,1)))
  5. #define L(x) toupper(getchar())-x
  6. #define R Z,Z,0,0
  7. #define S 0,9,6,6,6,6,6,6,9,0
  8. #define q D(h,0); A(f)A(g)
  9. #define T 0,6,1,2,2,2,2,1,6,0
  10. #define U 0,6,2,3,3,3,3,2,6,0
  11. #define C(x) ((x<1)||(x>8))
  12. #define F(x,y) printf(x,y);
  13. #define N(x,y,z) *O(*O(x,y),z)
  14. #define y(a,b,c) a[b][c]
  15. #define O(x,y) ((x)+(y))
  16. #define u(x) (O(0,-(x)))
  17. #define W(x,y) ((x)*(y))
  18. #define G(x) printf(x);
  19. #define D(x,y) (x=(y))
  20. #define P (rand()%6)
  21. #define Y D(e,O(e,1))
  22. #define s D(f,O(f,Q))
  23. #define H(x) return x
  24. #define B(x) while(x)
  25. #define M(x,y) *O(x,y)
  26. #define z(a,b) a[b]
  27. #define E(x) if(x)
  28. #define I main(){
  29. #define Z 0,0,0,0
  30. #define t G("\n")
  31. #define V(x) (!x)
  32. #define v h,i,j,k
  33. #define w e,f,g
  34. #define J int
  35. #define Q u(1)
  36. #define p "%c"
  37. #define o 'A'
  38. #define r for
  39. #define n 60
  40. #define K do
  41.  
  42. J y(a,10,10)={R,R,R,R,Z,1,Q,Z,Z,Q,1,R,R,R,R,Z},y(b,10,10)={R,S,T,
  43. U       ,       U       ,       U       ,       U       ,       T
  44. ,       S       ,       R       }       ,       z       (       c
  45. ,       9       )       =       {       Q       ,       Q       ,
  46. Q,0,0,1,1,1,0},z(d,9)={Q,0,1,Q,1,Q,0,1,0};I J w,v;l();r(D(e,0);O(
  47. e       ,       -       n       )       ;       Y       )       {
  48. q       D       (       h       ,       O       (       h       ,
  49. m       (       f       ,       g       ,       1       ,       1
  50. )));E(h){K{G("\n?")K{D(f,L(O('A',Q)));}B(C(f));K{D(g,L('0'));}B(C
  51. (       g       )       )       ;       }       B       (       V
  52. (       m       (       f       ,       g       ,       1       ,
  53. Q       )       )       )       ;       l       (       )       ;
  54. }q E((D(k,O(m(f,g,Q,1),P)))>h){D(h,k);D(i,f);D(j,g);}E(h&&m(i,j,Q
  55. ,       Q       )       ) /***/ l /***/ (       )       ;       }
  56. }       J       m       (/*   */v/*****/)       J       v       ;
  57. {       J       w       ; /***/ E /***/ (       N       (       a
  58. ,h,i))H(0);E(O(k,Q))D(N(a,h,i),j);D(e,N(b,h,i));r(D(g,1);O(g,-9);
  59. D       (       g       , /***/ O /***/ (       g       ,       1
  60. )       )       )       {/*****/D/*   */(       g       ,       O
  61. (       g       ,       Q /***/ ) /***/ )       ;       E       (
  62. V(O(N(a,O(h,M(c,g)),O(i,M(d,g))),j))){r(D(f,1);V(O(X,j));D(f,O(f,
  63. 1       )       )       )       ;       E       (       V       (
  64. O       (       N       (       a       ,       O       (       h
  65. ,       W       (       f       ,       M       (       c       ,
  66. g))),O(i,W(f,M(d,g)))),u(j))))r(s;f;s){X=X*k;D(e,O(e,N(b,O(h,W(f,
  67. M       (       c       ,       g       )       )       )       ,
  68. O       (       i       ,       W       (       f       ,       M
  69. (       d       ,       g       )       )       )       )       )
  70. );}}D(g,O(g,1));}E(V(O(e,u(N(b,h,i))))){D(N(a,h,i),0);H(0);}H(e);
  71. }       l       (       )       {       J       f       ,       g
  72. ;       t       A       (       g       )       {       F       (
  73. p       ,       O       (       O       (       o       ,       g
  74. ),Q))A(f)F("%c:",M("X O<",O(N(a,g,f),1)))t}G(" ")A(f)F("%d ",f)t}
  75.