The Solitaire 500 contest
The 1999 contest was a game called "wheels," based on "Perpetual Motion."
Nineteen entries were received by the deadline:
Number Name 1 Theo Van Dinter 2 Joseph A. DiVerdi 3 Steven W. McDougall 4 Eero Pajarre 5 Mark Kvale 6 Dave Shield 7 Andreas Gross 8 James P. Williams 9 David Brandt 10 Stephen M Moraco 11 John Whitmore 12 Edward M. Perry 13 Jack Applin 14 Robert Au 15 Ira Joseph Woodhead 16 Schuyler Erle 17 Yanick Champoux 18 Jeff Norden 19 Peter J Jones
$ grep 'OK FI' competition_log 925611991 entry4 aai OK FI NI SH ED time 1527 round 6653 move 81951 925612196 entry3 aac OK FI NI SH ED time 1732 round 9345 move 108969 925612235 entry8 aaf OK FI NI SH ED time 1771 round 8376 move 72820 925612518 entry11 aab OK FI NI SH ED time 2054 round 8721 move 84869 925612702 entry6 aal OK FI NI SH ED time 2238 round 8105 move 96577 925612904 entry7 aaj OK FI NI SH ED time 2440 round 8861 move 101499 925612999 entry14 aak OK FI NI SH ED time 2535 round 10268 move 141576 925614674 entry19 aac OK FI NI SH ED time 4210 round 27908 move 312841 925614893 entry5 aap OK FI NI SH ED time 4429 round 7208 move 84750 925615025 entry12 aai OK FI NI SH ED time 4561 round 6725 move 79026 925615396 entry18 aaa OK FI NI SH ED time 4931 round 5566 move 64495 925615434 entry1 aah OK FI NI SH ED time 4970 round 5948 move 77961 925633669 entry15 aal OK FI NI SH ED time 23205 round 10871 move 91375 925634034 entry10 aab OK FI NI SH ED time 23570 round 9353 move 114787 925635423 entry2 aan OK FI NI SH ED time 24959 round 8932 move 78288 925641828 entry9 aan OK FI NI SH ED time 31364 round 6727 move 93842 925650130 entry13 aar OK FI NI SH ED time 39666 round 41316 move 31781916 and 17 were both disqualified due to bugs; one logic error resulting in a program freeze and one spelling error resulting in an inability to connect to the officiating game server.
In case you'd like to see the whole log, it is located here, in a 10M gnuzip.
An interesting way to view the log after decompressing it is to
run it through a filter such as
perl -ne 'print chr(64+$1),++$t%60?"":"\n" if m/^[9].+ entry(\d+).+OK __/;' < competition_log
which will print a letter associated with a particular entry every time
an instance of that entry starting a new deck appears. Modifying that
line of code to somehow "follow the lead lap" should not be too hard, especially
considering the way Pajarre lapped everyone in the second deck and nobody ever caught
up. But what about after that? Hmmmm....
#!perl -n
next unless m/^[9].+ entry(\d+).+OK __/;
$C=$1;
unless (defined $Decks[$lap]){
$LeadLap = $lap;
print "\n";
};
$Decks[$lap]=$C; # Last to reach this lap
print $C;
if($LeadLap == $Laps[$C]){
print "[$LeadLap]";
}else{
print '(-',$LeadLap - $Laps[$C],')' unless $LeadLap == $Laps[$C];
};
print " ";
if ($lap == 499){
$place++;
print "FINISH $place\n";
while($Decks[$lap] == $C){
undef( $Decks[$lap--] );
};
$LeadLap = $lap;
};
All the entries are available here, as a 1.4M .tgz. Both of these files may be relocating to the perl journal contests page.
Should we do this again next year?
comments
The 1999 Solitaire 500 is an article in The Perl Journal #13.
the perl journal contests page