+our @ch = map { $choices{$_} } @choices;
+
+foreach my $iy (-2..$#ch) {
+ foreach my $ix (-2..$#ch) {
+ if ($iy==-1) {
+ if ($ix==-1) {
+ printf "+" or die;
+ } else {
+ printf "------" or die;
+ }
+ } elsif ($ix==-1) {
+ printf "|" or die;
+ } elsif ($ix==-2 && $iy==-2) {
+ printf "V(Y,X)" or die;
+ } elsif ($iy==-2) {
+ printf "%5s ", $choices[$ix] or die $!;
+ } elsif ($ix==-2) {
+ printf "%5s ", $choices[$iy] or die $!;
+ } else {
+ my $v = \( $vab[$iy][$ix] );
+ $$v ||= [ ];
+ if (@$$v) {
+ printf "%5d ", (scalar @$$v) or die $!;
+ } else {
+ printf "%5s ", "" or die $!;
+ }
+ }
+ }
+ printf "\n" or die $!;
+}
+
+sub drop ($$) {
+ my ($i,$why) = @_;
+ print "dropping $choices[$i]: $why\n";
+ $ch[$i]{Dropped} = $why;
+}
+
+print "# quorum\n" or die;
+
+foreach my $i (0..$#choices) {
+ next if $ch[$i]{Dropped};
+ next if $i == $defi;
+ my $v = $vab[$i][$defi];
+ next if $v >= $quorum;
+ drop $i, "quorum ($v < $quorum)";
+}
+
+print "# maj. ratio\n" or die;
+
+foreach my $i (0..$#choices) {
+ next if $ch[$i]{Dropped};
+ next if $i == $defi;
+ my $majr = $ch[$i]{Smaj};
+ $majr ||= [1,1];
+ my $vad = scalar @{ $vab[$i][$defi] };
+ my $vda = scalar @{ $vab[$defi][$i] };
+ next if $vad * $majr->[1] > $vda * $majr->[0];
+ drop $i, "majority ratio ($vad * $majr->[1] <= $vda * $majr->[0])";
+}
+
+
+#p %choices;
+#p @vab;