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

Reply via email to