return grep { !$ch[$_]{Dropped} } (0..$#ch);
}
-foreach my $ia (chremain()) {
+foreach my $ia (0..$#ch) {
$defeats->add_vertex($choices[$ia]);
- foreach my $ib (chremain()) {
+ foreach my $ib (0..$#ch) {
my $vab = scalar @{ $vab[$ia][$ib] };
my $vba = scalar @{ $vab[$ib][$ia] };
next unless $vab > $vba;
print "defeat: $choices[$ia] beats $choices[$ib]",
" ($vab > $vba = +$diff)\n";
$defeats->add_edge($choices[$ia],$choices[$ib]);
+ my $label = "$diff($vab:$vba)";
+ $label .= "\n". join ' ', @{ $vab[$ia][$ib] };
+ $label .= "\n/". join ' ', @{ $vab[$ib][$ia] };
+ $defeats->set_edge_attribute($choices[$ia],$choices[$ib],
+ label => $label);
}
}
our $showg = $defeats->deep_copy();
+foreach my $ix (0..$#ch) {
+ my $cho = $ch[$ix];
+ next unless $cho->{Dropped};
+ $defeats->delete_vertex($choices[$ix]);
+}
+
our $schwartz;
for (;;) {
print "no defeats within the Schwartz set\n";
print "final schwartz set:\n\n";
+my $winxlabel;
if ($schwartz->vertices() == 1) {
print "WINNER IS:\n";
+ $winxlabel = "winner";
} else {
print "WINNER IS ONE OF (CASTING VOTE DECIDES):\n";
+ $winxlabel = "potential winner";
}
printf " %-5s %s\n", $_, $choices{$_}{Desc}
if ($cho->{Dropped}) {
$label .= "\nDropped: $cho->{Dropped}";
}
+ if ($schwartz->has_vertex($chn)) {
+ $label .= "\n$winxlabel";
+ }
$showg->set_vertex_attribute($chn, 'label', $label);
}