I am one of those who would like to see a more comprehensive updating of the
GNUBG ID and Key. In particular, I believe bits for recording beavers should be
included.
I disagree somewhat with a message written by Phillipe Michel-3 that I found at
http://old.nabble.com/GNUBG-IDs-and-jacoby-beavers-td31196802.html. He wrote,
"But beavers essentially don't happen beyond ply 0 when a bot is playing hence
their use don't change the evaluation, and at ply 0 the numbers are easy to
interpret." As far as it goes, what he wrote is true. What he overlooks,
however, is the many users who would like to use GNUBG as a tool to analyze the
games they have played outside GNUBG. It is possible that some of these games
will incuded beavers.
As a C++ programmer and avid backgammon player, I have been long interested in
trying to write some backgammon code. Several years ago, I sketched out the
basics of a program to create one-sided bearoff table (and an app to go with
it), and this year I have an alpha version running.It includes classes to
encode
and decode GNUBG IDs and Keys.
Along the way, I discovered that it is possible to infer certain things about
beavers in the current version of the Match ID. The code below demonstrates how
to do it.
- Mike
// Although the GNUBG documentation is unambiguous is its explanation
// that the dice owner and the turn owner are not the same player
// after a double is offered, no mention is made of beavers.
//
// A consistent, unambiguous interpretation is that after a beaver
// is offered, the double-offered flag is set, and that the dice
// owner and turn owner are the same player. That interpretation
// is supported in the code of this routine. If it is not allowed
// under GNUBG, no harm is done, because then that arrangement of
// state variables should never occur.
//// typeOfDouble// When a double or beaver occurs, this variable is used in
the
// formation of the message that describes the action.std::string
typeOfDouble;if( !doubleOffered() ) typeOfDouble = "no double";elseif(
turnOwner() == diceOwner() ) typeOfDouble = "beaver";elseif( cubePosition() ==
cubeCentered ) typeOfDouble = "double";elsetypeOfDouble = "redouble";
_______________________________________________
Bug-gnubg mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-gnubg