]> git.sesse.net Git - remoteglot-book/blobdiff - www/opening-stats.pl
Mark moves that arise only due to transpositions in blue.
[remoteglot-book] / www / opening-stats.pl
index 8e490c17d87f9441c9939a950a7f20186aad0de4..3fb8946f3122fcf10fab9f73519bd801ee8ca10f 100755 (executable)
@@ -17,22 +17,10 @@ my $pid = IPC::Open2::open2($chld_out, $chld_in, "../binlookup", "../open.mtbl",
 
 # Root position. Basically ignore everything except the opening (and later some root game stuff).
 my $fen = $cgi->param('fen') // 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1';
-my $prevfen = $cgi->param('prevfen') // '';
 my $includetransp = $cgi->param('includetransp') // 1;
 
 my $pos = Position->from_fen($fen);
-my ($json_root_pos, $root_aux_data);
-if ($includetransp) {
-       ($json_root_pos, $root_aux_data) = get_json_move($pos, undef, $chld_in, $chld_out);
-} else {
-       my $prev_pos_hash = 0;
-       if ($prevfen ne '') {
-               my $prevpos = Position->from_fen($prevfen);
-               my (undef, $prev_aux_data) = get_json_move($prevpos, undef, $chld_in, $chld_out);
-               $prev_pos_hash = $prev_aux_data->{'pos_hash'};
-       }
-       ($json_root_pos, $root_aux_data) = get_json_move($pos, $prev_pos_hash, $chld_in, $chld_out);
-}
+my ($json_root_pos, $root_aux_data) = get_json_move($pos, undef, $chld_in, $chld_out);
 
 my $opening = $openings{$json_root_pos->{'opening_num'}} // 'A00: Start position';
 my @json_moves = ($json_root_pos);
@@ -67,6 +55,12 @@ for my $move (@{$root_aux_data->{'moves'}}) {
        my $json_pos;
        if ($includetransp) {
                ($json_pos, undef) = get_json_move($np, undef, $chld_in, $chld_out);
+
+               # See if this move exists only due to transpositions.
+               my ($alt_json_pos, undef) = get_json_move($np, $root_aux_data->{'pos_hash'}, $chld_in, $chld_out);
+               if (!defined($alt_json_pos)) {
+                       $json_pos->{'transpose_only'} = 1;
+               }
        } else {
                ($json_pos, undef) = get_json_move($np, $root_aux_data->{'pos_hash'}, $chld_in, $chld_out);
        }
@@ -136,7 +130,7 @@ sub get_json_move {
        chomp (my $line = <$chld_out>);
        if ($line eq '-') {
                warn "Missing pos '" . $pos->fen . "' " . $filter_prev_pos_hash;
-               return ({}, {});
+               return (undef, undef);
        }
 
        my ($white, $draw, $black, $opening_num, $white_sum_elo, $black_sum_elo, $num_elo, $timestamp, $pgn_file_number, $pgn_start_position, @moves) = split / /, $line;