mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 08:43:09 +00:00
Some more additional doc on encoding
This commit is contained in:
parent
f5ac865866
commit
28d497e00c
1 changed files with 9 additions and 3 deletions
|
@ -517,8 +517,8 @@ int decompress_pairs(PairsData* d, uint64_t idx)
|
||||||
// Because each block n stores blockLength[n] + 1 values, the index i of the block
|
// Because each block n stores blockLength[n] + 1 values, the index i of the block
|
||||||
// that contains the value at position idx is:
|
// that contains the value at position idx is:
|
||||||
//
|
//
|
||||||
// for (i = 0; idx < sum; i++)
|
// for (i = -1, sum = 0; sum <= idx; i++)
|
||||||
// sum += blockLength[i] + 1;
|
// sum += blockLength[i + 1] + 1;
|
||||||
//
|
//
|
||||||
// This can be slow, so we use SparseIndex[] populated with a set of SparseEntry that
|
// This can be slow, so we use SparseIndex[] populated with a set of SparseEntry that
|
||||||
// point to known indices into blockLength[]. Namely SparseIndex[k] is a SparseEntry
|
// point to known indices into blockLength[]. Namely SparseIndex[k] is a SparseEntry
|
||||||
|
@ -665,6 +665,12 @@ int map_score(DTZEntry* entry, File f, int value, WDLScore wdl) {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Compute a unique index out of a position and use it to probe the TB file. To
|
||||||
|
// encode k pieces of same type and color, first sort the pieces by square in
|
||||||
|
// ascending order s1 <= s2 <= ... <= sk then compute the unique index as:
|
||||||
|
//
|
||||||
|
// idx = Binomial[1][s1] + Binomial[2][s2] + ... + Binomial[k][sk]
|
||||||
|
//
|
||||||
template<typename Entry>
|
template<typename Entry>
|
||||||
uint64_t probe_table(const Position& pos, Entry* entry, WDLScore wdl = WDLDraw, int* success = nullptr)
|
uint64_t probe_table(const Position& pos, Entry* entry, WDLScore wdl = WDLDraw, int* success = nullptr)
|
||||||
{
|
{
|
||||||
|
@ -770,7 +776,7 @@ uint64_t probe_table(const Position& pos, Entry* entry, WDLScore wdl = WDLDraw,
|
||||||
idx = LeadPawnIdx[leadPawnsCnt - 1][squares[0]];
|
idx = LeadPawnIdx[leadPawnsCnt - 1][squares[0]];
|
||||||
|
|
||||||
for (int i = 1; i < leadPawnsCnt; ++i)
|
for (int i = 1; i < leadPawnsCnt; ++i)
|
||||||
idx += Binomial[i][MapToEdges[squares[leadPawnsCnt- i]]];
|
idx += Binomial[i][MapToEdges[squares[leadPawnsCnt - i]]];
|
||||||
|
|
||||||
next = leadPawnsCnt;
|
next = leadPawnsCnt;
|
||||||
goto encode_remaining; // With pawns we have finished special treatments
|
goto encode_remaining; // With pawns we have finished special treatments
|
||||||
|
|
Loading…
Add table
Reference in a new issue