General
ICFP stands for International Conference on Functional Programming. They organise an anual interational programming contest. See the
ICFP 2004 Contest WebsiteJörg, Allan and
me attended the contest. Our team name was Formicoideas and we used primary haskell. Sorry, but we used also java to implement a graphical user frontend to be able to test our solutions.
Why Formicoideas?
Well the contest was about ants and the biological name for family is Formicoidea.
Teamwork
Because Allan lives in Edinburgh and we live in Leipzig we have been forced to program territorial distributed.
This worked great since we used CVS,
Teamspeak and ICQ. I would say the productivity was larger than if we all would have worked together in the labs of the university or somewhere else. The reason is that you know you computer and the enviroment and it is calm if you need it.
The Task
The task description and some maps can be downloaded from the ICFP contest webpage or from the panel beside (
task.tgz).
Here a rough decription what it was about:
The task was to write a program that controls an ant. It was basicly a finite state machine (FSM) that had to be developed. The programming language was very low level with absolute jumps and so on. Please note that there is no memory in a FSM, so cannot store anything.
There are two teams the red and the black colony. Every colony has an anthill of the same size and the world consists of hexogonal cells. There are rocky cells where you can't go on and there are cells with food. The overall goal was to bring as many food as possible to your anthill. In order to perform that the ant can mark a cell with 6 different markers and is able to sense the own cell and the ahead, left and right cell.
Our Approach
In order to simplify this task we decided to build a translator from a
slightly higher level language than that of the ant finite state machine
language. This language is called pheromone and the compiler is phec for
pheromone compiler.
We also built a Simulator as described in the task description to evaluate
our ant programs, and a Java front end to visually deploy the simulator in
order to aid debugging of the ant programs.
Here the modules we have written:
- Phec (Pheromone Compiler)
- Simulator
- ICFP 2004/Frontend
Formicoideas strategy
Submission
We submitted our submission 3 minutes before the deadline and - how to say - I was really nervous. It is every year a last minute hack!
The submission can be downloaded from the panel beside (
task.tgz).