Author: martin fierz
Date: 12:28:07 08/24/04
Go up one level in this thread
On August 24, 2004 at 13:31:10, Lance Perkins wrote: >Even without a special check-evasion code, most programs have something like >this: > > generate all moves > for all moves > make move > if not in check > do more > endif > undo move > endfor > >You can avoid the "if not in check" test if you just generate valid moves all >the time. > >It would be somethigg like this: > > // generate all valid moves > If in check > Generate king moves to all safe squares (note that the king can't > simply move away from the direction of the attacker/s) > If there is only one attacker > Generate king move to capture the attacker (assuming that > the attacker is undefended) > Generate all non-pinned Q,R,B,N,P moves to capture the attacker > and to block the attacker > Endif > Else > Generate king moves to all safe squares > Generate all non-pinned Q,R,B,N,P moves to empty squares and to > opponent-occupied squres > Endif > >I might have missed a few details there, but you get the picture. You only do >the "is in check" test once instead of each time you do a 'make move'. i get the picture of course - i was just wondering whether this is more than a 0.1% or 1% speedup. the only thing that sounds sensible right now to me is that you get your single-move-extension for free like this. cheers martin >On August 24, 2004 at 06:17:50, martin fierz wrote: > >>as a related question to mridul's post: i don't have a special check evasion >>generator. i just have a single normal move generator and if it's a check, i >>will have to execute all the normal moves, and undo them again after seeing that >>it's still a check. >> >>does anyone have an estimate on how much a specialized check-evasion move >>generator would speed up a program? >>is it really worth it? >> >>cheers >> martin
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.