die $_[0];
};
+sub total_history_cmp ();
+
sub unkopt ($$) {
my ($what,$opt) = @_;
if ($opt =~ m/^[A-Z]/) {
}
}
+my $display_cmp = \&total_history_cmp;
+
+while (@ARGV && $ARGV[0] =~ m/^\-/) {
+ $_ = shift @ARGV;
+ if (m/^--$/) {
+ last;
+ } elsif (m/^--sort=alpha$/) {
+ $display_cmp = sub { $b->{Cand} cmp $a->{Cand} };
+ } else {
+ die;
+ }
+}
+
for (;;) {
$_ = <>;
if (m/^\| /) {
$c->{History}[$stage-1] = $c->{Total};
}
- foreach my $c (reverse sort total_history_cmp
+ foreach my $c (reverse sort $display_cmp
grep { !$_->{NonCont} } values %cands) {
prf "candidate %-10s: %s votes\n", $c->{Cand}, sv $c->{Total};
}
sub computequota () {
my $totalvalid = 0/1;
$totalvalid += $_->{Total} foreach values %cands;
- $quota = floor($totalvalid / (1 + $seats));
- prf "quota %s\n", sv $quota;
+ $quota = floor($totalvalid / (1 + $seats) + 1);
+ prf "total valid %s quota %s\n", (sv $totalvalid), (sv $quota);
}
sub total_history_cmp () {
next;
}
+ last if $seats_remain == 1; # don't bother doing more transfers
+
my $B = $c->{Total};
my %tspr;
die unless $tspr{"@$previously"} == $xfervalue;
} else {
$tspr{"@$previously"} = $xfervalue;
- prf "transfer value of ballots %s: %s\n",
+ prf "transfer value of ballots %20s: %s\n",
"@$previously", sv $xfervalue;
}
}