小手先ですが何文字か縮めて見ますた。

#include<stdio.h>
char*k=" 歩香桂銀金角飛王",d[81]={2,3,4,5,8,5,4,3,2,0,7},h[64],b[9],a=32,c=16,
t,i,j,u,m,v,w,s,*p,z,e;main(){d[c]=6;for(i=18;i<27;)d[i++]=1;for(;~--i;)d[80-i]
=d[i]?d[i]+a:0;for(;;){for(z=i=0;i<81;++i%9||puts("|\n"))u=d[i],j=u%c,printf("\
|%c%.2s%c"," +"[u/c&1],k+j*2,"^_"[j?u/a:2]);puts("先手");for(i=64;~--i;z|=h[i]&
8,a-i||puts("\n後手"))h[i]&&printf("%.2s",k+h[i]*2);printf("\n%s手入力\n",t?"\後
":"先");if(z)return!printf("%s手の勝利",i<a?"後":"先");l:scanf("%4s",b);for(i=0
;i<4;)b[i++]-=49;e=8-b[2];i=e+b[3]*9;if(*b-63){*b=8-*b;j=*b+b[1]*9;m=*(p=d+i);u
=d[j];z=!u|(u&a)==t||m&&u/a-m/a;if(!z){m=t?i-j:j-i;s=u%a;v=7<m&m<11;w=m*m-1;if(
!(s<2&m-9|s-3&(m-19|m-17)|s-4&(v|m+8|m+10)|(s&8|21<s)&(v|w|-7<m&m<-11)|(s-5|c<s
&s<22)&(v|w|m+9))){v=j;do v+=s%c-6&!(m%8&&m%10)?((e>*b)+(b[3]>b[1])*9-5)*2:s%c-
7?z=m%9?1:9,j>i?-z:z:m&&s-2&m%9-0?t?9:-9:1;while((z=v-i)&&!d[v]);}if(!z){for(m=
a-t;d[j]=m<64-t&&h[m]||(h[m]=*p%c,0);m++);*p=u;if(s<8?t?53<i&j<54:i<27&j>26:0){
for(m=puts("成る?y/n");m-'y'&&m-'n';scanf("%c",&m));*p|=m-'n'?c:0;}}}t=z?t:a-t
;}else{j=b[1]+1;for(u=i%9;u<81&&~t+d[u+=9];);if(i>81||d[i]||j-1&&u<81)goto l;fo
r(u=a-t;u<64-t&&h[u]-j;u++);h[u]=0;t=a-t;d[i]=j+t;}}}