version 1.4, 2005/02/15 19:27:51
|
version 3.0, 2008/03/23 17:50:50
|
Line 215 sub anondump
|
Line 215 sub anondump
|
# |
# |
sub rate_questions |
sub rate_questions |
{ |
{ |
my($teams,$answers,$ratings) = @_; |
my($teams,$answers,$ratings,$round) = @_; |
my $numteams = scalar keys %$teams; |
my $numteams = scalar keys %$teams; |
for ($i=1;$i<=$MAXQUEST;$i++) |
for ($i=$MINQUEST[$round];$i<=$MAXQUEST[$round];$i++) |
{ |
{ |
$$ratings[$i]=$numteams+1; |
$$ratings[$i]=$numteams+1; |
foreach $answer (keys %{$$answers[$i]}) |
foreach $answer (keys %{$$answers[$i]}) |
Line 225 sub rate_questions
|
Line 225 sub rate_questions
|
if ($$answers[$i]->{$answer}{score} eq '+') |
if ($$answers[$i]->{$answer}{score} eq '+') |
{ |
{ |
$$ratings[$i] -= |
$$ratings[$i] -= |
scalar keys %{$answers->[$i]->{$answer}->{teams}} ; |
scalar keys %{$answers->[$i]->{$answer}->{teams}} ; |
|
if ($DEBUG) { |
|
print STDERR "Частота ответа $answer", |
|
scalar keys %{$answers->[$i]->{$answer}->{teams}}, |
|
"\n"; |
|
} |
} |
} |
} |
} |
} |
} |
if ($DEBUG) |
|
{ |
|
for ($i=1;$i<=$MAXQUEST;$i++) |
|
{ |
|
print STDERR "Вопрос $i, Рейтинг: ", $$ratings[$i], "\n"; |
|
} |
|
} |
|
} |
} |
|
|
# |
# |
# Подсчитываем рейтинги команд |
# Подсчитываем рейтинги команд |
|
# @{$nopoint_questions} - список номеров вопросов, идущих вне зачёта. |
|
# Для них проставляются плясы/минусы, но они не учитываются в подсчёте |
|
# очков и рейтингов команд. |
# |
# |
sub find_scores |
sub find_scores |
{ |
{ |
my ($teams,$answers,$ratings,$factor) = @_; |
my ($teams,$answers,$ratings,$round,$factor,$nopoint_questions) = @_; |
foreach $team (keys %$teams) |
foreach $team (keys %$teams) |
{ |
{ |
if (!defined($factor)) { |
if (!defined($factor)) { |
Line 251 sub find_scores
|
Line 252 sub find_scores
|
} |
} |
$$teams{$team}->{score} *=$factor; |
$$teams{$team}->{score} *=$factor; |
$$teams{$team}->{rating} = 0; |
$$teams{$team}->{rating} = 0; |
for ($i=1;$i<=$MAXQUEST;$i++) |
for ($i=$MINQUEST[$round];$i<=$MAXQUEST[$round];$i++) |
{ |
{ |
my $answer=$$teams{$team}->{answers}[$i]; |
my $answer=$$teams{$team}->{answers}[$i]; |
if ($$answers[$i]->{$answer}{score} eq '+') |
if ($$answers[$i]->{$answer}{score} eq '+') |
{ |
{ |
|
next if ( @{$nopoint_questions} && |
|
grep($_==$i, @{$nopoint_questions}) |
|
); |
$$teams{$team}->{score} += 1; |
$$teams{$team}->{score} += 1; |
$$teams{$team}->{rating} += |
$$teams{$team}->{rating} += |
$$ratings[$i]; |
$$ratings[$i]; |