Thursday, July 17, 2008

ICFP 2008

Last weekend, I went over to the Monroe Drive House and wrote code for the International Conference on Functional Programming Contest. Thankfully, the ICFP Contest doesn't require that your implementation language be purely functional (or even mostly functional), so we (Mark, Martin, and Erik) wrote our entry in python, using twisted to handle network events. As we hacked on procedural code downstairs, Alex and Lindsey wrote very pure Scheme code upstairs.

We didn't do anything particularly fancy, just used a PID controller to adjust the driver's angle towards the goal, and wrote some geometry routines to detect when we were on a collision course with an obstacle, and then plotted a course in whichever direction around the obstacle looked shorter. We also moved away from Martians if they were too close to us (and facing us). We talked about several more complex tactics, but didn't wind up with the extra time (or brainpower) to implement them.

We had an awful version control experience with mercurial: constant permissions errors in the remote repository, the need to manually "hg up" on the remote server, and flukey merges. I've had good luck in the past with mercurial on (a PyWeek entry) stochasm, and some of the trouble this time was because we were using an SSH repository, rather than the svnserve style that Drew setup on stochasm.

Finally, our entry, the code.

No comments: