[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug-gnubg] Updates to GNUBG ID - Beaver Is Implied Already

From: M. J. Mannon
Subject: [Bug-gnubg] Updates to GNUBG ID - Beaver Is Implied Already
Date: Thu, 28 Jul 2011 00:16:30 -0700 (PDT)

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";

else if( turnOwner() == diceOwner() ) typeOfDouble = "beaver";

else if( cubePosition() == cubeCentered ) typeOfDouble = "double";

else typeOfDouble = "redouble";


reply via email to

[Prev in Thread] Current Thread [Next in Thread]