おまえら最強の将棋プログラムしてみろよ!!

このエントリーをはてなブックマークに追加
将棋。14行です。
#include <stdio.h>
m[][9]={{0},{10},{40},{21,19},{9,10,11,-9,-11},{9,10,11,1,-1,-10},{11,12,13,1,-
1,-9,-10,-11},{39,41,21,19},{40,31,29,20},{0,1,2,3,5,6,99,8,9}};int b[110],q=48
,C,A,D=3;char s[]="-\nPLNSGKBR";h(k,c,a){int i,g,f,z;for(i=0;g=m[k&15][i];i++){
f=g<13?1:0;g-=30*!f;if(k&16)g=-g;for(z=c+g;;z+=g){if(z==a&&b[z]&(q^(k&q)))return
1;if(f||b[z]!=q)break;}}return 0;}w(f,d){int i,k,t,r,x=999,v;if(f)x=-x;if(d==0)
x=0;for(r=10;++r<=99;){k=b[r];if(d){if (k&(16<<f)){for(t=10;++t<=99;){if(h(k,r,
t)){i=b[t];b[t]=b[r];b[r]=q;v=w(f^1,d-1);if((f&&v>x)||(!f&&v<x)){if(d==D){printf
("%d-%d,(%d/%d)\n",r,t,v,x);C=r;A=t;}x=v;}b[r]=b[t];b[t]=i;}}}}else{i=m[9][k&15
];x+=(k&32)?i:-i;}}return x;}main(){int i,k,r,t;for(i=11;i<=99;i++){if(i>90){b[
i-60]=33;b[i-20]=17;if(i<96){b[i-80]=b[110-i]=i-57;b[i]=b[190-i]=i-73;}}else if
(i%10)b[i]=q;}b[22]=40;b[28]=39;b[82]=23;b[88]=24;for(;;){for(i=9;++i<101;){k=b
[i];printf("%c",(k&32)+s[1+(k==q?9:k&15)]);}scanf("%d%d",&r,&t);k=b[t];b[t]=b[r
];b[r]=q;w(1,D);k=b[A];b[A]=b[C];b[C]=q;}return 0;}
761デフォルトの名無しさん:02/09/25 19:03
 123456789
1 lnsgkgsnl
2 r    b
3 ppppppppp
4
5
6
7 PPPPPPPPP
8 B     R
9 LNSGKGSNL

遊び方は「動かしたい駒のある場所」「動かす場所」をyxで表す。
26歩なら
78[Enter]
68[Enter]

特徴
・ミニマックスで探索。3手読み。
・持駒が打てない。
・駒がなれない。
え?それじゃチェスだって・・・。Σ(゚д゚lll)ガーン