ICFP 2003 Programming Contest Main Entry Team Name: "TeamSpud" Memebers: Matt Quail URL: http://madbean.com/icfp2003/ Email: spud[at]madbean[dot]com Implementation Language: Java (JDK1.4) Submission Contents ------------------- - Trace files for all the (non-rally) courses: 1_Simple.trc 2_Hairpins.trc 3_Sepang.trc 4_EatYouAlive.trc 5_Car.trc 6_IcfpContest.trc 7_Gothenburg.trc 8_ManyWays.trc 9_PhilAndSimon.trc - README.txt This filefile. - teamspud.jar A Java program to run the GUI - build.xml Ant build file - src/* The Java source code. - Tracks/* The competition tracks - guides/* Guides used by the drivers/GUI Trace results ------------- track 1 steps=11434 track 2 steps=17537 track 3 steps=20833 track 4 steps=22287 track 5 steps=6733 track 6 steps=6547 track 7 steps=6945 track 8 steps=11575 track 9 steps=21481 Running the program ------------------- You can run a GUI simulator by typing: $ java -jar teamspud.jar You can add/insert/move/delete way-points by hitting the appropriate button. (You can load and save guidepoints too). You can run my "driver algorithm" by hitting the "Run Driver" button, which attempts to follow the guidepoints. You can load a .trc file from the "file" menu. Then hit the "Run Trace" button. During the simulation, the car will leave behind a blue line. Dark blue means slow, white means fast. Use the "look" tool to determine the actual speed at a particular point (click with the mouse, the speed is shown in the status bar). Description ----------- This program implements a "driver" algorithm. The driver needs to be given a set of way-points. It pre-computes a set of "target speeds" for each waypoint, then starts driving! This driver prefers to roll to a target speed (as opposed to accelerating then braking), so it is often necessary to add way-points that act as a "start-brake-here" point on a long straight. To begin with, I couldn't determine a process that would compute a set of line segments from start-to-finish (without intersecting any walls). I couldn't grok the "topology" problem. So, that is why I have implemented a "manual waypoint" approach. You must manually set up the "topology", then the program takes it from there. In the last 12 hours, I did come up with an algorithm that could solve the "topology" problem, but didn't have the energy/time to implement it. This has been fun. Congrats to the winners! =Matt PS: "9_PhilAndSimon.trc". What were you thinking!?