Author: Gerd Isenberg
Date: 14:16:18 12/18/02
Go up one level in this thread
On December 18, 2002 at 14:59:58, Bas Hamstra wrote: >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. Hmm..., it depends where the black pawns are. One should also consider vertical fragmentation. My intention is to determine pawn-patterns like in Uri's winning positions here in this thread with three against two pawns forcing an outside passer, eg. widder, backward and open pawn with one guard against widder and the backward guard. Or determing majorities on the queen-, king-wing or center, minory-attacks, an "isolated" duo of open pawns (Hängende Bauern). If one advances, most often the other becomes backward. Also the number of islands may be evaluable, eg. two 3-ilands againts three 2-island... only brainstorming. Gerd
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.