Moteur : classement exact de hint et commande engine-cli reference

- engine_best_moves suit hint_move de gnubg : fAnalyse vrai, seuil
  « douteux », puis RefreshMoveList (classement par niveau d'évaluation
  et départage des égalités).
- Correction : en match, l'équité des coups était convertie deux fois par
  mwc2eq (ScoreMove la convertit déjà).
- engine_cube : ajout de optimal et decision_text ; decision prend le nom
  de l'énumération cubedecision de gnubg, comme les références.
- engine-cli : commande reference (un niveau au format de
  tests/reference/) et nombres écrits avec 9 chiffres significatifs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Pierre MARTIN
2026-11-02 14:18:10 +01:00
co-authored by Claude Opus 5.5
parent 856e4d64bd
commit be6a4b4446
4 changed files with 141 additions and 32 deletions
+11 -6
View File
@@ -89,9 +89,13 @@ typedef struct {
float no_double; /* équité si pas de double */
float double_take; /* équité si double et prend */
float double_pass; /* équité si double et passe */
const char *decision; /* décision de gnubg, en anglais : « no_double_take »,
* « double_take », « double_pass »,
* « too_good_pass », « not_available »… */
float optimal; /* équité après les meilleures décisions des deux
* joueurs */
const char *decision; /* nom de la décision dans l'énumération
* cubedecision de gnubg : « NODOUBLE_TAKE »,
* « DOUBLE_TAKE », « DOUBLE_PASS »,
* « TOOGOOD_PASS », « NOT_AVAILABLE »… */
const char *decision_text; /* libellé anglais de gnubg, ex. « Double, take » */
} engine_cube;
/* Description lisible d'un Match ID décodé. */
@@ -132,9 +136,10 @@ engine_status engine_legal_moves(const char *position_id, const char *match_id,
engine_move *moves, int max_moves, int *count);
/*
* Coups légaux classés du meilleur au moins bon, au niveau ply. Comme dans
* gnubg, les coups écartés par les filtres gardent l'évaluation du niveau
* inférieur (voir leur champ ply).
* Coups légaux classés du meilleur au moins bon, au niveau ply, exactement
* comme la commande « hint » de gnubg (filtre de coups « Normal »). Les coups
* écartés par les filtres gardent l'évaluation du niveau inférieur (voir
* leur champ ply) et sont classés après ceux évalués plus profondément.
*/
engine_status engine_best_moves(const char *position_id, const char *match_id,
int die1, int die2, int ply,