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:
co-authored by
Claude Opus 5.5
parent
856e4d64bd
commit
be6a4b4446
@@ -2,8 +2,8 @@
|
||||
# Tests du moteur embarqué, via build/engine-cli (étape 0a.3) :
|
||||
# meilleurs coups d'ouverture connus, nombre de coups légaux, bornes et
|
||||
# symétrie des probabilités, décision de videau évidente, identifiants
|
||||
# invalides. La comparaison systématique au gnubg de bureau viendra ensuite
|
||||
# (tests/reference/, étape 0a.4).
|
||||
# invalides. La comparaison systématique au gnubg de bureau est faite par
|
||||
# tests/test_engine_reference.sh.
|
||||
#
|
||||
# Lance `make engine` (sans effet si tout est à jour).
|
||||
|
||||
@@ -34,7 +34,7 @@ echouer() {
|
||||
|
||||
# Valeur d'une clé JSON numérique ou textuelle (première occurrence).
|
||||
valeur() {
|
||||
grep -oE "\"$1\": (\"[^\"]*\"|[-0-9.]+)" <<<"$2" | head -n1 | sed -E 's/^"[^"]*": "?//; s/"$//'
|
||||
grep -oE "\"$1\": (\"[^\"]*\"|[-0-9.eE+]+)" <<<"$2" | head -n1 | sed -E 's/^"[^"]*": "?//; s/"$//'
|
||||
}
|
||||
|
||||
# Évalue une condition numérique avec awk ; ex. : vrai "0 <= 0.5 && 0.5 <= 1"
|
||||
@@ -104,19 +104,19 @@ verifier_probabilites "coup 64 à 2 plis" "$($cli --ply 2 bestmove "$depart" "$l
|
||||
for match_id in "$libre_j0" "$crawford"; do
|
||||
decision="$(valeur decision "$($cli cube "$depart" "$match_id")")"
|
||||
case "$decision" in
|
||||
no_double* | no_redouble* | not_available) ;;
|
||||
NODOUBLE_* | NO_REDOUBLE_* | NOT_AVAILABLE) ;;
|
||||
*) echouer "videau au départ ($match_id) : « $decision » au lieu de pas de double" ;;
|
||||
esac
|
||||
done
|
||||
# Partie Crawford : le videau n'est pas disponible.
|
||||
decision="$(valeur decision "$($cli cube "$depart" "$crawford")")"
|
||||
[ "$decision" = "no_double_dead_cube" ] || [ "$decision" = "not_available" ] \
|
||||
[ "$decision" = "NODOUBLE_DEADCUBE" ] || [ "$decision" = "NOT_AVAILABLE" ] \
|
||||
|| echouer "videau en partie Crawford : « $decision »"
|
||||
|
||||
# À l'inverse, la course gagnée d'avance est un double/passe (règle Jacoby :
|
||||
# jouer pour le gammon ne rapporte rien, videau au centre).
|
||||
decision="$(valeur decision "$($cli cube "$course" "$libre_j0")")"
|
||||
[ "$decision" = "double_pass" ] || echouer "videau en course gagnée : « $decision »"
|
||||
[ "$decision" = "DOUBLE_PASS" ] || echouer "videau en course gagnée : « $decision »"
|
||||
|
||||
# 5. Erreurs : JSON, code d'erreur précis et code de sortie non nul.
|
||||
attendre_erreur() {
|
||||
|
||||
Reference in New Issue
Block a user