X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=recalc-single-result.pl;h=c67be84b36e84a68e3fba5bd596e57b2e4b460a1;hb=1e96dde4a48649a43a3a436990347c7bc0440943;hp=8c981c2b84c72d1c24d0da944ba367b4576ffe95;hpb=fc979d0122fb9378b931241ea3442c0bd1c40581;p=foosball diff --git a/recalc-single-result.pl b/recalc-single-result.pl index 8c981c2..c67be84 100755 --- a/recalc-single-result.pl +++ b/recalc-single-result.pl @@ -12,36 +12,43 @@ $dbh->{AutoCommit} = 0; $dbh->do('delete from single_rating'); my %ratings = (); -my $q = $dbh->prepare('select * from single_results order by gametime'); +my $q = $dbh->prepare('select *,extract(epoch from gametime) as eptime from single_results order by gametime'); $q->execute; while (my $ref = $q->fetchrow_hashref) { for my $user (($ref->{'username1'}, $ref->{'username2'})) { if (!exists($ratings{$user})) { - $ratings{$user} = [ 1500, 350 ]; + $ratings{$user} = [ 1500, 350, 0 ]; } } my $rating1 = $ratings{$ref->{'username1'}}->[0]; my $rd1 = $ratings{$ref->{'username1'}}->[1]; + my $age1 = $ref->{'eptime'} - $ratings{$ref->{'username1'}}->[2]; + my $rating2 = $ratings{$ref->{'username2'}}->[0]; my $rd2 = $ratings{$ref->{'username2'}}->[1]; + my $age2 = $ref->{'eptime'} - $ratings{$ref->{'username2'}}->[2]; + my $score1 = $ref->{'score1'}; my $score2 = $ref->{'score2'}; + $rd1 = foosball::apply_aging($rd1, $age1 / 86400.0); + $rd2 = foosball::apply_aging($rd2, $age2 / 86400.0); + my ($newr1, $newrd1) = foosball::calc_rating($rating1, $rd1, $rating2, $rd2, $score1, $score2); my ($newr2, $newrd2) = foosball::calc_rating($rating2, $rd2, $rating1, $rd1, $score2, $score1); printf("%-10s - %-10s: %u - %u, new ratings %u/%u %u/%u\n", $ref->{'username1'}, $ref->{'username2'}, $ref->{'score1'}, $ref->{'score2'}, $newr1, $newrd1, $newr2, $newrd2); - $dbh->do('insert into single_rating values (?,?,?,?)', undef, - $ref->{'username1'}, $ref->{'gametime'}, $newr1, $newrd1); - $dbh->do('insert into single_rating values (?,?,?,?)', undef, - $ref->{'username2'}, $ref->{'gametime'}, $newr2, $newrd2); + $dbh->do('insert into single_rating values (?,?,?,?,?)', undef, + $ref->{'username1'}, $ref->{'gametime'}, $newr1, $newrd1, $newr1-$rating1); + $dbh->do('insert into single_rating values (?,?,?,?,?)', undef, + $ref->{'username2'}, $ref->{'gametime'}, $newr2, $newrd2, $newr2-$rating2); - $ratings{$ref->{'username1'}} = [ $newr1, $newrd1 ]; - $ratings{$ref->{'username2'}} = [ $newr2, $newrd2 ]; + $ratings{$ref->{'username1'}} = [ $newr1, $newrd1, $ref->{'eptime'} ]; + $ratings{$ref->{'username2'}} = [ $newr2, $newrd2, $ref->{'eptime'} ]; } $dbh->commit;