Here's my feeble entry:
use strict;
use warnings;
my @valid_candidates = ( 'Alice', 'Bob', 'Charlotte', 'David', 'Eve' )
+;
my %tally_for = map { lc($_) => [0] } @valid_candidates;
print "Welcome to the Die Bold 691549 Electrified Election Estimator\n
+";
print "Your candidates are:\n";
print map { "$_\n" } sort @valid_candidates;
print "Enter one name per line, end with EOF.\n";
while ( defined( my $candid_date = <> ) ) {
chomp $candid_date;
my $candidate;
foreach ( @valid_candidates ) {
last if lc $candid_date eq ( $candidate = lc $_ );
}
if ( exists $tally_for{ $candidate } ) {
$tally_for{ $candidate }->[0]++;
}
else {
warn "Write-in for $candid_date\n";
$tally_for{ lc $candid_date }->[0]++;
}
}
my @winner_first = reverse
sort { $tally_for{$a}->[0] <=> $tally_for{$b}->[0]
+}
keys %tally_for;
foreach my $who ( @winner_first ) {
printf "%10s : %d\n", $who, $tally_for{$who}->[0];
}
What's hard about this is that a correct solution is so simple. Here's one that works:
use strict;
use warnings;
my @valid_candidates = ( 'Alice', 'Bob', 'Charlotte', 'David', 'Eve' )
+;
my %tally_for = map { lc($_) => 0 } @valid_candidates;
print "Welcome to the Die Bold 691549 Electrified Voter Motor\n";
print "Your candidates are:\n";
print map { "$_\n" } sort @valid_candidates;
print "Enter one name per line, end with EOF.\n";
while ( my $candid_date = lc <> ) {
chomp $candid_date;
if ( exists $tally_for{ $candid_date } ) {
$tally_for{ $candid_date }++;
}
else {
warn "Write-in for $candid_date\n";
$tally_for{ $candid_date }++;
}
}
my @winner_first = reverse
sort { $tally_for{$a} <=> $tally_for{$b} }
keys %tally_for;
foreach my $who ( @winner_first ) {
printf "%10s : %d\n", $who, $tally_for{$who};
}
Vote counting and reporting take all of 15 lines with no golfing. Practically any deviation from a simple "stash in a hash" implementation is going to be suspicious. I think the best bet for really sneaking something in is to write a lot of bad code that mostly works. Another strategy might be to exploit a bug in some software that the machine uses (e.g., a MySQL bug) rather than have a bug in the machine itself.
Anyway, it's an interesting "problem" but having skulked about the Monastery for a while, I can't imagine I'd get anything past the monks.
Update: I should spoiler out an explanation. So, here's what my entry does "wrong":