X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scripts%2Fpocket-devotee;h=232f316c57c1b21e63df105784faa2bb17db7323;hb=7df2099171d7be75d869a230291bbf8161f20a03;hp=e2e667880c277ac65a0b83ef35f4ce9251189ff2;hpb=e161b025c596a0d3d1bba6ffe48a96b67a898544;p=debian-ctte.git diff --git a/scripts/pocket-devotee b/scripts/pocket-devotee index e2e6678..232f316 100755 --- a/scripts/pocket-devotee +++ b/scripts/pocket-devotee @@ -108,7 +108,7 @@ sub main { } my @options; for my $option (@{$options{option}}) { - my ($key,$name,$majority) = $option =~ /^\s*([^:]+)\s*:\s*(.+)\s*(?::(\d+))?$/; + my ($key,$name,$majority) = $option =~ /^\s*([^:]+?)\s*:\s*(.+?)\s*(?::(\d+))?$/; $majority //= 1; push @options,{key => $key, name => $name, @@ -285,7 +285,7 @@ EOF printf {$RESULTS} "Option %s ", $order_to_options{$row + 1}{key}; for my $col (0..($max_choices - 1)) { if ($row == $col) { - printf {$RESULTS} " ", $Beat_Matrix[$row][$col]; + print {$RESULTS} " "; } else { printf {$RESULTS} " % 4d ", $Beat_Matrix[$row][$col]; } @@ -327,7 +327,8 @@ EOM # 2. An option A defeats the default option D by a majority ratio N, - # if V(A,D) is strictly greater than N * V(D,A). + # if V(A,D) is greater or equal to N * V(D,A) and V(A,D) is strictly + # greater than V(D,A). # 3. If a supermajority of S:1 is required for A, its majority ratio # is S; otherwise, its majority ratio is 1. # Any (non-default) option which does not defeat the default option @@ -339,19 +340,21 @@ EOM my $ratio = 1.0 * $Beat_Matrix[$i][$max_choices - 1] / $Beat_Matrix[$max_choices - 1][$i]; $Ratio{$i} = sprintf("%.2f", $ratio); - if ($ratio < $order_to_options{$i + 1}{majority}) { + if ($ratio < $order_to_options{$i + 1}{majority} or $ratio <= 1) { # If the next line is commented out, we get a more verbose set of results $Drop{$i}++; print {$RESULTS} "Dropping Option ", $order_to_options{$i + 1}{key}, " because of Majority. ($ratio)"; - printf {$RESULTS} " %6.3f (%d/%d) < %d\n", + my $comparison_sign = $order_to_options{$i + 1}{majority} == 1 ? '<=' : '<'; + printf {$RESULTS} " %6.3f (%d/%d) $comparison_sign %d\n", $ratio, $Beat_Matrix[$i][$max_choices - 1], $Beat_Matrix[$max_choices - 1][$i], $order_to_options{$i + 1}{majority}; } else { print {$RESULTS} "Option ", $order_to_options{$i + 1}{key}, " passes Majority."; print {$RESULTS} " "; - printf {$RESULTS} " %6.3f (%d/%d) >= %d\n", + my $comparison_sign = $order_to_options{$i + 1}{majority} == 1 ? '>' : '>='; + printf {$RESULTS} " %6.3f (%d/%d) $comparison_sign %d\n", $ratio, $Beat_Matrix[$i][$max_choices - 1], $Beat_Matrix[$max_choices - 1][$i], $order_to_options{$i + 1}{majority};