while (mtbl_iter_next(it, &key, &len_key, &val, &len_val)) {
string move((char *)(key + prefix_len), len_key - prefix_len);
const Count* c = (Count *)val;
- printf("%s %d %d %d %d %f %f\n", move.c_str(),
+ printf("%s %d %d %d %d %f %f %d\n", move.c_str(),
c->white, c->draw, c->black, c->opening_num,
float(c->sum_white_elo) / c->num_elo,
- float(c->sum_black_elo) / c->num_elo);
+ float(c->sum_black_elo) / c->num_elo,
+ c->num_elo);
}
}
move_td.appendChild(move_a);
$(move_a).text(move['move']);
- // #.
+ // N.
var num = white + draw + black;
add_td(tr, num);
var win_ratio = (game.turn() == 'w') ? white_win_ratio : 1.0 - white_win_ratio;
add_td(tr, ((100.0 * win_ratio).toFixed(1) + "%"));
- // Elo.
- add_td(tr, move['white_avg_elo'].toFixed(1));
- add_td(tr, move['black_avg_elo'].toFixed(1));
-
- // Win% corrected for Elo.
- var win_elo = -400.0 * Math.log(1.0 / white_win_ratio - 1.0) / Math.LN10;
- win_elo -= (move['white_avg_elo'] - move['black_avg_elo']);
- white_win_ratio = 1.0 / (1.0 + Math.pow(10, win_elo / -400.0));
- win_ratio = (game.turn() == 'w') ? white_win_ratio : 1.0 - white_win_ratio;
- add_td(tr, ((100.0 * win_ratio).toFixed(1) + "%"));
+ // WWin and %WW.
+ add_td(tr, white);
+ add_td(tr, (100.0 * white / num).toFixed(1) + "%");
+
+ // BWin and %BW.
+ add_td(tr, black);
+ add_td(tr, (100.0 * black / num).toFixed(1) + "%");
+
+ // Draw and %Draw.
+ add_td(tr, draw);
+ add_td(tr, ((100.0 * draw / num).toFixed(1) + "%"));
+
+ if (move['num_elo'] >= 10) {
+ // Elo.
+ add_td(tr, move['white_avg_elo'].toFixed(1));
+ add_td(tr, move['black_avg_elo'].toFixed(1));
+ add_td(tr, (move['white_avg_elo'] - move['black_avg_elo']).toFixed(1));
+
+ // Win% corrected for Elo.
+ var win_elo = -400.0 * Math.log(1.0 / white_win_ratio - 1.0) / Math.LN10;
+ win_elo -= (move['white_avg_elo'] - move['black_avg_elo']);
+ white_win_ratio = 1.0 / (1.0 + Math.pow(10, win_elo / -400.0));
+ win_ratio = (game.turn() == 'w') ? white_win_ratio : 1.0 - white_win_ratio;
+ add_td(tr, ((100.0 * win_ratio).toFixed(1) + "%"));
+ } else {
+ add_td(tr, "");
+ add_td(tr, "");
+ add_td(tr, "");
+ add_td(tr, "");
+ }
if (false) {
// Win bars (W/D/B).
my @moves = ();
while (<$fh>) {
chomp;
- my ($move, $white, $draw, $black, $opening_num, $white_avg_elo, $black_avg_elo) = split;
+ my ($move, $white, $draw, $black, $opening_num, $white_avg_elo, $black_avg_elo, $num_elo) = split;
push @moves, {
move => $move,
white => $white * 1,
draw => $draw * 1,
black => $black * 1,
white_avg_elo => $white_avg_elo * 1,
- black_avg_elo => $black_avg_elo * 1
+ black_avg_elo => $black_avg_elo * 1,
+ num_elo => $num_elo * 1
};
$opening = $ECO::openings[$opening_num];
}