1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-07-11 19:49:14 +00:00

Edge distance

Instead of crafting a clever formula to calculate the array offset, simply use a
3 dimensional array. Remove the comment while at it, because now the code is
self-documenting.

No functional change.

Resolves #344
This commit is contained in:
lucasart 2015-05-04 06:57:22 +08:00 committed by Joona Kiiski
parent 2e86d1febc
commit 92dbee7875

View file

@ -27,67 +27,67 @@ namespace PSQT {
// type on a given square a (middlegame, endgame) score pair is assigned. Table
// is defined for files A..D and white side: it is symmetric for black side and
// second half of the files.
const Score Bonus[][int(SQUARE_NB) / 2] = {
const Score Bonus[][RANK_NB][int(FILE_NB) / 2] = {
{ },
{ // Pawn
S( 0, 0), S( 0, 0), S( 0, 0), S( 0, 0),
S(-22, 4), S( 3,-6), S( 7, 8), S( 3,-1),
S(-25,-3), S( -7,-4), S(18, 4), S(24, 5),
S(-27, 1), S(-15, 2), S(15,-8), S(30,-2),
S(-14, 7), S( 0,12), S(-2, 4), S(18,-3),
S(-12, 8), S(-13,-5), S(-6, 1), S(-4, 7),
S(-17, 1), S( 10,-9), S(-4, 1), S(-6,16),
S( 0, 0), S( 0, 0), S( 0, 0), S( 0, 0)
{ S( 0, 0), S( 0, 0), S( 0, 0), S( 0, 0) },
{ S(-22, 4), S( 3,-6), S( 7, 8), S( 3,-1) },
{ S(-25,-3), S( -7,-4), S(18, 4), S(24, 5) },
{ S(-27, 1), S(-15, 2), S(15,-8), S(30,-2) },
{ S(-14, 7), S( 0,12), S(-2, 4), S(18,-3) },
{ S(-12, 8), S(-13,-5), S(-6, 1), S(-4, 7) },
{ S(-17, 1), S( 10,-9), S(-4, 1), S(-6,16) },
{ S( 0, 0), S( 0, 0), S( 0, 0), S( 0, 0) }
},
{ // Knight
S(-144,-98), S(-109,-83), S(-85,-51), S(-73,-16),
S( -88,-68), S( -43,-53), S(-19,-21), S( -7, 14),
S( -69,-53), S( -24,-38), S( 0, -6), S( 12, 29),
S( -28,-42), S( 17,-27), S( 41, 5), S( 53, 40),
S( -30,-42), S( 15,-27), S( 39, 5), S( 51, 40),
S( -10,-53), S( 35,-38), S( 59, -6), S( 71, 29),
S( -64,-68), S( -19,-53), S( 5,-21), S( 17, 14),
S(-200,-98), S( -65,-83), S(-41,-51), S(-29,-16)
{ S(-144,-98), S(-109,-83), S(-85,-51), S(-73,-16) },
{ S( -88,-68), S( -43,-53), S(-19,-21), S( -7, 14) },
{ S( -69,-53), S( -24,-38), S( 0, -6), S( 12, 29) },
{ S( -28,-42), S( 17,-27), S( 41, 5), S( 53, 40) },
{ S( -30,-42), S( 15,-27), S( 39, 5), S( 51, 40) },
{ S( -10,-53), S( 35,-38), S( 59, -6), S( 71, 29) },
{ S( -64,-68), S( -19,-53), S( 5,-21), S( 17, 14) },
{ S(-200,-98), S( -65,-83), S(-41,-51), S(-29,-16) }
},
{ // Bishop
S(-54,-65), S(-27,-42), S(-34,-44), S(-43,-26),
S(-29,-43), S( 8,-20), S( 1,-22), S( -8, -4),
S(-20,-33), S( 17,-10), S( 10,-12), S( 1, 6),
S(-19,-35), S( 18,-12), S( 11,-14), S( 2, 4),
S(-22,-35), S( 15,-12), S( 8,-14), S( -1, 4),
S(-28,-33), S( 9,-10), S( 2,-12), S( -7, 6),
S(-32,-43), S( 5,-20), S( -2,-22), S(-11, -4),
S(-49,-65), S(-22,-42), S(-29,-44), S(-38,-26)
{ S(-54,-65), S(-27,-42), S(-34,-44), S(-43,-26) },
{ S(-29,-43), S( 8,-20), S( 1,-22), S( -8, -4) },
{ S(-20,-33), S( 17,-10), S( 10,-12), S( 1, 6) },
{ S(-19,-35), S( 18,-12), S( 11,-14), S( 2, 4) },
{ S(-22,-35), S( 15,-12), S( 8,-14), S( -1, 4) },
{ S(-28,-33), S( 9,-10), S( 2,-12), S( -7, 6) },
{ S(-32,-43), S( 5,-20), S( -2,-22), S(-11, -4) },
{ S(-49,-65), S(-22,-42), S(-29,-44), S(-38,-26) }
},
{ // Rook
S(-22, 3), S(-17, 3), S(-12, 3), S(-8, 3),
S(-22, 3), S( -7, 3), S( -2, 3), S( 2, 3),
S(-22, 3), S( -7, 3), S( -2, 3), S( 2, 3),
S(-22, 3), S( -7, 3), S( -2, 3), S( 2, 3),
S(-22, 3), S( -7, 3), S( -2, 3), S( 2, 3),
S(-22, 3), S( -7, 3), S( -2, 3), S( 2, 3),
S(-11, 3), S( 4, 3), S( 9, 3), S(13, 3),
S(-22, 3), S(-17, 3), S(-12, 3), S(-8, 3)
{ S(-22, 3), S(-17, 3), S(-12, 3), S(-8, 3) },
{ S(-22, 3), S( -7, 3), S( -2, 3), S( 2, 3) },
{ S(-22, 3), S( -7, 3), S( -2, 3), S( 2, 3) },
{ S(-22, 3), S( -7, 3), S( -2, 3), S( 2, 3) },
{ S(-22, 3), S( -7, 3), S( -2, 3), S( 2, 3) },
{ S(-22, 3), S( -7, 3), S( -2, 3), S( 2, 3) },
{ S(-11, 3), S( 4, 3), S( 9, 3), S(13, 3) },
{ S(-22, 3), S(-17, 3), S(-12, 3), S(-8, 3) }
},
{ // Queen
S(-2,-80), S(-2,-54), S(-2,-42), S(-2,-30),
S(-2,-54), S( 8,-30), S( 8,-18), S( 8, -6),
S(-2,-42), S( 8,-18), S( 8, -6), S( 8, 6),
S(-2,-30), S( 8, -6), S( 8, 6), S( 8, 18),
S(-2,-30), S( 8, -6), S( 8, 6), S( 8, 18),
S(-2,-42), S( 8,-18), S( 8, -6), S( 8, 6),
S(-2,-54), S( 8,-30), S( 8,-18), S( 8, -6),
S(-2,-80), S(-2,-54), S(-2,-42), S(-2,-30)
{ S(-2,-80), S(-2,-54), S(-2,-42), S(-2,-30) },
{ S(-2,-54), S( 8,-30), S( 8,-18), S( 8, -6) },
{ S(-2,-42), S( 8,-18), S( 8, -6), S( 8, 6) },
{ S(-2,-30), S( 8, -6), S( 8, 6), S( 8, 18) },
{ S(-2,-30), S( 8, -6), S( 8, 6), S( 8, 18) },
{ S(-2,-42), S( 8,-18), S( 8, -6), S( 8, 6) },
{ S(-2,-54), S( 8,-30), S( 8,-18), S( 8, -6) },
{ S(-2,-80), S(-2,-54), S(-2,-42), S(-2,-30) }
},
{ // King
S(298, 27), S(332, 81), S(273,108), S(225,116),
S(287, 74), S(321,128), S(262,155), S(214,163),
S(224,111), S(258,165), S(199,192), S(151,200),
S(196,135), S(230,189), S(171,216), S(123,224),
S(173,135), S(207,189), S(148,216), S(100,224),
S(146,111), S(180,165), S(121,192), S( 73,200),
S(119, 74), S(153,128), S( 94,155), S( 46,163),
S( 98, 27), S(132, 81), S( 73,108), S( 25,116)
{ S(298, 27), S(332, 81), S(273,108), S(225,116) },
{ S(287, 74), S(321,128), S(262,155), S(214,163) },
{ S(224,111), S(258,165), S(199,192), S(151,200) },
{ S(196,135), S(230,189), S(171,216), S(123,224) },
{ S(173,135), S(207,189), S(148,216), S(100,224) },
{ S(146,111), S(180,165), S(121,192), S( 73,200) },
{ S(119, 74), S(153,128), S( 94,155), S( 46,163) },
{ S( 98, 27), S(132, 81), S( 73,108), S( 25,116) }
}
};
@ -109,9 +109,8 @@ void init() {
for (Square s = SQ_A1; s <= SQ_H8; ++s)
{
// Flip to the left half of the board and subtract 4 for each rank
int ss = (file_of(s) < FILE_E ? s : s ^ 7) - 4 * rank_of(s);
psq[BLACK][pt][~s] = -(psq[WHITE][pt][s] = v + Bonus[pt][ss]);
int edgeDistance = int(file_of(s) < FILE_E ? file_of(s) : FILE_H - file_of(s));
psq[BLACK][pt][~s] = -(psq[WHITE][pt][s] = v + Bonus[pt][rank_of(s)][edgeDistance]);
}
}
}