The Solitaire 500 contest

The 1999 contest was a game called "wheels," based on "Perpetual Motion."

Contest rules

GUI demonstration of the game

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

And the order in which their programs crossed the finish line:

$ 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 317819

16 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 __/; 
unless (defined $Decks[$lap]){
	$LeadLap = $lap;
	print "\n";
$Decks[$lap]=$C; # Last to reach this lap
print $C;
if($LeadLap == $Laps[$C]){
	print "[$LeadLap]";
	print '(-',$LeadLap - $Laps[$C],')' unless $LeadLap == $Laps[$C];
print " ";
if ($lap == 499){
	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?

Mailing list discussion of strategy, tactics, politics, pertaining to the contest.


The 1999 Solitaire 500 is an article in The Perl Journal #13. the perl journal contests page