diff --git a/VERSION b/VERSION index 524cb55242b53f6a64cc646ea05db6acc7696d2d..45a1b3f44523206e2b1e6a7ca0e279026c3a2b55 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.1.1 +1.1.2 diff --git a/lib/RVVote/Controller/Evaluation.pm b/lib/RVVote/Controller/Evaluation.pm index 233ee4e4db5ca151e448757f3faf32edf844f8b0..6d9f88bb811566848b7949b0567e786e4035bc8c 100644 --- a/lib/RVVote/Controller/Evaluation.pm +++ b/lib/RVVote/Controller/Evaluation.pm @@ -17,16 +17,16 @@ sub process { my @choices = (); my %count = (); - + CHOICE: foreach my $choice ( split /\W+/, $ballot->{value} ) { - next CHOICE if $choice !~ /\w/; + next CHOICE if $choice !~ /\w/; if ( ! $count{ $choice }++ ) { push @choices, $choice; } } - next BALLOT if ! scalar @choices; + next BALLOT if ! scalar @choices; push @ballots, { voter => $ballot->{voter}, @@ -42,7 +42,7 @@ sub process { $c->stash->{ballots} = \@ballots; - # primarni rozdeleni listku a pocitani celkoveho poctu + # primarni rozdeleni listku a pocitani celkoveho poctu BALLOT: foreach my $ballot ( @ballots ) { @@ -60,17 +60,17 @@ sub process { CHOICE: foreach my $choice ( keys %{ $r } ) { - if ( $r->{$choice}{votes} < $half ) { + if ( $r->{$choice}{votes} <= $half ) { $r->{$choice}{unsupported} = 1; } } push @log, { - title => "Počáteční rozdělení ($total listků, nadpoloviční podpora $more_than_half)", - data => Dump $r, - }; + title => "Počáteční rozdělení ($total listků, nadpoloviční podpora $more_than_half)", + data => Dump $r, + }; - # vyrazeni moznosti kteri nemaji nadpolovicni podporu + # vyrazeni moznosti kteri nemaji nadpolovicni podporu CHOICE: foreach my $choice ( keys %{ $r } ) { if ( $r->{$choice}{unsupported} ) { @@ -79,9 +79,9 @@ sub process { } push @log, { - title => 'Po vyřazení možnosti bez nadpoloviční podpory', - data => Dump $r, - }; + title => 'Po vyřazení možnosti bez nadpoloviční podpory', + data => Dump $r, + }; my @winners = winners( $r, $half ); my $round = 1; @@ -99,15 +99,15 @@ sub process { LOOSER: foreach my $looser ( @loosers ) { - $r = transfer($r, $looser); + $r = transfer($r, $looser); } push @log, { - title => 'Vyřazovací kolo ' . $round++, - data => Dump $r, + title => 'Vyřazovací kolo ' . $round++, + data => Dump $r, loosers => \@loosers, random => $random, - }; + }; @winners = winners( $r, $half ); } @@ -116,7 +116,7 @@ sub process { { title => $_->{title}, data => Load( $_->{data}) } } @log ]; - $c->stash->{winners} = \@winners; + $c->stash->{winners} = \@winners; $c->render( template => 'result' ); @@ -126,7 +126,7 @@ sub transfer { my $r = shift; my $choice = shift; - BALLOT: + BALLOT: foreach my $ballot ( @{ $r->{$choice}{ballots} } ) { HEIR: foreach my $heir ( @{ $ballot->{choices} } ) { @@ -135,7 +135,7 @@ sub transfer { push @{ $r->{ $heir }{ballots} }, $ballot; last HEIR; } - } + } } delete $r->{ $choice }; return $r ; @@ -158,14 +158,14 @@ sub winners { foreach my $choice ( choices_by_ballots( $r ) ) { if ( scalar @{$r->{$choice}{ballots}} > $half ) { push @candidates, $choice; - } + } } my $max = 0; CANDIDATE: foreach my $choice ( sort { $r->{$b}{votes} <=> $r->{$a}{votes} } @candidates ) { - $max ||= $r->{$choice}{votes}; + $max ||= $r->{$choice}{votes}; push @winners, $choice if $r->{$choice}{votes} == $max; } @@ -183,7 +183,7 @@ sub loosers { CHOICE: foreach my $choice ( reverse choices_by_ballots( $r ) ) { my $ballots = scalar @{$r->{$choice}{ballots}}; - $min ||= $ballots; + $min ||= $ballots; push @candidates, $choice if scalar $ballots == $min; } @@ -191,7 +191,7 @@ sub loosers { CANDIDATE: foreach my $choice ( sort { $r->{$a}{votes} <=> $r->{$b}{votes} } @candidates ) { - $min ||= $r->{$choice}{votes}; + $min ||= $r->{$choice}{votes}; push @loosers, $choice if $r->{$choice}{votes} == $min; } @@ -209,39 +209,39 @@ __END__ while ( 1 ) { push @{ $c->stash->{log} }, { - title => $round++ . ". kolo" , - data => { %{ $r } }, - }; + title => $round++ . ". kolo" , + data => { %{ $r } }, + }; - my ($min, $max, @loosers, $transfers); + my ($min, $max, @loosers, $transfers); CHOICE: foreach my $choice ( keys %{ $r } ) { - my $count = scalar @{ $r->{$choice}{ballots} }; + my $count = scalar @{ $r->{$choice}{ballots} }; if ( ! defined $max || $count > $max ) { - $max = $count - } + $max = $count + } - if ( ! defined $min || $count < $min ) { + if ( ! defined $min || $count < $min ) { $min = $count; - @loosers = ($choice); + @loosers = ($choice); } - elsif ( defined $min && $count == $min ) { - push @loosers, $choice; + elsif ( defined $min && $count == $min ) { + push @loosers, $choice; } } last ROUND if $max > $half; - my $looser = (sort { $r->{$a}{votes} <=> $r->{$b}{votes} } @loosers)[0]; + my $looser = (sort { $r->{$a}{votes} <=> $r->{$b}{votes} } @loosers)[0]; push @{ $c->stash->{log} }, { - title => "Vyřazuje se možnost $looser", - }; + title => "Vyřazuje se možnost $looser", + }; my $transfer; - ($transfer, $r) = transfer($r, $looser); + ($transfer, $r) = transfer($r, $looser); last ROUND if ! $transfer; }