MATLAB Programming Contest Blog
May 10th, 2007
Darkness Ends and Twilight Begins
At the end of Darkness, we’re happy to welcome Nick Howe to the MATLAB Contest Hall of Fame. Nick has been an active participant in past contests, but this is his first contest win. The trickiest part of Darkness is that contestants have no way to know how fast their entries will run on the contest machine and hidden test suite, and no way to calculate the time penalty. Nick solved this problem by submitting a several different variants of the same code with different balances between run time and results. Using this technique, he edged out strong entries from Yi Cao, Steve Hoelzer, Hannes Naudé, and Ouri, who took the next four spots.
We’re now in the Twilight phase of the contest, where you can see the scores of all the entries but not any of the code. Our next award is for the best entry at noon EDT on Friday, when Daylight begins and everyone’s code becomes visible. The queue will likely back up as we approach the deadline, limiting and eventually blocking feedback from the contest machine, so submit your entries early.
13:43 UTC |
Posted in Peg Solitaire |
Permalink |
You can follow any responses to this entry through the RSS 2.0 feed.
You can skip to the end and leave a response. Pinging is currently not allowed.
Leave a Reply
|
 |
The MATLAB Programming Contest is a semi-annual competition where contestants submit MATLAB code to try to solve a challenge. For more information, see the overview.
|
 |
|
Just for the record, here are my comments on the winning Darkness entry. I actually didn’t expect it to come out on top — unlike previous contests, I didn’t feel like I had any special tricks up my sleeve. The entry that won was one of a series of implementations of a simple beam search algorithm. (The first entry in the series was named BMW as a nod to the algorithm used, and successive refinements got named using a sports car theme.) The first version used a fixed beam size and was fairly slow. By the time I got to the winning entry, I was adjusting the beam size according to the size of the puzzle and the number of relatively good solutions, and I had improved the speed of the code to allow searching many more possible moves. Because the beam size directly controlled the running time of the code, it was easy to select any time/performance tradeoff that I desired. I tried to limit the number of different variants to a reasonable number, so it was partially luck that one of the entries turned out to be fairly well tuned for the test set.