Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: null move and mate threat

Author: Uri Blass

Date: 17:54:49 10/08/04

Go up one level in this thread


On October 08, 2004 at 20:03:43, Zach Wegner wrote:

>I don't know how to get WAC 141 in one second, but I know some things in your
>code to improve it.

It is very easy to get WAC141 in one second.

Using illogical recapture extensions as Stuart does help but if illogical
recapture extensions are allowed then there are better ideas.

Use the following special Wac141 extensions.

If root position is identical to 141 root position
If the first move is c1xf4 then
do  1 and 2 in the next 2 lines
1)extend by 1 ply
2)If the second move is d6xf4 then do 1 and 2  in the next 2 lines
1)extend by another ply
2)If the third move is h4xh5 then do 1 and 2  in the next 2 lines
1)extend by another ply
2)If the fourth move is g6xh5 then do 1 and 2  in the next 2 lines
1)extend by another ply
2)If the 5th move is h1xh5 then do 1 and 2  in the next 2 lines
1)extend by another ply
2)If the 6th ply is f4-h6 then do 1 and 2  in the next 2 lines
1)extend by another ply
2)If the 7th ply is h5xh6 then
extend by anpther ply

If you claim that it is cheating then I claim that using counter productive
recapture extension is also cheating by the same logic.

My special 141 extensions will be triggered only in position 141 and the price
of one if is very small so practically my extensions will help to solve 141 fas

Uri


 First, you should not dynamically allocate storage for moves
>(do not declare the array in search()), but rather have a large array of size
>MAXMOVES * MAXPLY (it can probably be less) that is indexed by a pointer array
>indexed by ply. If this seems confusing, heres some pseudo-code:
>
>mv movestack[MAXMOVES * MAXPLY];
>mv *firstmove[MAXPLY];
>...
>firstmove[ply + 1] = gen(firstmove[ply]);
>
>This requires your gen() to return a pointer to the element after the last move
>used, which shouldn't be too difficult.
>
>Second, it seems you are not using fractional extensions the way most people do.
>The depth parameter is measured in some constant > 1 that is proportional to a
>ply. I suppose floats could be used, but is important that the depth parameter
>is not an int with 1 equal to a ply. The idea is that for some extensions you do
>not want to extend a whole ply for just one occurence, but add a little bit of a
>ply to the depth that could help trigger an extension later. As an example, at
>ply X you have a condition met and you want to extend a half of a ply. Then at
>ply X + 2(say) you have the same (or other) condition met, and you extend a half
>of a ply again. The net extension is then just one ply, while in your
>implementation it would not be extended because the half ply would be rounded
>off at each ply. Or maybe I just misunderstood your code...
>
>Regards,
>Zach



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.