Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Correction again

Author: Bas Hamstra

Date: 11:59:58 12/18/02

Go up one level in this thread


On December 18, 2002 at 11:09:45, Gerd Isenberg wrote:

>On December 18, 2002 at 09:50:03, Bas Hamstra wrote:
>
>>On December 17, 2002 at 20:30:49, Gerd Isenberg wrote:
>>
>>>Oups, sorry, not so easy...
>>>
>>>those were wrong again:
>>>
>>>openPawns[WHITE] = pawnBB[WHITE] & ~filldown(allPawns);
>>>passedPawns[WHITE] = pawnBB[WHITE] & ~filldown(allPawns|pawnAttacks[BLACK]);
>>>notDefendable[WHITE] = pawnBB[WHITE] & fillup(pawnAttacks[WHITE]);
>>>
>>>Both openPawns and  passedPawns statements produce an empty set due to
>>>"allPawns" as filldown parameter, which is member of the filldown result.
>>>
>>>I'll hope this is it finally ;-)
>>>
>>>openPawns[WHITE] = pawnBB[WHITE] & ~filldown(allPawns >> 8);
>>>passedPawns[WHITE] = openPawns[WHITE]
>>>                   & ~filldown(pawnBB[BLACK]|pawnAttacks[BLACK]);
>>>
>>>
>>>The notDefendable-Statement was implemented as isDefendable of course.
>>>
>>>notDefendable[WHITE] = pawnBB[WHITE] & ~fillup(pawnAttacks[WHITE]);
>>>
>>>Gerd
>>
>>Interesting and clever as always, Gerd. Although I would rather expect fillup
>>where I see filldown in the above examples, but maybe I ordered my bitboards
>>differently. I use a lot of masks stored in tables. But that's for each pawn
>>seperate, your idea seems better.
>>
>>
>>Best regards,
>>Bas.
>
>Hi Bas,
>
>Thanks ;-)
>
>with the help of Steffan Westcott's genious Kogge-Stone routines.
>
>The square-bitindex mapping is as follows: a1-0 h1-7 a2-8...h7-63
>
>Let's see:
>
>openPawns[WHITE] = pawnBB[WHITE] & ~filldown(allPawns >> 8);
>
>sample pawns:
>[D]8/1P4pp/3P1p2/4p3/1P5P/6P1/8/8 w - -
>
>after filldown(allPawns >> 8) each pawn/queen is a "one" in the bitboard:
>[D] 8/8/1P4pp/1Q1P1pQQ/1Q1QpQQQ/1P1QQQQP/1Q1QQQPQ/1Q1QQQQQ w
>
>if you and the complement with the white pawns, you get a remaining set with
>b7,d6.

You are right of course, in my case A1 also is 0, I was locating the "blockers".

>Currently thinking about pawn ilands and isolanis. Isolanis have the property,
>that there is no own pawn control (from neighboured file pawns) on the same
>file:
>
>isolani[side] = pawnBB[side] & ~FillUpDown(pawnAttacks[side]);
>noNeighbourFromLeft[side] = pawnBB[side] & ~FillUpDown(pawnAttacksAH[side]);
>noNeighbourFromRight[side] = pawnBB[side] & ~FillUpDown(pawnAttacksHA[side]);
>
>FillUpDown may be the FillUp|FillDown or a specialized version to gain more
>parallelism, specially with 64-bit mmx registers, which are rather great for
>Kogge-Stone and other fill algorithms.
>
>My question is, what's the smartest way to determine n-pawn ilands on
>consecutive files with n >= 1 (n==1 ==> isolanis)?

I have no idea. Also I wouldn't have an idea how to make use of the result. You
get a random bitmap, with pawns on A6, B2 and C5. And then what?

Best regards,
Bas.








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.