Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: null move and mate threat

Author: Stuart Cracraft

Date: 07:03:45 10/09/04

Go up one level in this thread


On October 08, 2004 at 20:54:49, Uri Blass wrote:

>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.

Uri -- But the difference is that I don't want my recapture extension
to solve it. I want a good mate threat to do it. Or Botvinnik-Markoff
or anything else.

At least I'm willing to change!

>
>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.