my $key = $pretty_move;
my $line = sprintf(" %-6s %6s %3s %s",
$pretty_move,
- short_score($info, $pos_calculating_second_engine, $mpv, 0),
+ short_score($info, $pos_calculating_second_engine, $mpv),
"d" . $info->{'depth' . $mpv},
join(', ', @pretty_pv));
push @refutation_lines, [ $key, $line ];
$json->{'position'} = $pos_calculating->to_json_hash();
$json->{'id'} = $engine->{'id'};
$json->{'score'} = long_score($info, $pos_calculating, '');
+ $json->{'short_score'} = short_score($info, $pos_calculating, '');
$json->{'nodes'} = $info->{'nodes'};
$json->{'nps'} = $info->{'nps'};
sort_key => $pretty_move,
depth => $info->{'depth' . $mpv},
score_sort_key => score_sort_key($info, $pos_calculating, $mpv, 0),
- pretty_score => short_score($info, $pos_calculating, $mpv, 0),
+ pretty_score => short_score($info, $pos_calculating, $mpv),
pretty_move => $pretty_move,
pv_pretty => \@pretty_pv,
};
}
sub short_score {
- my ($info, $pos, $mpv, $invert) = @_;
-
- $invert //= 0;
- if ($pos->{'toplay'} eq 'B') {
- $invert = !$invert;
- }
+ my ($info, $pos, $mpv) = @_;
+ my $invert = ($pos->{'toplay'} eq 'B');
if (defined($info->{'score_mate' . $mpv})) {
if ($invert) {
return sprintf "M%3d", -$info->{'score_mate' . $mpv};
if (exists($info->{'score_cp' . $mpv})) {
my $score = $info->{'score_cp' . $mpv} * 0.01;
if ($score == 0) {
- return " 0.00";
+ if ($info->{'tablebase'}) {
+ return "TB draw";
+ } else {
+ return " 0.00";
+ }
}
if ($invert) {
$score = -$score;
my $score;
if ($mate > 0) {
# Side to move mates
- $mate = 99999 - $mate;
+ $score = 99999 - $mate;
} else {
# Side to move is getting mated (note the double negative for $mate)
- $mate = -99999 - $mate;
+ $score = -99999 - $mate;
}
if ($invert) {
$score = -$score;
# position in the meantime, we might query a completely
# different position! But that's fine.
} else {
- die "Unknown response state state " . $response->{'Response'}{'StateString'};
+ die "Unknown response state " . $state;
}
# Wait a second before we schedule another one.