/**************************************************************************\
| Toledo Nanochess (c) Copyright 2009 Oscar Toledo G. All rights reserved  |
| 1271 non-blank characters. Evolution from my winning IOCCC 2005 entry.   |
| o Use D2D4 algebraic style for movements.  biyubi@gmail.com  Mar/07/2009 |
| o On promotion add a number for final piece (3=N, 4=B, 5=R, 6=Q)         |
| o Press Enter alone for computer to play.                                |
| o Full legal chess moves.                     http://nanochess.110mb.com |
| o Remove these comments to get 1338 bytes source code (*NIX end-of-line) |
\**************************************************************************/
char*l="ustvrtsuqqqqqqqqyyyyyyyy}{|~z|{}"
" + BAW~abcddcba .pknbrq  PKNBRQ\n?A6J57IKJT576,+-48HLSU";
#define F getchar()%16
#define v X(21,0,0,0,
#define Z while(
#define _ ;if(
#define P return y^=8,
B,i,y,u,b,I[120],G,x=10,z=15,M=1e4;X(f,w,c,h,e,S,s){int t,o,L,E,d,O=f,N=-M*M,K=
128-h<<10,p,*g,n,*m,H,A,q,r,C,J,a=y?-x:x;y^=8;d=w||s&&v 0,1,0)>M;H=G;do{_ o=I[p
=O]){q=o&z^y _ q<7){A=q--&2?8:4;C=o-9&z?q["& .$  "]:42;do{r=I[p+=C[l]-64]_!w|p
==w&&q|A>2|!r){g=q|p+a-e?0:I+e _!r&(q|A<3||g)||(r+1&z^y)>9){m=0 _!(r-2&7))P G=O
,K;n=o&z;t=q|p>28&p<91?n+1:(n+=2,7^y);Z n-t){p[I]=n,E=O[I]=m?*g=*m,*m=0:g?*g=0:
0;L=(1-q?l[p/x+5]-l[O/x+5]+l[p%x+6]-l[O%x+6]+o/16*8:!!m*9)+(!q?l[p%x+6]-98+!(I[
p-1]^n)+!(I[p+1]^n)+l[n&7]*9-387+!!g*99+(1==A&&(E=p)):0)+(r?l[r&7]*9-288-h-q:0)
+!(I[p-a]&z^y^9);L-=s>h||s==h&(L>z&1<s|d)?X(H,s>h|d?0:p,L,h+1,E,N,s):0 _!(h||S|
B-O|i-n|p-b|L<-M))return u=E;J=q-1||A<7||m||!s|d|r|o<z||v 0,1,0)>M;O[I]=o;p[I]=
r;m?*m=*g,*g=0:g?*g=9^y:0 _ L>N){N=L;G=O _!h&S&&s)i=n,B=O,b=p _ h&&c-L<S)P L;}n
+=J||(g=I+p,m=p<O?g-3:g+2,*m<z|I[p+=p-O]|m[p<O?1:-1]);}}}}Z!r&q>2||(p=O,q|A>2|(
o&16&&!r)&&++C&&--A));}}}Z++O>98?O=20:f-O);P N+M*M&&N>-K+1924|d?N:0;}main(){Z B
++<120)I[B-1]=B%x?B/x%x<2|B%x<2?z:B/x&4?0:*l++&31:7;Z G=19){Z G++<99)putchar(l[
G[I]|16])_ x-(B=F)){i=I[B+=100-F*x]&z;b=F;b+=100-F*x;Z x-(G=F))i=G^8^y;}else v
u,1,5);v u,0,1);}}
