Monday, July 14, 2008

ICFP Programming Contest '08

The 11th ICFP Programming Contest took place this weekend. Unfortunately, I didn't have as much time this weekend to work on it as I had planned. The task was to direct a "Mars Rover" back to its base, avoiding craters and martians, using only telemetry received from a central server for navigation. An interesting problem, but not nearly as rich as the previous two years' contests: 2007 - Save Endo! and 2006 - The Cult of the Bound Variable. I am sure the contest organizers put in a lot of work for this year's contest, but the bar was set very high by the last two, so it's no surprise that it fell a little short this year.

My controller was very dumb -- no real pathfinding at all, just head for the origin (where the "home base" is located. It will plow right into a boulder or a crater if it's in its way, I never put any collision avoidance code in. I don't expect to get a very high score ;-) Once the contest ends, I may continue to fiddle with it, as I did with the previous two contests.

Two of the frustrations I experienced stemmed from the fact that the submitted code needed to run on their server, in an sandbox environment (for understandable reasons, of course). The first was that there was no way to run the server against their data set -- there were "sample worlds" and a "sample server" to run against, but it the actual server might behave differently, and all of the submissions would be run after the contest ended.

The second frustration stemmed from the use of the LiveCD the contest organizers used. It was a little awkward for me (as a Mac user), and as a result I wasn't able to test my result under the "live" environment. I wrote my very dumb controller in Java, which is supposedly "Write once, run anywhere," but we all know how accurate that statement is...

Like I said, I'll probably continue to work on it for a while, maybe even try porting it to Haskell, once I understand the networking API. Maybe next year I'll actually know Haskell well enough to use it for the real contest!

No comments: