From: Steinar H. Gunderson Date: Sun, 25 Mar 2012 16:13:14 +0000 (+0200) Subject: Make rudimentary HTML output for scenario analysis. X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=b055272098b04525aaea3631b4b20a0777f2b0ee;p=wloh Make rudimentary HTML output for scenario analysis. --- diff --git a/www/index.pl b/www/index.pl index b96058d..8274574 100755 --- a/www/index.pl +++ b/www/index.pl @@ -320,9 +320,6 @@ EOF } sub print_footer { - my $dbh = shift; - wloh_common::output_last_sync($dbh); - print <<"EOF"; @@ -334,6 +331,8 @@ my $match_stddev = $aux_parms->{-2} * sqrt(2.0); my $division = $cgi->param('divisjon') // -1; my $subdivision = $cgi->param('avdeling') // -1; +my $match_player = $cgi->param('spiller'); +my $match_position = $cgi->param('posisjon'); my $season = get_max_season($dbh); my @divisions = get_divisions($dbh, $season); @@ -347,8 +346,36 @@ my $cov = get_covariance_matrix($dbh, keys %players); print_header($cgi, 'WLoH-plasseringsannsynlighetsberegning'); -POSIX::setlocale(&POSIX::LC_ALL, 'nb_NO.UTF-8'); -printf <<"EOF", $match_stddev; +if (defined($match_player) && defined($match_position)) { + my $tmpnam = write_parms_to_file($aux_parms, $match_stddev, \%ratings, $cov); + + --$match_player; + --$match_position; + + my @scenario = (); + open MCCALC, "$config::base_dir/mcwordfeud $trials $match_player $match_position < $tmpnam |" + or die "mccalc: $!"; + while () { + /(\d+) (\d+) (-?\d+)/ or next; + chomp; + push @scenario, [ $1, $2, $3 ]; + } + close MCCALC; + #unlink $tmpnam; + + if (scalar @scenario == 0) { + # FIXME: distinguish between "all played" and "none found" + print "

Fant ingen måte dette kunne skje på.

\n"; + } else { + print " \n"; + } +} else { + POSIX::setlocale(&POSIX::LC_ALL, 'nb_NO.UTF-8'); + printf <<"EOF", $match_stddev;

WLoH-plasseringsannsynlighetsberegning

Dette er et hobbyprosjekt fra tredjepart, og ikke en offisiell del av @@ -362,20 +389,23 @@ printf <<"EOF", $match_stddev;

Spillerne er sortert etter nick.

EOF -print_division_selector($dbh, \@divisions, \@subdivisions, $division, $subdivision); + print_division_selector($dbh, \@divisions, \@subdivisions, $division, $subdivision); -my $max_division = $divisions[$#divisions]; -my $lowest_division = ($division == $max_division); -make_table($aux_parms, $match_stddev, $lowest_division, {}, {}); + my $max_division = $divisions[$#divisions]; + my $lowest_division = ($division == $max_division); + make_table($aux_parms, $match_stddev, $lowest_division, {}, {}); -print <<"EOF"; + print <<"EOF";

Under er en variant som tar relativ spillestyrke med i beregningen; se ratingsiden.

EOF -make_table($aux_parms, $match_stddev, $lowest_division, \%ratings, $cov); + make_table($aux_parms, $match_stddev, $lowest_division, \%ratings, $cov); + + my $avg_rating = find_avg_rating(\%ratings); + printf "

Gjennomsnittlig rating i denne avdelingen er %.1f.

\n", $avg_rating; -my $avg_rating = find_avg_rating(\%ratings); -printf "

Gjennomsnittlig rating i denne avdelingen er %.1f.

\n", $avg_rating; + wloh_common::output_last_sync($dbh); +} -print_footer($dbh); +print_footer();